Basic Authentication হল HTTP প্রোটোকলের একটি সাধারণ অথেনটিকেশন স্কিমা যেখানে ইউজারের নাম এবং পাসওয়ার্ড ক্লায়েন্ট থেকে সার্ভারে পাঠানো হয়, সাধারণত একটি HTTP হেডারে। Apache HTTP Client-এ Basic Authentication কনফিগারেশন করতে হলে আপনাকে CredentialsProvider এবং BasicAuth ব্যবহার করতে হবে।
Maven Dependency:
প্রথমে, যদি আপনার প্রোজেক্টে Maven ব্যবহৃত হয়, তবে আপনাকে Apache HTTP Client-এর জন্য ডিপেনডেন্সি যুক্ত করতে হবে:
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.core5</groupId>
<artifactId>httpcore5</artifactId>
<version>5.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.httpclient5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.4</version>
</dependency>
Basic Authentication কনফিগারেশন:
Apache HTTP Client-এ Basic Authentication কনফিগার করতে, আপনাকে CredentialsProvider এবং BasicCredentials ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি HTTP GET রিকোয়েস্ট Basic Authentication দিয়ে পাঠানো হচ্ছে।
উদাহরণ: Basic Authentication কনফিগারেশন
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.methods.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.core5.auth.AuthScope;
import org.apache.hc.core5.auth.BasicCredentialsProvider;
import org.apache.hc.core5.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.RequestConfig;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class HttpClientWithBasicAuth {
public static void main(String[] args) {
// CredentialsProvider সেটআপ
BasicCredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope("your-api-endpoint.com", 80), // API হোস্ট এবং পোর্ট
new UsernamePasswordCredentials("username", "password") // ইউজারনেম এবং পাসওয়ার্ড
);
// HTTP ক্লায়েন্ট কনফিগারেশন তৈরি
try (CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider) // CredentialsProvider সেট করা
.build()) {
// HTTP GET রিকোয়েস্ট তৈরি
HttpGet request = new HttpGet("https://your-api-endpoint.com/resource");
// রিকোয়েস্ট পাঠানো এবং রেসপন্স প্রাপ্তি
try (CloseableHttpResponse response = httpClient.execute(request)) {
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("Response: " + responseBody);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- CredentialsProvider:
BasicCredentialsProviderব্যবহার করে ইউজারনেম এবং পাসওয়ার্ড নির্ধারণ করা হয়। এখানেAuthScopeব্যবহার করে API এর হোস্ট এবং পোর্টও উল্লেখ করা হয়। - UsernamePasswordCredentials: এটি ইউজারনেম এবং পাসওয়ার্ডকে
CredentialsProvider-এ সংযুক্ত করতে ব্যবহৃত হয়। - HttpClients.custom():
HttpClients.custom()ব্যবহার করে HTTP ক্লায়েন্ট কনফিগার করা হয় এবং এতেsetDefaultCredentialsProvider()ব্যবহার করে কনফিগারেশন যোগ করা হয়। - HttpGet: এখানে একটি GET রিকোয়েস্ট তৈরি করা হয়েছে এবং
execute()মেথড দিয়ে রিকোয়েস্টটি পাঠানো হয়েছে।
HTTP Header-এ Basic Authentication:
Apache HTTP Client Basic Authentication চালানোর সময়, এটি স্বয়ংক্রিয়ভাবে Authorization হেডারে ইউজারনেম এবং পাসওয়ার্ড সংযুক্ত করে। উদাহরণস্বরূপ, HTTP হেডারে যা পাঠানো হয় তা এরকম দেখতে হতে পারে:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
এখানে dXNlcm5hbWU6cGFzc3dvcmQ= হল base64 এ এনকোড করা username:password।
সারাংশ:
Apache HTTP Client-এ Basic Authentication কনফিগার করতে CredentialsProvider এবং UsernamePasswordCredentials ব্যবহার করা হয়। এটি HttpClients.custom() ব্যবহার করে ক্লায়েন্ট কনফিগার করে এবং Authorization হেডার হিসেবে ইউজারনেম এবং পাসওয়ার্ড পাঠায়।
Read more