如何使用 Azure AD 范围和 oidc-client.js 检索用户信息?
How to retrieve user info with Azure AD scopes and oidc-client.js?
我很困惑在将 azure 广告范围与 oidc-client.js.
一起使用时如何获取访问令牌和用户信息详细信息
我在门户中针对我的应用程序具有以下范围...
然后我的用户管理器设置如下....
var settings: UserManagerSettings = {
authority: `https://login.microsoftonline.com/${tenantId}`,
client_id: clientId,
redirect_uri: "http://localhost:3000/authcallback",
post_logout_redirect_uri: "http://localhost:3000/authcallback",
response_type: "token id_token",
scope: `api://${clientId}/access_user_data openid`,
popup_redirect_uri: "http://localhost:3000/authcallback",
silent_redirect_uri: "http://localhost:3000/authcallback",
automaticSilentRenew: true,
loadUserInfo: true,
metadata: {
userinfo_endpoint: "https://graph.microsoft.com/oidc/userinfo",
authorization_endpoint: `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize`,
issuer: `https://login.microsoftonline.com/${tenantId}/v2.0`,
jwks_uri: `https://login.microsoftonline.com/${tenantId}/discovery/v2.0/keys`
}
};
当我使用 signinRedirect
登录时,我得到一个 access_token
返回到我的回调,但是在执行 getUser()
.[=25 时,对 https://graph.microsoft.com/oidc/userinfo
的调用失败并未经授权=]
oidc-client.min.js:1 GET https://graph.microsoft.com/oidc/userinfo 401 (Unauthorized)
访问令牌似乎确实适用于我的 api,它需要 api://${clientId}/access_user_data
范围。
发现文档here列出了以下可用范围
"scopes_supported": [
"openid",
"profile",
"email",
"offline_access"
]
我认为这会起作用,因为我还包括 openid
范围。请注意,如果我只有像 scope: "openid"
这样的 openid
作用域,getUser()
可以工作,但是它没有我调用 api.[=25 所需的作用域=]
我做错了什么?
谢谢,
在一些研究尝试将 loadUserInfo 设置为 false 解决了我的问题后遇到了同样的问题,请尝试相同的方法
我很困惑在将 azure 广告范围与 oidc-client.js.
一起使用时如何获取访问令牌和用户信息详细信息我在门户中针对我的应用程序具有以下范围...
然后我的用户管理器设置如下....
var settings: UserManagerSettings = {
authority: `https://login.microsoftonline.com/${tenantId}`,
client_id: clientId,
redirect_uri: "http://localhost:3000/authcallback",
post_logout_redirect_uri: "http://localhost:3000/authcallback",
response_type: "token id_token",
scope: `api://${clientId}/access_user_data openid`,
popup_redirect_uri: "http://localhost:3000/authcallback",
silent_redirect_uri: "http://localhost:3000/authcallback",
automaticSilentRenew: true,
loadUserInfo: true,
metadata: {
userinfo_endpoint: "https://graph.microsoft.com/oidc/userinfo",
authorization_endpoint: `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize`,
issuer: `https://login.microsoftonline.com/${tenantId}/v2.0`,
jwks_uri: `https://login.microsoftonline.com/${tenantId}/discovery/v2.0/keys`
}
};
当我使用 signinRedirect
登录时,我得到一个 access_token
返回到我的回调,但是在执行 getUser()
.[=25 时,对 https://graph.microsoft.com/oidc/userinfo
的调用失败并未经授权=]
oidc-client.min.js:1 GET https://graph.microsoft.com/oidc/userinfo 401 (Unauthorized)
访问令牌似乎确实适用于我的 api,它需要 api://${clientId}/access_user_data
范围。
发现文档here列出了以下可用范围
"scopes_supported": [
"openid",
"profile",
"email",
"offline_access"
]
我认为这会起作用,因为我还包括 openid
范围。请注意,如果我只有像 scope: "openid"
这样的 openid
作用域,getUser()
可以工作,但是它没有我调用 api.[=25 所需的作用域=]
我做错了什么?
谢谢,
在一些研究尝试将 loadUserInfo 设置为 false 解决了我的问题后遇到了同样的问题,请尝试相同的方法