由于ADFS4.0隐式流不返回id_token中的自定义声明,所以我尝试从userInfo端点获取这些声明。要获得userinfo端点的访问令牌,必须使用资源urn:microsoft:userinfo。因此,要获得资源的访问令牌和客户端的id令牌,必须发送两个查询。
之后,userinfo端点只以
{
"sub": "fRwBBEb3bOu6Pt/xHsS0/Z5TKn24llZ3FGFMT+LP9QA="
}自定义声明在access_token中总是可用的,如果我在查询令牌端点时使用response_mode=form_post,那么它们也在id_token中。表格不适合SPA。用户信息应该返回任何有用的东西吗?
发布于 2017-07-12 19:45:21
它可以返回更多信息,例如Azure AD端点,但ADFS团队就是这样实现的。
您可以要求通过uservoice返回更多的索赔。
发布于 2018-10-26 09:38:23
显然,根据ADFS常见问题的说法,ADFS 2016用户信息端点返回的内容不会超过主题声明。
ADFS端点总是返回OpenID标准中指定的subject声明。AD不提供通过UserInfo端点请求的额外索赔。如果您需要ID令牌中的其他声明,请参考AD中的自定义ID令牌。
发布于 2021-03-23 22:40:57
我用它解决了我的问题,https://www.michaelboeynaems.com/keycloak-ADFS-OIDC.html
解决方案在于返回令牌中您想要的声明,而不是尝试通过userInfo获取该信息,因为就像托什说的那样,返回只有主诉。
微软的官方文档,演示如何将索赔记录放入令牌中。,但是我只在上面提到的博客中找到了一些技巧(尽管在完全理解之后,我在微软文档中看到了所有的东西)。
https://stackoverflow.com/questions/45058571
复制相似问题