【问题标题】:ADFS 4.0 userInfo endpoint returns only sub claimADFS 4.0 userInfo 端点仅返回子声明
【发布时间】:2021-03-24 06:40:57
【问题描述】:

由于 ADFS 4.0 隐式流不返回 id_token 中的自定义声明,我尝试从 userInfo 端点获取这些声明。要获取 userinfo 端点的访问令牌,必须使用资源 urn:microsoft:userinfo。因此,要获取资源的访问令牌和客户端的 ID 令牌,必须发送两个查询。

之后,userinfo 端点只响应

{
    "sub": "fRwBBEb3bOu6Pt/xHsS0/Z5TKn24llZ3FGFMT+LP9QA="
}

自定义声明始终在 access_token 中可用,如果我在查询令牌端点时使用 response_mode=form_post,那么它们也在 id_token 中。表格帖子不适合 SPA。 userinfo 是否应该返回任何有用的东西?

【问题讨论】:

    标签: adfs


    【解决方案1】:

    它可以例如Azure AD 端点返回更多,但这是 ADFS 团队实现此的方式。

    您可以要求通过 uservoice 退回更多声明。

    【讨论】:

    • 微软文档中是否有任何地方可以确认这一点?这对我们来说是必须的。如果 ADFS 没有它,我们将需要放弃 ADFS 并使用更具可配置性的 IdentityServer4。
    • 我从未见过。但是很多人都有同样的问题。
    【解决方案2】:

    根据ADFS FAQ,显然 ADFS 2016 用户信息端点返回的内容不超过主题声明:

    ADFS 用户信息端点始终返回 OpenID 标准中指定的主题声明。 AD FS 不提供通过 UserInfo 终结点请求的其他声明。如果您需要 ID 令牌中的其他声明,请参阅 AD FS 中的自定义 ID 令牌。

    【讨论】:

      【解决方案3】:

      我已经解决了我的问题https://www.michaelboeynaems.com/keycloak-ADFS-OIDC.html

      解决方案包括在令牌中返回您想要的声明,而不是尝试通过 userInfo 获取该信息,因为正如 Tosh 所说,返回 only subject claim.

      Microsoft 官方文档,shows how to put the claims in your token,但我只在上面提到的博客中发现了一些技巧(尽管完全理解后,我在 Microsoft 文档中看到了所有内容)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-13
        相关资源
        最近更新 更多