Возможно ли автоматизировать OAuth 2.0 неявный поток предоставления прав в активном каталоге Azure в почтальоне? - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь автоматизировать все тестирование API.В настоящее время используется Utentificacion с использованием AAD.Проблема в том, что я могу использовать процесс почтальона для получения токена, используя OAuth2.0

Диалог почтальона

enter image description here

но я не могу запустить коллекцию и сделать что-то вроде триггера, чтобы получить токен в начале.Если я хочу получить токен, я должен нажать кнопку «Получить новый токен доступа»

, есть ли способ сделать это автоматически?или как мне создать поток для получения токена?

Спасибо!

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете использовать скрипт предварительного запроса, чтобы сделать это автоматически.Вам просто нужно изменить требуемое значение и опубликовать его в сценарии предварительного запроса почтальона.Это было лучше в родительской коллекции, поэтому он мог наследовать auth от родительского.

var getToken = true;

if (!pm.environment.get('accessTokenExpiry') || 
    !pm.environment.get('currentAccessToken')) {
    console.log('Token or expiry date are missing')
} else if (pm.environment.get('accessTokenExpiry') <= (new Date()).getTime()) {
    console.log('Token is expired')
} else {
    getToken = false;
    console.log('Token and expiry date are all good');
}

if (getToken === true) {
    pm.sendRequest({
         url: 'https://login.microsoftonline.com/microsoft.onmicrosoft.com/oauth2/token',
    method: 'POST',
    header: 'Content-Type:application/x-www-form-urlencoded',
        body: {
        mode: 'raw',
        raw: 'grant_type=implicit&client_id...'
    }
    }, function (err, res) {
    console.log(err ? err : res.json());
        if (err === null) {
            console.log('Saving the token and expiry date')
            var responseJson = res.json();
            pm.environment.set('currentAccessToken', responseJson.access_token)
    
            var expiryDate = new Date();
            expiryDate.setSeconds(expiryDate.getSeconds() + responseJson.expires_in);
            pm.environment.set('accessTokenExpiry', expiryDate.getTime());
        }
    });
}

Для примера кода вы можете обратиться к здесь .

...