ADFS 4.0 userInfo 端点 returns 仅子声明
ADFS 4.0 userInfo endpoint returns only sub claim
由于 ADFS 4.0 隐式流在 id_token 中没有 return 自定义声明,我尝试从 userInfo 端点获取这些声明。要获取 userinfo 端点的访问令牌,必须使用资源 urn:microsoft:userinfo。因此,要获取资源的访问令牌和客户端的 ID 令牌,必须发送两个查询。
之后 userinfo 端点仅响应
{
"sub": "fRwBBEb3bOu6Pt/xHsS0/Z5TKn24llZ3FGFMT+LP9QA="
}
自定义声明在 access_token 中始终可用,如果我在查询令牌端点时使用 response_mode=form_post,那么它们也在 id_token 中。表格 post 不适合 SPA。 userinfo 应该 return 有什么用吗?
它可以例如Azure AD 端点 returns 很多,但这就是 ADFS 团队实现它的方式。
您可以要求通过 uservoice 返回更多索赔。
显然,根据 ADFS FAQ:
,ADFS 2016 用户信息端点不会 return 超过主题声明
The ADFS userinfo endpoint always returns the subject claim as specified in the OpenID standards. AD FS does not provide additional claims requested via the UserInfo endpoint. If you need additional claims in ID token, refer to Custom ID Tokens in AD FS.
我已经用它解决了我的问题https://www.michaelboeynaems.com/keycloak-ADFS-OIDC.html
解决方案在于 return 令牌中您想要的声明,而不是尝试通过 userInfo 获取该信息,因为就像 Tosh 所说的那样,return only subject claim.
微软官方文档,shows how to put the claims in your token,但是我只在上面提到的博客中找到了一些技巧(即使在完全理解之后,我也看到了微软文档中的所有内容)。
由于 ADFS 4.0 隐式流在 id_token 中没有 return 自定义声明,我尝试从 userInfo 端点获取这些声明。要获取 userinfo 端点的访问令牌,必须使用资源 urn:microsoft:userinfo。因此,要获取资源的访问令牌和客户端的 ID 令牌,必须发送两个查询。
之后 userinfo 端点仅响应
{
"sub": "fRwBBEb3bOu6Pt/xHsS0/Z5TKn24llZ3FGFMT+LP9QA="
}
自定义声明在 access_token 中始终可用,如果我在查询令牌端点时使用 response_mode=form_post,那么它们也在 id_token 中。表格 post 不适合 SPA。 userinfo 应该 return 有什么用吗?
它可以例如Azure AD 端点 returns 很多,但这就是 ADFS 团队实现它的方式。
您可以要求通过 uservoice 返回更多索赔。
显然,根据 ADFS FAQ:
,ADFS 2016 用户信息端点不会 return 超过主题声明The ADFS userinfo endpoint always returns the subject claim as specified in the OpenID standards. AD FS does not provide additional claims requested via the UserInfo endpoint. If you need additional claims in ID token, refer to Custom ID Tokens in AD FS.
我已经用它解决了我的问题https://www.michaelboeynaems.com/keycloak-ADFS-OIDC.html
解决方案在于 return 令牌中您想要的声明,而不是尝试通过 userInfo 获取该信息,因为就像 Tosh 所说的那样,return only subject claim.
微软官方文档,shows how to put the claims in your token,但是我只在上面提到的博客中找到了一些技巧(即使在完全理解之后,我也看到了微软文档中的所有内容)。