我正在尝试构建一个作为nodejs / react应用程序运行的应用程序。它会调用一个外部API,该API也将使用流的代表功能在azure广告中注册。
基于登录的用户,我希望代表登录的用户请求将某些范围传递给服务。我的代码如下:
const request = require('request');
function getApiTokenOnBehalfOf(req, callback) {
var options = {
method: 'POST',
url: 'https://login.microsoftonline.com/organizations/oauth2/v2.0/token',
headers:
{
'Content-Type': 'application/x-www-form-urlencoded'
},
form:
{
assertion: req.user.accessToken,
grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
client_id: process.env.PASSPORT_AZUREAD_ID,
client_secret: process.env.PASSPORT_AZUREAD_SECRET,
scope: 'https://`myorg.com/api/Users.Read.All',
requested_token_use: 'on_behalf_of'
}
};
request(options, callback);
}
由于某种原因,令牌中返回的范围始终包括 all 用户已为此应用程序同意的范围。如何将返回给用户的令牌限制为我在通话中要求的令牌?
答案 0 :(得分:0)
如果您试图获取访问令牌以访问其他资源,则scps和权限无关紧要,因为受众群体将有所不同。
但是,如果您确实试图用细齿梳来控制权限,则默认作用域将仅返回静态权限,因此仅期望的权限应通过访问令牌返回。有关此方面的更多信息,请参见此处的文档, https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#the-default-scope