ওয়ারথ টোকন ব্যবহার করে গ্যাটলিংয়ের সাথে OAuth 2.0 প্রমাণীকরণ

এই পোস্টে গ্যাটলিংয়ের সাথে কীভাবে Oauth2 প্রমাণীকরণ করবেন তা ব্যাখ্যা করে।

এই উদাহরণে, আমরা একজন ব্যবহারকারী তৈরি করার জন্য একটি অনুরোধ প্রেরণ করছি। তবে, ব্যবহারকারীর শেষ পয়েন্টটি সুরক্ষিত এবং একটি অ্যাক্সেস_ টোকেন প্রয়োজন requires

প্রথমে, আমরা একটি ধারক_ টোকেন বা একটি অ্যাক্সেস_ টোকেন পাব এবং তারপরে এটির হিসাবে এটির পরবর্তী এপিআই অনুরোধে ব্যবহারকারী তৈরি করতে প্রেরণ করব।


এটি চিত্রিত করার জন্য, আমরা গ্যাটলিংয়ের জন্য একই প্রকল্প কাঠামোটি ব্যবহার করব যা আমরা আগে তৈরি করেছি:

গ্যাটলিং এবং মাভেনের সাথে পারফরম্যান্স টেস্টিং ফ্রেমওয়ার্ক


আমরা যখন উপরের পোস্টের পদক্ষেপগুলি অনুসরণ করি, আমাদের প্রকল্পের কাঠামোটি নীচের মতো হবে:



কনফিগারেশনে প্যারামিটার সংজ্ঞায়িত করা হচ্ছে

প্রথমে আমরা | _ _ + _ | তে আমাদের 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))) }

উপরের অনুরোধটি, শিরোনামে বহনকারী হিসাবে অ্যাক্সেস_ টোকেন সহ একটি ব্যবহারকারী তৈরি করার জন্য একটি পোষ্ট অনুরোধ প্রেরণ করে।



সিমুলেশন

অবশেষে আমাদের সিমুলেশন ফাইল | UserScenarios.scala বলা হয় এর অধীনে সংরক্ষিত হয় অনুকরণ ফোল্ডার


import requests.{AuthRequest, UserRequests} import io.gatling.core.Predef._ object UserScenarios { var userIds:Array[Map[String,String]] =
(100 to 900).toArray map ( x => { Map( 'userId' -> x.toString) }) val getAccessToken = scenario('Get token')
.exec(AuthRequest.getAccessToken) val createUserScenario = scenario('Create user')
.feed(userIds.circular)
.exec(UserAuthZRequest.getAccessToken)
.exec(UserRequests.createUser) }

আমরা ব্যবহার পরীক্ষা চালাতে

UserSimulation.scala

আকর্ষণীয় নিবন্ধ