Java के लिए OAuth क्लाइंट: ScribeJava और Spring Security OAuth2
आधुनिक वेब डेवलपमेंट में, OAuth 2.0 प्रोटोकॉल के माध्यम से बाहरी सेवाओं के साथ एकीकरण एक वास्तविक मानक बन गया है। चाहे वह Google, GitHub, Facebook के माध्यम से लॉगिन हो या तीसरे पक्ष के प्लेटफार्मों के API तक पहुंच हो - Java डेवलपर को OAuth के साथ काम करने के लिए एक विश्वसनीय उपकरण की आवश्यकता होती है। इस लेख में, हम दो प्रमुख लाइब्रेरीज़ पर विस्तार से चर्चा करेंगे: ScribeJava (हल्का और बहुमुखी) और Spring Security OAuth2 (Spring पारिस्थितिकी तंत्र का हिस्सा)। आप सीखेंगे कि सही उपकरण कैसे चुनें और Java पर OAuth क्लाइंट को कैसे लागू करें।
OAuth क्लाइंट क्या है और इसकी आवश्यकता क्यों है?
OAuth क्लाइंट एक सॉफ्टवेयर घटक है जो आपके एप्लिकेशन (क्लाइंट) को पासवर्ड ट्रांसफर किए बिना किसी तीसरे पक्ष के सर्वर (प्रदाता) पर उपयोगकर्ता के संसाधनों तक सुरक्षित रूप से पहुंचने की अनुमति देता है। इसके बजाय, एक्सेस टोकन के आदान-प्रदान का उपयोग किया जाता है। Java पर, यह विशेष लाइब्रेरीज़ के माध्यम से कार्यान्वित किया जाता है जो प्रोटोकॉल की सभी जटिलताओं को संभालती हैं: प्राधिकरण URL जनरेशन, कॉलबैक प्रोसेसिंग, टोकन प्राप्त करना और रिफ्रेश करना।
1. ScribeJava — हल्का और स्वतंत्र OAuth क्लाइंट
ScribeJava (पहले Scribe) OAuth 1.0a और OAuth 2.0 के लिए एक न्यूनतम लेकिन शक्तिशाली लाइब्रेरी है। यह किसी भी फ्रेमवर्क से बंधा नहीं है, जो इसे माइक्रोसर्विसेज, सामान्य Java एप्लिकेशन या Android के लिए आदर्श बनाता है। प्रमुख लाभ:
- दर्जनों प्रदाताओं के लिए "बॉक्स से बाहर" समर्थन (Google, Facebook, GitHub, VK, Yandex और अन्य)
- सरल और सहज API
- कोई अनावश्यक निर्भरता नहीं
- सार्वजनिक क्लाइंट के लिए PKCE (Proof Key for Code Exchange) का समर्थन
उदाहरण: ScribeJava के साथ GitHub के माध्यम से प्राधिकरण
आइए एक बुनियादी परिदृश्य पर विचार करें - GitHub से एक्सेस टोकन प्राप्त करना। आरंभ करने के लिए, pom.xml में निर्भरता जोड़ें:
<dependency> <groupId>com.github.scribejava</groupId> <artifactId>scribejava-apis</artifactId> <version>8.3.3</version></dependency>अब OAuth क्लाइंट कोड:
import com.github.scribejava.apis.GitHubApi;import com.github.scribejava.core.builder.ServiceBuilder;import com.github.scribejava.core.model.OAuth2AccessToken;import com.github.scribejava.core.model.OAuthRequest;import com.github.scribejava.core.model.Response;import com.github.scribejava.core.model.Verb;import com.github.scribejava.core.oauth.OAuth20Service;
public class GitHubOAuthExample { public static void main(String[] args) throws Exception { final String clientId = "आपका_client_id"; final String clientSecret = "आपका_client_secret"; final String callbackUrl = "http://localhost:8080/callback";
// OAuth 2.0 सेवा बनाएँ OAuth20Service service = new ServiceBuilder(clientId) .apiSecret(clientSecret) .callback(callbackUrl) .scope("user:email") // ईमेल तक पहुंच का अनुरोध करें .build(GitHubApi.instance());
// चरण 1: उपयोगकर्ता को रीडायरेक्ट करने के लिए URL प्राप्त करें final String authorizationUrl = service.getAuthorizationUrl(); System.out.println("प्राधिकरण के लिए लिंक पर जाएँ: " + authorizationUrl);
// चरण 2: रीडायरेक्ट के बाद कॉलबैक से कोड निकालें // (आमतौर पर यह कंट्रोलर में किया जाता है, यहाँ उदाहरण के लिए — कंसोल इनपुट) System.out.print("कॉलबैक से कोड दर्ज करें: "); java.util.Scanner scanner = new java.util.Scanner(System.in); String code = scanner.nextLine();
// चरण 3: कोड को एक्सेस टोकन में बदलें OAuth2AccessToken accessToken = service.getAccessToken(code); System.out.println("एक्सेस टोकन: " + accessToken.getAccessToken());
// चरण 4: API अनुरोध के लिए टोकन का उपयोग करें OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.g