OAuth 2.0 चार अलग-अलग प्रवाह प्रदान करता है, लेकिन प्रत्येक प्रवाह का मुख्य लक्ष्य है एक access_token प्राप्त करें और संरक्षित संसाधनों तक पहुंचने के लिए इसका उपयोग करें।
चार अलग-अलग प्रवाह हैं:
यह ट्यूटोरियल OAuth 2.0 प्रवाह, प्राधिकरण कोड अनुदान और ग्राहक क्रेडेंशियल प्रवाह का परीक्षण करने के लिए REST- आश्वासन का उपयोग करके कोड उदाहरण प्रदान करता है।
यह सबसे आम प्रवाह है जहां एक कोड जारी किया जाता है और इसे प्राप्त करने के लिए उपयोग किया जाता है एक्सेस टोकन । उपयोगकर्ता लॉग करने के बाद इस कोड को फ्रंट-एंड एप्लिकेशन (ब्राउज़र पर) पर धकेल दिया जाता है। एक्सेस_टोकन को सर्वर साइड पर जारी किया जाता है, क्लाइंट को उसके पासवर्ड और प्राप्त कोड को प्रमाणित करता है।
तीन चरण प्रक्रिया:
पहला कदम है।
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
फिर हम संरक्षित संसाधनों के लिए अनुरोध कर सकते हैं।
आशा है कि आपको उपरोक्त उपयोगी मिल जाएगा।