WS-Security এর ভূমিকা
WS-Security হলো SOAP ওয়েব সার্ভিসগুলোর জন্য একটি নিরাপত্তা স্ট্যান্ডার্ড। এটি SOAP মেসেজের মধ্যে অটেনটিকেশন (Authentication), ইনটেগ্রিটি (Integrity) এবং এনক্রিপশন (Encryption) এর মতো নিরাপত্তা ব্যবস্থা যুক্ত করতে ব্যবহৃত হয়।
স্প্রিং ওয়েব সার্ভিসেসে WS-Security সহজে ইন্টিগ্রেট করা যায়, যা নিরাপত্তার জন্য SOAP মেসেজে সিকিউরিটি হেডার যোগ করে।
WS-Security এর মূল বৈশিষ্ট্য
- Authentication: ব্যবহারকারীর পরিচয় যাচাই।
- Encryption: ডেটার গোপনীয়তা রক্ষা করা।
- Message Integrity: মেসেজের কোনো পরিবর্তন হয়েছে কিনা তা যাচাই করা।
- Token Support: সিকিউরিটি টোকেন (যেমন: UsernameToken, SAML Token) ব্যবহারের সুযোগ।
স্প্রিং ওয়েব সার্ভিসে WS-Security ব্যবহার
নির্ভরতা (Dependency) যোগ করা
WS-Security এর জন্য প্রয়োজনীয় Maven নির্ভরতা যোগ করতে হবে।
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<version>3.1.1</version>
</dependency>
WS-Security Configuration
SecurityPolicy.xml ফাইল তৈরি
SecurityPolicy.xml ফাইলটি মেসেজের নিরাপত্তা কনফিগারেশন সংজ্ঞায়িত করে।
<sp:Wss10 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<sp:MustSupportUsernameToken/>
</sp:Wss10>
Spring Security Configuration
WS-Security কনফিগারেশন একটি Java Config ক্লাসে সেটআপ করা যেতে পারে।
@EnableWs
@Configuration
public class WebServiceSecurityConfig extends WsConfigurerAdapter {
@Bean
public XwsSecurityInterceptor securityInterceptor() {
XwsSecurityInterceptor interceptor = new XwsSecurityInterceptor();
interceptor.setPolicyConfiguration(new ClassPathResource("securityPolicy.xml"));
interceptor.setCallbackHandler(securityCallbackHandler());
return interceptor;
}
@Bean
public SecurityCallbackHandler securityCallbackHandler() {
return new SecurityCallbackHandler() {
@Override
public void handleUsernameToken(String username, String password) throws SecurityException {
if (!"admin".equals(username) || !"password".equals(password)) {
throw new SecurityException("Invalid username or password!");
}
}
};
}
@Override
public void addInterceptors(List<EndpointInterceptor> interceptors) {
interceptors.add(securityInterceptor());
}
}
কোড ব্যাখ্যা
- XwsSecurityInterceptor:
- SOAP মেসেজে নিরাপত্তা প্রয়োগের জন্য ব্যবহৃত হয়।
setPolicyConfigurationপদ্ধতির মাধ্যমেsecurityPolicy.xmlনির্ধারণ করা হয়।
- SecurityCallbackHandler:
- এটি মেসেজের মধ্যে পাঠানো UsernameToken যাচাই করে।
- ব্যবহারকারীর পরিচয় নিশ্চিত করার জন্য কাস্টম লজিক প্রয়োগ করা হয়।
- addInterceptors:
- নিরাপত্তা ইন্টারসেপ্টর যোগ করে যা সমস্ত ইনকামিং মেসেজে সিকিউরিটি যাচাই করে।
উদাহরণ SOAP মেসেজ
নিরাপদ রিকোয়েস্ট
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>admin</wsse:Username>
<wsse:Password>password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<GetUserDetails xmlns="http://example.com/user">
<UserId>12345</UserId>
</GetUserDetails>
</soap:Body>
</soap:Envelope>
সুবিধা
- উন্নত নিরাপত্তা: মেসেজ এনক্রিপশন এবং স্বাক্ষর যুক্ত করে।
- স্ট্যান্ডার্ড সমর্থন: WS-Security একটি স্ট্যান্ডার্ড যা বিভিন্ন প্ল্যাটফর্মে কার্যকর।
- কাস্টমাইজেশন: নিজের পছন্দমতো কনফিগারেশন এবং যাচাই ব্যবস্থা সেটআপ করার সুযোগ।
সারাংশ
স্প্রিং ওয়েব সার্ভিসেসে WS-Security ব্যবহার SOAP মেসেজগুলোর নিরাপত্তা বাড়ায়। XwsSecurityInterceptor এবং CallbackHandler এর সাহায্যে সহজেই WS-Security কনফিগার করা যায়। এটি অটেনটিকেশন এবং মেসেজ ইনটেগ্রিটির জন্য কার্যকরী একটি পদ্ধতি।
Read more