首页 > 解决方案 > ADFS 2016 支持 OIDC 的“配置文件”范围?

问题描述

我正在尝试使用 OIDC 和授权代码流来实现 Web 应用程序。我使用OIDC Core 1.0 规范作为工作方式的参考。我正在尝试针对 Microsoft ADFS 2016 服务器进行此操作,该服务器通常声称支持 OIDC。

我已经设法让工作流程大部分工作,但有一个例外。当我调用令牌端点以将我的授权代码交换为 anaccess_token和 anid_token时,我希望通过name声明获取用户的可显示名称。但我从 ADFS 收到的令牌中不存在该声明。

当我重定向到 ADFS 服务器的授权端点时,我将其传递scopeopenid profile. 根据OIDC 规范的第 5.4 节profile,范围应导致name请求声明。但我没有收到这种说法。我确实得到了一些我可以考虑使用的其他声明(即upnunique_name),但我正在努力尽可能地与标准保持一致。

这是否意味着 ADFS 2016 在该特定领域不符合 OIDC 规范?还是我误读了我在这里引用的规范部分?

标签: oauth-2.0openid-connectadfs4.0

解决方案


given_name与名称相关的标准声明通常family_name包含在第 18 节中,我总是尝试根据这些值对应用程序进行编码,因此您的担忧是正确的。

作为消费者,您还应该能够选择发出这些声明的地点。但是,提供者通常不完全符合标准,因此您可能需要稍微调整您的代码。

这是一篇关于自定义 ADFS 声明的MS 文章,尽管它可能无法让您清楚地了解声明应该如何工作。

更多信息

概括地说,以下是 OAuth 系统发出声明的方式:

  • 用户进行身份验证(也可以授予同意)
  • 授权服务器在其数据库中记录此“委托”以及相关的声明和范围
  • 应用程序可以控制声明的公开方式和位置,例如哪些令牌或端点包含它们

有关更多信息,请参阅有关个人身份信息 (PII)的这篇文章- 并了解声明映射器如何在 Curity 系统中工作。

可能是您的 ADFS 提供程序没有让您完全控制,但值得了解设计模式,并尽可能减少令牌中的用户信息。


推荐阅读