REST- आश्वासन प्रयोग OAuth २.० प्रवाह उदाहरण परीक्षण गर्न

OAuth 2.0 ले चार फरक प्रवाह प्रदान गर्दछ, तर प्रत्येक प्रवाहको मुख्य लक्ष्य भनेको हो एक एक्सेस_ टोकन प्राप्त गर्नुहोस् र यसलाई सुरक्षित संसाधनहरूमा पहुँच गर्न प्रयोग गर्नुहोस्।

चार फरक प्रवाहहरू हुन्:

  • प्राधिकरण कोड अनुदान
  • निहित अनुदान प्रवाह
  • ग्राहक प्रमाण
  • पासवर्ड अनुदान प्रवाह

यस ट्यूटोरियलले OAuth २.० प्रवाह, प्राधिकरण कोड अनुदान र ग्राहक प्रमाण प्रवाहहरूको परीक्षण गर्न 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 छ, तब हामी संरक्षित संसाधनहरूको लागि अनुरोध गर्न सक्छौं:

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 सँग उपसर्ग:


उदाहरण को लागी:

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


ग्राहक प्रमाण प्रवाही

क्लाइन्ट क्रेडेन्सियल फ्लोसँग कुनै UI (ब्राउजर) समावेश छैन र मुख्यतया मेशिन-बाट-मेशिन प्राधिकरणको लागि प्रयोग गरिन्छ।

REST- आश्वासनमा, यो यस्तो देखिनेछ:

Authorization Header

निष्कर्ष

यहाँ, हामीले कोड उदाहरणहरू REST- आश्वासन सहित कसरी प्रदान गर्ने भन्ने बारे प्रदान गरेका छौं OAuth २.० प्रवाहहरू प्रयोग गर्दै। एक पटक हामीले | _ _ _ _ | हामी त्यसपछि संरक्षित संसाधनहरूको लागि अनुरोध गर्न सक्छौं।


आशा छ तपाईंले माथिको उपयोगी पाउनुभयो।

रोचक लेख