Новое в api тестирование скриптов предварительного запроса-автоматическое получение маркера доступа с типом Гранта OAuth 2.0 "учетные данные клиента"


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

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

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

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

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

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

С Уважением

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

  1. Добавить новый запрос
  2. Выберите 'Post'
  3. введите url api
  4. Нажмите "Тело"
  5. нажмите "x-www-form-urlencoded"
  6. я ввел следующее: 'Keys'(введите свои собственные соответствующие' values') - 'client_id', 'client_secret', 'scope' и 'grant type'
  7. Нажмите Кнопку "Отправить"

Это даст вам ваш токен, теперь мне нужно найти способ либо извлечь токен в новом запросе, либо найти способ поместить его в Скрипты предварительного запроса, поэтому я могу ввести данные, необходимые как " raw " JSON.

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

С Уважением

1 2

1 ответ:

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

Если вы добавите этот скрипт на уровень 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.

Доступ к элементам уровня коллекции