azure - Azure AD B2C 访问令牌声明在刷新令牌后不更新
问题描述
我们将 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
身份验证后,代码用于访问各种端点和天蓝色功能。在 hte 过程中,我们需要用户在唱歌时输入的用户属性,例如电子邮件、显示名称、国家/地区等信息。除了默认属性,我们还有一些自定义属性team_name
,例如特定于我们的 Web 应用程序用例。这些属性随时间而变化。
例如:一个人可以换队。因此我们使用 Graph API 在用户属性中修改它。所以在这种情况下,如果属性team_name
= 'Team ABC' 现在更改为team_name
= 'Team XYZ'
但是属性更改后,属性并没有反映access_token
/refresh_token
或中的新值id_token
。有没有一种方法可以在不重新授权用户的情况下获取令牌中的刷新值?
目前我们从 Graph API 中获取用户属性,但如果我们在令牌中获得刷新值,它会更快、更方便。
解决方案
自定义策略没有公开记录的机制来在刷新令牌流中获取新的访问令牌声明。所以你所观察到的是预期的
推荐阅读
- python - Group Vars 中的 Ansible Lookup Plugin 被多次调用
- laravel - 如何在 vue js 上循环
- java - 当我重新加载我的 bukkit 服务器时,为什么会收到关于 plugin.yml 的错误?
- r - 如何在R中按日期顺序获取文件?
- java - 无法将 Multipartfile 转换为String()
- object - 它没有方法 the_method
- javascript - 如何使用一个类扩展多个类(不是多重继承)?
- google-drive-api - Google Drive API v3,只在第一次工作
- php - Laravel Socialite 中的 Google 登录是否包含用户的电话号码?
- apache-spark - 生产 Spark 代码开始在 count() 上生成空指针