Spring Web Services এর মধ্যে Security

স্প্রিং ওয়েব সার্ভিসেস (Spring Web Services) - Java Technologies

269

Spring Web Services-এ সিকিউরিটি নিশ্চিত করা একটি অত্যন্ত গুরুত্বপূর্ণ বিষয়, বিশেষত যখন ওয়েব সার্ভিসটি সংবেদনশীল তথ্য পরিচালনা করে। স্প্রিং ফ্রেমওয়ার্ক উন্নত নিরাপত্তা ব্যবস্থা সরবরাহ করে, যা SOAP ও RESTful উভয় ওয়েব সার্ভিসে প্রয়োগ করা যায়।

SOAP ওয়েব সার্ভিসের জন্য সিকিউরিটি প্রায়শই WS-Security প্রোটোকল ব্যবহার করে নিশ্চিত করা হয়। এটি SOAP বার্তাগুলির এনক্রিপশন, সিগনেচার এবং অটেনটিকেশন নিশ্চিত করে।


Spring Web Services-এ সিকিউরিটি ইমপ্লিমেন্ট করার পদ্ধতি

WS-Security প্রোটোকল

WS-Security প্রোটোকল SOAP বার্তার সুরক্ষা নিশ্চিত করতে নিম্নলিখিত বিষয়গুলো সমর্থন করে:

  • মেসেজ এনক্রিপশন: বার্তার তথ্য এনক্রিপ্ট করা হয় যাতে তৃতীয় পক্ষ বার্তা পড়তে না পারে।
  • ডিজিটাল সিগনেচার: বার্তার সত্তা যাচাই করার জন্য ডিজিটাল সিগনেচার ব্যবহার করা হয়।
  • অটেনটিকেশন এবং অথরাইজেশন: ক্লায়েন্ট বা সার্ভারের পরিচয় যাচাই করা হয়।

Spring Web Services-এ সিকিউরিটি কনফিগারেশন

ডিপেনডেন্সি যোগ করা

Maven বা Gradle-এ প্রয়োজনীয় WS-Security ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-security</artifactId>
    <version>3.1.1</version>
</dependency>

SOAP সিকিউরিটি কনফিগারেশন

WS-Security ইমপ্লিমেন্ট করার জন্য একটি সিকিউরিটি পলিসি (Security Policy) নির্ধারণ করতে হবে।

@EnableWs
@Configuration
public class WebServiceSecurityConfig extends WsConfigurerAdapter {

    @Bean
    public XwsSecurityInterceptor securityInterceptor() {
        XwsSecurityInterceptor securityInterceptor = new XwsSecurityInterceptor();
        securityInterceptor.setCallbackHandler(callbackHandler());
        securityInterceptor.setPolicyConfiguration(new ClassPathResource("securityPolicy.xml"));
        return securityInterceptor;
    }

    @Bean
    public CallbackHandler callbackHandler() {
        return new SimplePasswordValidationCallbackHandler() {
            {
                setUsersMap(Collections.singletonMap("username", "password"));
            }
        };
    }

    @Override
    public void addInterceptors(List<EndpointInterceptor> interceptors) {
        interceptors.add(securityInterceptor());
    }
}

সিকিউরিটি পলিসি ফাইল তৈরি করা (securityPolicy.xml)

SOAP বার্তার জন্য সিকিউরিটি পলিসি নির্ধারণ করুন।

<wsse:SecurityPolicy xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">
    <wsse:UsernameToken>
        <wsse:Created/>
        <wsse:Nonce/>
    </wsse:UsernameToken>
</wsse:SecurityPolicy>

Authentication এবং Authorization

UsernameToken Authentication

SOAP বার্তাগুলোর জন্য UsernameToken ব্যবহার করে Authentication সম্পন্ন করা হয়।

<wsse:Security>
    <wsse:UsernameToken>
        <wsse:Username>username</wsse:Username>
        <wsse:Password>password</wsse:Password>
    </wsse:UsernameToken>
</wsse:Security>

Spring Security Integration

Spring Security Framework এর সঙ্গে Spring Web Services সংযুক্ত করে আরো উন্নত অথরাইজেশন সিস্টেম তৈরি করা যায়।

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/ws/**").authenticated()
            .and()
            .httpBasic();
    }
}

SOAP বার্তা এনক্রিপশন

X.509 সার্টিফিকেট ব্যবহার করা

SOAP বার্তাগুলো এনক্রিপ্ট করতে X.509 সার্টিফিকেট ব্যবহার করা হয়। এটি বার্তাগুলোর গোপনীয়তা নিশ্চিত করে।

<wsse:Security>
    <xenc:EncryptedData>
        <!-- এনক্রিপ্টেড বার্তা -->
    </xenc:EncryptedData>
</wsse:Security>

Spring WS-Security কনফিগারেশন

@Bean
public XwsSecurityInterceptor securityInterceptor() {
    XwsSecurityInterceptor interceptor = new XwsSecurityInterceptor();
    interceptor.setPolicyConfiguration(new ClassPathResource("securityPolicy.xml"));
    interceptor.setSecurementActions("Encrypt Signature");
    interceptor.setSecurementEncryptionUser("server");
    interceptor.setSecurementSignatureKeyIdentifier("DirectReference");
    return interceptor;
}

Spring Web Services সিকিউরিটির সুবিধা

  1. উন্নত নিরাপত্তা ব্যবস্থা: WS-Security এবং Spring Security সমন্বয়ে উন্নত নিরাপত্তা।
  2. SOAP বার্তার এনক্রিপশন: বার্তাগুলোর গোপনীয়তা নিশ্চিত।
  3. অটোমেটেড অথরাইজেশন: সুনির্দিষ্ট অথরাইজেশন নিয়ম প্রয়োগ করা যায়।
  4. পোর্টেবল এবং স্কেলেবল: এটি বিভিন্ন প্ল্যাটফর্ম এবং স্কেলেবল আর্কিটেকচারে কার্যকর।

Content added By

ওয়েব সার্ভিস (Web Services) হলো এক ধরনের যোগাযোগ ব্যবস্থা, যেখানে বিভিন্ন অ্যাপ্লিকেশন বা সিস্টেম ইন্টারনেট বা নেটওয়ার্কের মাধ্যমে তথ্য বিনিময় করে। এই তথ্য বিনিময় প্রায়ই সংবেদনশীল ডেটা অন্তর্ভুক্ত করে, যেমন ব্যবহারকারীর ব্যক্তিগত তথ্য, লেনদেন ডেটা ইত্যাদি। ফলে ওয়েব সার্ভিস ব্যবহারের সময় নিরাপত্তা (Security) অত্যন্ত গুরুত্বপূর্ণ।


Web Services এর জন্য Security কেন প্রয়োজন?

ডেটা সুরক্ষা নিশ্চিত করা
ওয়েব সার্ভিসের মাধ্যমে প্রেরিত ডেটা তৃতীয় পক্ষ দ্বারা আড়াল (eavesdropping) বা পরিবর্তন (modification) করা থেকে সুরক্ষিত থাকা প্রয়োজন।

নির্ভরযোগ্যতা বৃদ্ধি
নিরাপত্তা ব্যবস্থা নিশ্চিত করে যে কেবল বৈধ ব্যবহারকারী বা সিস্টেমই সার্ভিস অ্যাক্সেস করতে পারবে, যা সার্ভিসের বিশ্বাসযোগ্যতা বাড়ায়।

অ্যাক্সেস নিয়ন্ত্রণ
নিরাপত্তা ব্যবস্থা ব্যবহারকারীর অধিকার (privilege) অনুযায়ী সার্ভিসের অ্যাক্সেস নিয়ন্ত্রণ করতে সাহায্য করে।

ডেটার অখণ্ডতা বজায় রাখা
তথ্য প্রেরণ বা গ্রহণের সময় এটি পরিবর্তিত না হয় তা নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ।

পরিচয় নিশ্চিত করা
ওয়েব সার্ভিসের ক্লায়েন্ট এবং সার্ভারের পরিচয় নিশ্চিত করতে নিরাপত্তার প্রয়োজন।


Web Services Security এর প্রধান চ্যালেঞ্জ

  • তৃতীয় পক্ষের আক্রমণ (Man-in-the-Middle Attack): দুই পক্ষের মধ্যে ডেটা বিনিময় আড়াল করা।
  • তথ্য চুরি (Data Breach): ডেটার গোপনীয়তা রক্ষা করা।
  • অনুমোদনহীন অ্যাক্সেস (Unauthorized Access): বৈধ ব্যবহারকারী ছাড়া অন্য কেউ সার্ভিস অ্যাক্সেস করা।
  • বিষাক্ত ডেটা ইনজেকশন (Malicious Data Injection): ক্ষতিকর ডেটার মাধ্যমে সার্ভিসে আক্রমণ করা।

Web Services Security এর মূল বিষয়গুলো

Authentication (প্রমাণীকরণ)
Authentication নিশ্চিত করে যে সার্ভিসটি বৈধ ক্লায়েন্ট বা ব্যবহারকারীর সঙ্গে যোগাযোগ করছে। উদাহরণস্বরূপ, ব্যবহারকারী নাম এবং পাসওয়ার্ড, API Key, বা OAuth টোকেন।

Authorization (অনুমোদন)
এটি নির্ধারণ করে যে কোন ব্যবহারকারী বা সিস্টেম কী অ্যাকশন করতে পারবে। উদাহরণস্বরূপ, একটি নির্দিষ্ট রিসোর্সে অ্যাক্সেস দেওয়া বা প্রত্যাখ্যান করা।

Confidentiality (গোপনীয়তা)
এটি নিশ্চিত করে যে ডেটা প্রেরণের সময় তৃতীয় পক্ষ ডেটা দেখতে বা বুঝতে পারবে না। সাধারণত এনক্রিপশন (Encryption) এর মাধ্যমে এটি অর্জিত হয়।

Integrity (অখণ্ডতা)
Integrity নিশ্চিত করে যে প্রেরিত ডেটা কোনোভাবে পরিবর্তিত বা ক্ষতিগ্রস্ত হয়নি। এটি হ্যাশিং অ্যালগরিদম (Hashing Algorithm) বা ডিজিটাল সিগনেচার ব্যবহার করে অর্জন করা হয়।

Non-repudiation (অস্বীকাররোধ)
Non-repudiation নিশ্চিত করে যে প্রেরক তাদের পাঠানো মেসেজ অস্বীকার করতে পারবে না। এটি ডিজিটাল সিগনেচার ব্যবহার করে নিশ্চিত করা হয়।


স্প্রিং ওয়েব সার্ভিসের নিরাপত্তা ব্যবস্থা

স্প্রিং ওয়েব সার্ভিস বিভিন্ন নিরাপত্তা বৈশিষ্ট্য সরবরাহ করে, যেমন:

WS-Security
SOAP বার্তাগুলোর নিরাপত্তা নিশ্চিত করতে WS-Security ব্যবহৃত হয়। এর মাধ্যমে এনক্রিপশন, সিগনেচার এবং সিকিউরিটি টোকেন সাপোর্ট করা হয়।

HTTPS
ডেটা প্রেরণ ও গ্রহণের সময় গোপনীয়তা নিশ্চিত করতে HTTPS ব্যবহৃত হয়।

Spring Security Integration
স্প্রিং ওয়েব সার্ভিসে স্প্রিং সিকিউরিটির সমর্থন রয়েছে, যা প্রমাণীকরণ ও অনুমোদন সহজ করে তোলে।

CORS নীতিমালা
Cross-Origin Resource Sharing (CORS) নীতিমালা ব্যবহার করে বিভিন্ন উৎস থেকে ওয়েব সার্ভিস অ্যাক্সেস নিয়ন্ত্রণ করা যায়।


নিরাপত্তা কৌশল

  • এনক্রিপশন: তথ্যকে এনক্রিপ্ট করে আক্রমণকারীদের হাত থেকে সুরক্ষিত রাখা।
  • ডিজিটাল সিগনেচার: প্রেরকের পরিচয় যাচাই এবং ডেটার অখণ্ডতা নিশ্চিত করা।
  • টোকেন ভিত্তিক প্রমাণীকরণ: OAuth বা JWT (JSON Web Token) ব্যবহার করে নিরাপদ যোগাযোগ।
  • Rate Limiting: আক্রমণ থেকে সিস্টেম রক্ষা করতে নির্দিষ্ট সময়ে অনুরোধের সংখ্যা সীমিত রাখা।

সারাংশ

ওয়েব সার্ভিসের নিরাপত্তা ব্যবহারকারীর তথ্যের গোপনীয়তা, সিস্টেমের নির্ভরযোগ্যতা এবং সার্ভিসের সুষ্ঠু পরিচালনার জন্য অপরিহার্য। স্প্রিং ওয়েব সার্ভিস WS-Security, HTTPS এবং Spring Security এর মতো উন্নত পদ্ধতিগুলো ব্যবহার করে নিরাপদ ওয়েব সার্ভিস নির্মাণে সাহায্য করে।

Content added By

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());
    }
}

কোড ব্যাখ্যা

  1. XwsSecurityInterceptor:
    • SOAP মেসেজে নিরাপত্তা প্রয়োগের জন্য ব্যবহৃত হয়।
    • setPolicyConfiguration পদ্ধতির মাধ্যমে securityPolicy.xml নির্ধারণ করা হয়।
  2. SecurityCallbackHandler:
    • এটি মেসেজের মধ্যে পাঠানো UsernameToken যাচাই করে।
    • ব্যবহারকারীর পরিচয় নিশ্চিত করার জন্য কাস্টম লজিক প্রয়োগ করা হয়।
  3. 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 কনফিগার করা যায়। এটি অটেনটিকেশন এবং মেসেজ ইনটেগ্রিটির জন্য কার্যকরী একটি পদ্ধতি।


Content added By

ওয়েব সার্ভিসে ডেটা নিরাপত্তা অত্যন্ত গুরুত্বপূর্ণ। SSL/TLS প্রটোকল ব্যবহার করে Spring Web Services এ নিরাপত্তা নিশ্চিত করা সম্ভব। এটি ডেটা এনক্রিপশন, সার্ভার এবং ক্লায়েন্টের মধ্যে নিরাপদ যোগাযোগ, এবং ডেটা ইন্টিগ্রিটি বজায় রাখে।


SSL/TLS কী?

SSL (Secure Sockets Layer) এবং TLS (Transport Layer Security) প্রটোকল দুটি ওয়েব সার্ভিসের মধ্যে এনক্রিপ্টেড এবং নিরাপদ যোগাযোগ নিশ্চিত করে। TLS হলো SSL এর উন্নত সংস্করণ।

SSL/TLS কেন গুরুত্বপূর্ণ

  1. ডেটা এনক্রিপশন: ক্লায়েন্ট ও সার্ভারের মধ্যে তথ্য আদান-প্রদানের সময় ডেটা এনক্রিপ্ট করে।
  2. অথেনটিকেশন: সার্ভার এবং ক্লায়েন্টের পরিচয় নিশ্চিত করে।
  3. ডেটা ইন্টিগ্রিটি: তথ্য পরিবর্তিত বা বিকৃত হয়েছে কিনা তা সনাক্ত করে।

স্প্রিং ওয়েব সার্ভিসে SSL/TLS কনফিগারেশন

সার্টিফিকেট তৈরি

SSL/TLS এর জন্য একটি সার্টিফিকেট প্রয়োজন। এটি OpenSSL বা Java Keytool ব্যবহার করে তৈরি করা যায়। নিচে Java Keytool ব্যবহার করে একটি সার্টিফিকেট তৈরির উদাহরণ দেওয়া হলো:

keytool -genkeypair -alias example -keyalg RSA -keystore example.jks -keysize 2048
  • -alias: সার্টিফিকেটের জন্য একটি নাম।
  • -keyalg: কী অ্যালগরিদম (RSA)।
  • -keystore: তৈরি হওয়া কিস্টোর ফাইলের নাম।
  • -keysize: কী সাইজ (2048)।

সার্টিফিকেট ইনস্টল করা

Spring Boot অ্যাপ্লিকেশনে SSL/TLS সক্রিয় করতে application.properties বা application.yml ফাইল ব্যবহার করুন।

application.properties এ কনফিগারেশন
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:example.jks
server.ssl.key-store-password=yourpassword
server.ssl.key-store-type=JKS
server.ssl.key-alias=example

SSL/TLS সক্রিয় করা

Spring Boot এর মাধ্যমে SSL/TLS সক্রিয় হয়ে গেলে, অ্যাপ্লিকেশনটি HTTPS প্রোটোকল ব্যবহার করে চলে। ক্লায়েন্ট ও সার্ভারের মধ্যে ডেটা এনক্রিপ্টেড থাকবে।


ক্লায়েন্ট সাইড কনফিগারেশন

ক্লায়েন্টকে SSL/TLS ব্যবহার করে সার্ভারের সঙ্গে যোগাযোগ করার জন্য ট্রাস্টস্টোর (TrustStore) ফাইল কনফিগার করতে হয়।

ট্রাস্টস্টোর তৈরি করা

keytool -export -alias example -file example.cer -keystore example.jks
keytool -import -alias example -file example.cer -keystore truststore.jks

জাভা ক্লায়েন্টে SSL কনফিগারেশন

import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;

public class SSLClient {
    public static void main(String[] args) throws Exception {
        KeyStore trustStore = KeyStore.getInstance("JKS");
        trustStore.load(new FileInputStream("truststore.jks"), "truststorepassword".toCharArray());

        TrustManagerFactory trustFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        trustFactory.init(trustStore);

        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, trustFactory.getTrustManagers(), null);

        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
        URL url = new URL("https://localhost:8443/service");
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        System.out.println(connection.getResponseCode());
    }
}

Spring Security এর মাধ্যমে SSL/TLS আরও উন্নত করা

Spring Security ব্যবহার করে SSL/TLS এর নিরাপত্তা আরও জোরদার করা যায়।

কনফিগারেশন উদাহরণ

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.requiresChannel()
            .anyRequest()
            .requiresSecure()
            .and()
            .csrf()
            .disable();
    }
}

SSL/TLS ব্যবহারের সুবিধা

  1. উচ্চতর নিরাপত্তা: ডেটা চুরি এবং আক্রমণ প্রতিরোধ করে।
  2. বিশ্বাসযোগ্যতা বৃদ্ধি: ক্লায়েন্ট এবং সার্ভারের মধ্যে বিশ্বাস স্থাপন করে।
  3. ডেটা সুরক্ষা: ডেটা এনক্রিপশন নিশ্চিত করে।

সীমাবদ্ধতা

  1. কনফিগারেশন জটিলতা: সার্টিফিকেট তৈরি ও ইনস্টলেশন জটিল হতে পারে।
  2. পারফরম্যান্স ওভারহেড: এনক্রিপশন/ডিক্রিপশনের কারণে সামান্য পারফরম্যান্স হ্রাস পেতে পারে।

Spring Web Services এ SSL/TLS কনফিগার করে নিরাপদ ও বিশ্বাসযোগ্য পরিষেবা তৈরি করা সম্ভব। এটি বিশেষত সংবেদনশীল ডেটা নিয়ে কাজ করা এন্টারপ্রাইজ অ্যাপ্লিকেশনগুলোর জন্য অত্যন্ত প্রয়োজনীয়।

Content added By

ওয়েব সার্ভিস সিকিউরিটি (Web Service Security) হল SOAP এবং RESTful ওয়েব সার্ভিসগুলোকে নিরাপদ করার জন্য একটি অপরিহার্য অংশ। স্প্রিং ওয়েব সার্ভিসেস (Spring Web Services) বিভিন্ন সিকিউরিটি ফিচার যেমন WS-Security, Basic Authentication, এবং HTTPS সাপোর্ট করে। এখানে উদাহরণসহ Spring Web Services-এর জন্য সিকিউরিটি কনফিগার করার একটি প্রক্রিয়া বর্ণনা করা হলো।


সিকিউরিটি যোগ করার প্রয়োজনীয়তা

  1. SOAP মেসেজ এনক্রিপশন: ডেটা সংবেদনশীল হলে এনক্রিপশন ব্যবহার করা জরুরি।
  2. অটেনটিকেশন ও অথরাইজেশন: কেবল অনুমোদিত ব্যবহারকারী SOAP সার্ভিস ব্যবহার করতে পারবে।
  3. ডেটা ইন্টিগ্রিটি: মেসেজের ডেটা যাতে ম্যান-ইন-দ্য-মিডল অ্যাটাক থেকে সুরক্ষিত থাকে।

WS-Security সেটআপ

WS-Security হল একটি স্ট্যান্ডার্ড প্রোটোকল যা SOAP মেসেজের সিকিউরিটি নিশ্চিত করে। এটি এনক্রিপশন, সিগনেচার, এবং অটেনটিকেশন সাপোর্ট করে।


Maven ডিপেন্ডেন্সি

pom.xml ফাইলে নিচের ডিপেন্ডেন্সি যুক্ত করুন:

<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-security</artifactId>
</dependency>
<dependency>
    <groupId>ws.security</groupId>
    <artifactId>wss4j</artifactId>
    <version>2.4.0</version>
</dependency>

সিকিউরিটি পলিসি যোগ করা

WS-Security কনফিগার করতে একটি সিকিউরিটি পলিসি (policy) ফাইল তৈরি করুন।

security-policy.xml

<wsse:SecurityPolicy xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
    <wsse:UsernameToken>
        <wsse:PasswordText/>
    </wsse:UsernameToken>
</wsse:SecurityPolicy>

সিকিউরিটি কনফিগারেশন

Spring Web Services-এ সিকিউরিটি কনফিগার করতে নিচের মতো একটি ক্লাস তৈরি করুন:

SecurityConfig.java

@Configuration
public class SecurityConfig {

    @Bean
    public Wss4jSecurityInterceptor securityInterceptor() {
        Wss4jSecurityInterceptor interceptor = new Wss4jSecurityInterceptor();

        // Incoming Security
        interceptor.setSecurementActions("UsernameToken");
        interceptor.setSecurementUsername("admin");
        interceptor.setSecurementPassword("password");

        // Outgoing Security
        interceptor.setValidationActions("UsernameToken");
        interceptor.setValidationCallbackHandler(callbackHandler());

        return interceptor;
    }

    @Bean
    public SimplePasswordValidationCallbackHandler callbackHandler() {
        SimplePasswordValidationCallbackHandler handler = new SimplePasswordValidationCallbackHandler();
        handler.setUsersMap(Collections.singletonMap("admin", "password"));
        return handler;
    }

    @Bean
    public EndpointInterceptor securityInterceptorBean() {
        return securityInterceptor();
    }
}

SOAP এন্ডপয়েন্টে সিকিউরিটি যুক্ত করা

GreetingEndpoint.java

@Endpoint
public class GreetingEndpoint {

    private static final String NAMESPACE_URI = "http://example.com/webservice";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "GetGreetingRequest")
    @ResponsePayload
    public GetGreetingResponse getGreeting(@RequestPayload GetGreetingRequest request) {
        GetGreetingResponse response = new GetGreetingResponse();
        response.setMessage("Hello, " + request.getName() + "! You have been authenticated.");
        return response;
    }
}

HTTPS সেটআপ

SOAP মেসেজ আরও সুরক্ষিত করতে HTTPS সক্রিয় করা আবশ্যক। Spring Boot-এ HTTPS সক্ষম করতে নিচের স্টেপগুলো অনুসরণ করুন:

কিস্টোর তৈরি করা

কমান্ড লাইন থেকে একটি কিস্টোর (keystore) তৈরি করুন:

keytool -genkeypair -alias myalias -keyalg RSA -keystore keystore.jks -keysize 2048

application.properties কনফিগারেশন

server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=yourpassword
server.ssl.key-password=yourpassword

SOAP রিকোয়েস্ট ও রেসপন্স উদাহরণ

SOAP রিকোয়েস্ট:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservice">
   <soapenv:Header>
      <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
         <wsse:UsernameToken>
            <wsse:Username>admin</wsse:Username>
            <wsse:Password>password</wsse:Password>
         </wsse:UsernameToken>
      </wsse:Security>
   </soapenv:Header>
   <soapenv:Body>
      <web:GetGreetingRequest>
         <web:name>John</web:name>
      </web:GetGreetingRequest>
   </soapenv:Body>
</soapenv:Envelope>

SOAP রেসপন্স:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservice">
   <soapenv:Header/>
   <soapenv:Body>
      <web:GetGreetingResponse>
         <web:message>Hello, John! You have been authenticated.</web:message>
      </web:GetGreetingResponse>
   </soapenv:Body>
</soapenv:Envelope>

সারাংশ

Spring Web Services-এ সিকিউরিটি যোগ করা ডেটার নিরাপত্তা নিশ্চিত করে। WS-Security ব্যবহার করে মেসেজ এনক্রিপশন, সিগনেচার, এবং অটেনটিকেশন সেটআপ করা যায়। এর সাথে HTTPS সক্রিয় করে সিকিউরিটিকে আরও শক্তিশালী করা সম্ভব। এটি এন্টারপ্রাইজ লেভেলের ওয়েব সার্ভিসের জন্য অত্যন্ত গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...