- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用 Azure B2C 来验证我们的用户,效果很好。注册后,我们向用户添加一些自定义声明,这些声明在 B2C 门户中使用图形 API 定义为“用户属性”。当我登录门户时,我可以看到这些值已由我们的调用设置,就像一些标准声明值一样(即我们还通过连接给定名称和姓氏值来设置显示名称)。
我们遇到的问题是,设置这些值后,它们不会出现在通过将访问 token 发送到身份验证端点而检索到的 token 中,直到用户注销并再次重新登录(这显然是非常糟糕的)注册后的用户体验)。看起来原始的 id_token 在创建用户时被缓存,这就是返回的内容。
这没有意义,因为让用户在登录应用程序时更新其个人资料(声明值)并且让这些更改立即生效而不需要重新进行身份验证似乎是完全明智的?
有人可以解释如何/是否可以强制服务器上缓存的 id_token 过期,以便当我们使用访问 token 请求 id_token 时,id_token 包含最新的声明值?
最佳答案
The issue we are having is that after these values are set, they do not appear in the token retrieved by sending the access token to the authenticate endpoints until the user is logged out and back in again (which is obviously a pretty awful user experience after signup).
您介意显示有关如何获取 id_token 的请求详细信息吗?
根据我的测试,我可以获取更新声明成功的 id_token,如下步骤:
1.登录网络应用
2.使用 Azure AD Graph 更新 DisplayName,如下所示:
POST: https://graph.windows.net/xxxx.onmicrosoft.com/users/{userId}?api-version=1.6
{
"displayName":"newValue"
}
3.使用 HTTP 请求从 OAuth2.0 授权端点重新请求 id_token,无需注销/登录(您也可以在登录应用程序时使用 Fiddler 捕获确切的请求)
GET:https://login.microsoftonline.com/xxxx.onmicrosoft.com/oauth2/authorize?client_id={clientId}&redirect_uri={redirectURL}&response_type=id_token&scope=email+openid&response_mode=query&nonce=HWUavSky1PksCJC5Q0xHsw%3d%3d&nux=1&nca=1&domain_hint={XXXX.onmicrosoft.com}
4.更新声明值按预期显示在新的 id_token 中
为了缩小问题范围,您可以查看您的应用中是否有 id_token 的缓存。
关于azure - 如何强制 Azure Active Directory 身份验证服务重新颁发具有更新声明的 id_token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40524425/
我在 Nginx 中使用 Laravel Forge 部署了一个 Laravel 项目。 此应用程序有几个别名。 我正在尝试为每个别名颁发 ssl 证书,但出现以下错误: ERROR: Challen
我是一名优秀的程序员,十分优秀!