【问题标题】:401 when calling UserInfo using ADFS 4.0 and OpenID Connect使用 ADFS 4.0 和 OpenID Connect 调用 UserInfo 时出现 401
【发布时间】:2017-04-27 13:56:22
【问题描述】:

我已经成功地创建了一个新的应用程序组,其中包含一个服务器应用程序以及一个 Web API,并且 OpenID Connect 协议可以正常工作,直到我尝试调用 UserInfo。依赖方标识符与服务器应用程序的客户端 ID 相同的 GUID(根据我在线阅读的示例)。尝试调用 UserInfo 时出现以下错误:

WWW-Authenticate: Bearer error="invalid_token", error_description="MSIS9921: Received invalid UserInfo request. Audience 'microsoft:identityserver:21660d0d-93e8-45db-b770-45db974d432d' in the access token is not same as the identifier of the UserInfo relying party trust 'urn:microsoft:userinfo'."

任何帮助将不胜感激。

【问题讨论】:

标签: adfs openid-connect windows-server-2016


【解决方案1】:

我最近在使用 ADFS 和 ASP.NET Core OpenIDConnect 提供程序时也遇到了这个错误。就我而言,禁用 UserInfo 请求完全解决了这个问题:

var openIdOptions = new OpenIdConnectOptions
{
  ...
  GetClaimsFromUserInfoEndpoint = false
};

执行此操作后,我仍然拥有我的应用所需的声明 - 电子邮件、SID、姓名等。我确信在某些情况下这不起作用,但很高兴知道您可能不需要 /用户信息。我仍然想知道为什么从 ADFS 返回的令牌不能用于调用 /userinfo,以及如何在 ASP.NET OpenIDConnect 提供程序中修复它。

【讨论】:

  • 我找到了相同的分辨率,但现在我想使用带有访问令牌的 UserInfo 端点 offline 来监视用户的属性(特别是 - 它们仍然在IP),所以我想弄清楚如何让它再次工作......
  • 我也很想知道如何进行这项工作。 Spring 有一些不错的库,可以与其他 OIDC 提供程序“正常工作”。避免 /userinfo 端点需要一些努力
【解决方案2】:

只需相应地设置资源:

options.Resource = "urn:microsoft:userinfo";

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 2017-02-09
    • 2018-10-21
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2014-12-12
    相关资源
    最近更新 更多