Новое в api-тестировании сценариев предварительного запроса - Автоматическое получение токена доступа с типом гранта OAuth 2.0 «Учетные данные клиента» - PullRequest
0 голосов
/ 20 сентября 2018

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

Основа скрипта - автоматическое получение токена авторизации, прежде чем я используюPOST method.

Как было сказано ранее при получении токена доступа для этого конкретного API, тип предоставления равен Client Crentials, и следующие поля необходимы для получения токена вручную: -

Token Name, Grant Type, Access Token URL, Client ID, Client Secrect, Scope и Client Authentication.

Есть ли простой сценарий, который я могу сделать для меня, прежде чем на самом деле сделать POST как утомительно вручную получать токен.

Заранее спасибо за любую помощь.

С уважением

Просто обновление, я нашел способ действительно получить токенТеперь, если вы выполните следующее.

  1. Добавьте новый запрос
  2. Выберите «Опубликовать»
  3. Введите URL-адрес API
  4. Нажмите 'Тело '
  5. Нажмите' x-www-form-urlencoded '
  6. Я ввел следующие' Ключи '(enтер ваши собственные соответствующие «значения») - «client_id», «client_secret», «scope» и «тип предоставления»
  7. Нажмите «Отправить»

Это даст вам ваш токенТеперь мне нужно найти способ либо извлечь токен в новом запросе, либо найти способ вставить его в сценарии перед запросом, чтобы я мог ввести данные как «необработанный» JSON.

Опять же, если кто-то может помочь, был бы признателен.

С уважением

1 Ответ

0 голосов
/ 20 сентября 2018

Это поможет тебе?Или хотя бы приблизить вас к тому, что вам нужно?

Если вы добавите этот сценарий к уровню Collection pre-request script, он получит токен и установит его как переменную jwt.Вы можете использовать эту переменную в Headers для основных запросов, используя синтаксис {{jwt}}. Этот сценарий также получает значение expiry_in из ответа токена и устанавливает его в качестве переменной.

На каждомзапросив в коллекции, он запустит скрипт и проверит наличие свойств AccessTokenExpiry и jwt в файле среды; он также проверит, не истек ли токен.Если какое-либо из этих утверждений является правдой, оно получит еще один токен для вас.Если все в порядке, он будет использовать то, что вы установили.

const moment = require('moment')

const getJWT = {
    url: `<your token base path>/Auth/connect/token`,
    method: 'POST',
    header: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: {
        mode: 'urlencoded',
        urlencoded: [
            {key: 'grant_type', value: 'client_credentials'},
            {key: 'scope', value: '<scope details>'}
            {key: 'client_id', value: 'your creds'}
            {key: 'client_secret', value: 'your creds'}
        ]
    }
}

var getToken = true

if (!_.has(pm.environment.toObject(), 'AccessTokenExpiry') 
    || !_.has(pm.environment.toObject(), 'jwt')
    || pm.environment.get('AccessTokenExpiry') <= moment().valueOf()) {
} else {
    getToken = false
}

if (getToken) {
    pm.sendRequest(getJWT, (err, res) => {
        if (err === null) {
            pm.environment.set('jwt', `Bearer ${res.json().access_token}`)

            var expiryDate = moment().add(res.json().expires_in, 's').valueOf()
            pm.environment.set('AccessTokenExpiry', expiryDate)
        }
    })
}

Чтобы получить доступ к элементам уровня коллекции, при наведении указателя мыши на имя коллекции и нажатии значка ... отобразится списокопции меню.Выберите edit.

Access collection level elements

...