बीअर टोकन वापरुन गॅटलिंगसह OAuth 2.0 प्रमाणीकरण

हे पोस्ट गॅटलिंगसह Oauth2 प्रमाणीकरण कसे करावे हे स्पष्ट करते.

या उदाहरणात, आम्ही एक वापरकर्ता तयार करण्याची विनंती पाठवित आहोत. तथापि, वापरकर्ता अंतिम बिंदू संरक्षित आहे आणि त्यात प्रवेश_ टोकन आवश्यक आहे.

प्रथम, आम्हाला एक वाहक_ टोकन किंवा _क्सेस_ टोकन मिळेल आणि नंतर हेडर म्हणून पुढच्या एपीआय विनंतीवर वापरकर्ता तयार करण्यासाठी पाठवू.


हे स्पष्ट करण्यासाठी, आम्ही यापूर्वी तयार केलेल्या गॅटलिंगसाठी समान प्रकल्प रचना वापरत आहोत:

गॅटलिंग आणि मावेनसह परफॉरमन्स टेस्टिंग फ्रेमवर्क


जेव्हा आम्ही वरील पोस्टमधील चरणांचे अनुसरण करतो तेव्हा आमच्याकडे आमची प्रकल्प रचना खालीलप्रमाणे असतेः



कॉन्फिगरेशनमध्ये पॅरामीटर्स परिभाषित करत आहे

प्रथम आम्ही | _ _ _ _ | मध्ये आमची OAuth 2.0 पॅरामीटर्स परिभाषित करतो च्या अंतर्गत ऑब्जेक्ट फाइल कॉन्फिगर करा फोल्डर:

Configuration.scala |टीपःसामान्यत: वातावरण, क्लायंट_आयडी आणि क्लायंट_सेक्रेट्स मशीनमध्ये चाचणी चालू असतात त्यामध्ये निर्यात केल्या जातात, म्हणून आम्ही हे वापरू शकतो System.getProperty () मूल्ये वाचण्यासाठी.

विनंत्या

आता आम्हाला कोड लिहिण्याची आवश्यकता आहे जी बेअरर टोकन मिळविण्यासाठी अधिकृतता सर्व्हरला विनंती पाठवते.


OAuth 2.0 विनंती - प्रवेश_ टोकन

ही फाईल | _ _ _ _ | च्या खाली सेव्ह केलेले आहे विनंत्या आमच्या प्रोजेक्ट स्ट्रक्चर मधील फोल्डर.

object Configuration { val environment: String = System.getProperty('environment') val clientId: String = System.getProperty('CLIENT_ID') val clientSecret: String = System.getProperty('CLIENT_SECRET') val apiURL: String = 'https://some-sub-domain.' + environment + 'some-domain.com/api' var tokenPath: String = 'https://some-sub-domain' + environment + '.eu.auth0.com/oauth/token' val userPath = '/identity/iaa/v1/users' } |

वरील कोड स्निपेटमध्ये आम्ही फाईलमध्ये एक्सेस_ टोकन सेव्ह करत आहोत.

उपरोक्त कॉलमध्ये फक्त प्रवेश_ टोकन मिळतो.

_क्सेस_ टोकन हेडर म्हणून पाठवून वापरकर्ता तयार करण्यासाठी आम्हाला आणखी एक विनंती आवश्यक आहे.


वापरकर्त्याची विनंती

आमची वापरकर्ता विनंती | _ _ + _ | नावाच्या फाईलमध्ये आहे आणि च्या खाली सेव्ह केले आहे विनंत्या फोल्डर.

AuthRequest.scala |

परिदृश्य

आता आपण परिस्थिती ऑब्जेक्ट लिहितो. या उदाहरणात आपल्या ऑब्जेक्टला | _ _ + _ | म्हणतात आणि च्या खाली सेव्ह केले आहे परिस्थिती फोल्डर.

import java.io.{BufferedWriter, FileWriter} import config.Configuration import io.gatling.core.Predef._ import io.gatling.http.Predef._ object AuthRequest { val getAccessToken = exec(http('Get access token')
.post(Configuration.tokenPath)
.body(StringBody(
s'''{

'client_id': '${Configuration.clientId}',

'client_secret': '${Configuration.clientSecret}',

'audience': 'https://some-domain-name.com/user',

'grant_type': 'client_credentials',

'scope': 'user:admin'
}'''
))
.asJson
.headers(Map('Content-Type' -> 'application/json'))
.check(status.is(200))
.check(jsonPath('$.access_token').saveAs('access_token')))
.exec {
session =>
val fw = new BufferedWriter(new FileWriter('access_token.txt', true))
try {

fw.write(session('access_token').as[String] + ' ')
}
finally fw.close()
session
} }
|

उपरोक्त विनंती, शीर्षलेखात वाहक म्हणून एक्सेस_ टोकनसह वापरकर्ता तयार करण्यासाठी एक पोस्ट विनंती पाठवते.



नक्कल

शेवटी आमची सिम्युलेशन फाईल | _ _ + _ | म्हणतात च्या खाली सेव्ह केलेले आहे नक्कल फोल्डर.


UserRequests.scala |

आम्ही वापरत असलेल्या चाचण्या चालविण्यासाठी

import config.Configuration.{apiURL, userPath} import io.gatling.core.Predef._ import io.gatling.http.Predef._ object UserRequests { private val auth0Headers = Map(
'Accept' -> 'application/json, text/javascript, */*; q=0.01',
'Content-Type' -> 'application/json',
'Authorization' -> 'Bearer ${access_token}') val createUser = exec(http('Create user')
.post(apiURL + userPath)
.headers(auth0Headers)
.body(ElFileBody('createUser.json'))
.check(status.is(201))) }
|

मनोरंजक लेख