问题描述
我们正在将Azure AD B2C与我们的应用程序一起使用。 我们使用API授权用户
https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?client_id=<client-id-uuid>
&nonce=defaultNonce&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Findex.html
&scope=openid%20offline_access%20https%3A%2F%2F{tenant}.onmicrosoft.com%2F<client-id-uuid>%2FUser.all
&response_type=code&prompt=login
此身份验证代码用于通过应用程序对用户进行身份验证,并使用来获取access_token
,refresh_token
和id_token
POST /{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
grant_type=authorization_code&code={auth code received in prevIoUs step}
&scope=openid%20offline_access%20https%3A%2F%2F{tenant}.onmicrosoft.com%2F<client-id-uuid>%2FUser.all
&client_id={client id}&redirect_uri=localhost%253A4200%252Flogin.html%3A
验证后,该代码用于访问各种端点和Azure功能。
在此过程中,我们需要用户在唱歌时输入的用户属性,例如电子邮件,display_name,国家/地区等信息。
除了默认属性外,我们还有一些自定义属性,例如team_name
,它们特定于我们的Web应用程序用例。这些属性会随着时间而改变。
例如:某人可以更换团队。因此,我们使用Graph API在用户属性中进行了修改。
因此在这种情况下,如果属性team_name
='Team ABC'现在更改为team_name
='Team XYZ'
但是,更改属性后,属性不会反映access_token
/ refresh_token
或id_token
中的新值。有没有一种方法可以在不重新授权用户的情况下获取令牌中的刷新值?
当前,我们从Graph API获取用户属性,但是如果我们在令牌中获取了刷新的值,则会更快,更方便。
解决方法
自定义策略没有公开记录的机制来在刷新令牌流中获取新的访问令牌声明。所以您所观察到的是预期的