oauth-2.0 - 是否可以在邮递员中自动执行 Azure 活动目录的 OAuth 2.0 隐式授权流程?
问题描述
我正在尝试自动化 API 的所有测试。目前正在使用使用 AAD 的 utentificacion。问题是:我可以使用邮递员的过程使用OAuth2.0获取令牌
邮递员对话框
但我无法运行集合并执行类似触发器的操作以在开始时获取令牌。如果我想获取令牌,我必须按下“获取新访问令牌”按钮
有什么方法可以自动完成吗?或者我怎样才能创建一个流程来获取令牌?
谢谢!
解决方案
您可以使用预请求脚本自动执行此操作。您只需要修改您所需的值并将其发布在邮递员的 Pre-request Script 中即可。它最好在父集合中,因此它可以从父集合继承身份验证。
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());
}
});
}
对于代码示例,您可以参考此处。
推荐阅读
- xml - Angular i18n 拆分翻译文件
- python - Rounding pandas timestamps to nearest 10min
- java - convert latitude and longitude value to double
- python - Reading .TIF image using GDAL Python becomes too dark
- spring - SimpleMessageConverter 将 ConcurrentHashMap 转换为 HashMap
- git - 使用 git commit hash 和 maven-release-plugin
- node.js - 如何使用 facebook 和 google api 测试登录?
- reactjs - “未捕获的 TypeError:layer.getLayerStatesArray 不是函数”带有开放层的 React JS 中的错误
- rest - Odata. Filter for some string field not working
- r - How to group characters