Как автоматизировать генерацию токенов OAuth 2.0 с помощью Artillery? - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу автоматизировать токен OAuth 2.0 автоматически через javascript. Есть ли способ, которым я могу сделать это и получить токен, чтобы использовать его в артиллерийских справочниках.

Для генерации токена OAuth у меня есть следующие детали:

  • Auth URL
  • Идентификатор клиента
  • Область действия

Это выполняется с помощью учетных данных аутентификации клиента.

Ниже приведен пример кода, который я использую для создания токена:

var ClientOAuth2 = require('client-oauth2')

var Auth = new ClientOAuth2({
  clientId: 'ClientID',
  accessTokenUri: 'https://Auth_URL/v2.0/token',
  authorizationUri: 'https://Auth_URL/v2.0/authorize',
  redirectUri: 'https://Auth_URL/',
  scope: 'api://Scope/access_as_user'
})




  Auth.owner.getToken('Username', 'password')
  .then(async (user) => {
    await console.log(user) //=> { accessToken: '...', tokenType: 'bearer', ... }
  }).catch((e) => { console.log('error show',e); })
  .finally( () => console.log('end'));

1 Ответ

0 голосов
/ 05 ноября 2019

Вы можете объявить свои пользовательские JS-файлы, которые будут запускаться каждый раз перед запросом:

Ваш YAML-файл может выглядеть следующим образом:

config:
  target: "https://baseUrl.com"
  phases:
    - duration: 60
      arrivalRate: 100
  processor: "./customFile.js"

scenarios:
  - flow:
      - post:
          url: "/pathInYourApi"
          headers:
            Content-Type: "application/json"
            Accept: application/json
          json: {}
          beforeRequest: "beforeRequest"

, а затем ваш скрипт customFile.js. :

module.exports = {
  beforeRequest: beforeRequest,
};

function beforeRequest(requestParams, context, ee, next) {
  // Call your OAuth client, and after you obtain token you can assign it to requestParams Authorization header
  // eg. requestParams.headers.Authorization = `Bearer + ${token}`

  return next(); // MUST be called for the scenario to continue
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...