OAuth 2.0 प्रवाह उदाहरणों का परीक्षण करने के लिए REST- आश्वासन का उपयोग करना

OAuth 2.0 चार अलग-अलग प्रवाह प्रदान करता है, लेकिन प्रत्येक प्रवाह का मुख्य लक्ष्य है एक access_token प्राप्त करें और संरक्षित संसाधनों तक पहुंचने के लिए इसका उपयोग करें।

चार अलग-अलग प्रवाह हैं:

  • प्राधिकरण कोड अनुदान
  • इम्प्लिमेंट ग्रांट फ्लो
  • क्लाइंट क्रेडेंशियल
  • पासवर्ड अनुदान प्रवाह

यह ट्यूटोरियल OAuth 2.0 प्रवाह, प्राधिकरण कोड अनुदान और ग्राहक क्रेडेंशियल प्रवाह का परीक्षण करने के लिए REST- आश्वासन का उपयोग करके कोड उदाहरण प्रदान करता है।




प्राधिकरण कोड अनुदान प्रवाह

यह सबसे आम प्रवाह है जहां एक कोड जारी किया जाता है और इसे प्राप्त करने के लिए उपयोग किया जाता है एक्सेस टोकन । उपयोगकर्ता लॉग करने के बाद इस कोड को फ्रंट-एंड एप्लिकेशन (ब्राउज़र पर) पर धकेल दिया जाता है। एक्सेस_टोकन को सर्वर साइड पर जारी किया जाता है, क्लाइंट को उसके पासवर्ड और प्राप्त कोड को प्रमाणित करता है।

तीन चरण प्रक्रिया:


  • 1 - प्रामाणिक कोड प्राप्त करें
  • 2 - एक्सेस टोकन प्राप्त करें
  • 3 - एक्सेस टोकन का उपयोग करें (संरक्षित संसाधनों तक पहुंचने के लिए)

प्रामाणिक कोड प्राप्त करें

पहला कदम है।

code

पहुँच टोकन प्राप्त करें

एक बार जब हम प्राधिकरण कोड प्राप्त कर लेते हैं, तो हम इसके लिए अनुरोध कर सकते हैं। _ + _ | |

import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.response.Response; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; import java.util.Base64; public class RestAssuredOAuth2 {
public static String clientId = 'some_client_id';
public static String redirectUri = 'some_redirect_uri';
public static String scope = 'some_scope';
public static String username = 'some_email';
public static String password = 'some_password';
public static String encode(String str1, String str2) {
return new String(Base64.getEncoder().encode((str1 + ':' + str2).getBytes()));
}
public static Response getCode() {
String authorization = encode(username, password);

return


given()




.header('authorization', 'Basic ' + authorization)




.contentType(ContentType.URLENC)




.formParam('response_type', 'code')




.queryParam('client_id', clientId)




.queryParam('redirect_uri', redirectUri)




.queryParam('scope', scope)




.post('/oauth2/authorize')




.then()




.statusCode(200)




.extract()




.response();
}
public static String parseForOAuth2Code(Response response) {
return response.jsonPath().getString('code');
}
@BeforeAll
public static void setup() {
RestAssured.baseURI = 'https://some-url.com';
}
@Test
public void iShouldGetCode() {
Response response = getCode();
String code = parseForOAuth2Code(response);

Assertions.assertNotNull(code);
} }

एक्सेस टोकन का उपयोग करना

अंत में, जब हमारे पास वैध है। _ + _ | हम, तो संरक्षित संसाधनों के लिए अनुरोध कर सकते हैं:

access_token

हम एक्सेस टोकन को एक के रूप में भी भेज सकते हैं। _ + _ | with | public static Response getToken(String authCode) {
String authorization = encode(username, password);
return
given()

.header('authorization', 'Basic ' + authorization)

.contentType(ContentType.URLENC)

.queryParam('code', authCode)

.queryParam('redirect_uri', redirectUri)

.queryParam('grant_type', grantType)

.post('/oauth2/token')

.then()

.statusCode(200)

.extract()

.response();
}
public static String parseForAccessToken(Response loginResponse) {
return loginResponse.jsonPath().getString('access_token');
}
@Test
public void iShouldGetToken() {
Response tokenResponse = getToken(code);
String accessToken = parseForAccessToken(tokenResponse);
Assertions.assertNotNull(accessToken);
}
उपसर्ग:


उदाहरण के लिए:

access_token

क्लाइंट क्रेडेंशियल फ्लो

क्लाइंट क्रेडेंशियल प्रवाह में कोई UI (ब्राउज़र) शामिल नहीं है और इसका उपयोग मुख्य रूप से मशीन-टू-मशीन प्राधिकरण के लिए किया जाता है।

REST- आश्वस्त में, यह इस तरह दिखेगा:

public static void getUsers() {
given().auth()
.oauth2(accessToken)
.when()
.get('/users')
.then()
.statusCode(200); }


निष्कर्ष

यहाँ, हमने REST के साथ कोड के उदाहरण दिए कि कैसे प्राप्त करें। _ + _ | OAuth 2.0 प्रवाह का उपयोग करना। एक बार जब हम प्राप्त करते हैं Authorization Header फिर हम संरक्षित संसाधनों के लिए अनुरोध कर सकते हैं।


आशा है कि आपको उपरोक्त उपयोगी मिल जाएगा।

दिलचस्प लेख