我正在尝试使用 OIDC 和授权代码流来实现 Web 应用程序。我使用OIDC Core 1.0 规范作为工作方式的参考。我正在尝试针对 Microsoft ADFS 2016 服务器进行此操作,该服务器通常声称支持 OIDC。
我已经设法让工作流程大部分工作,但有一个例外。当我调用令牌端点以将我的授权代码交换为 anaccess_token
和 anid_token
时,我希望通过name
声明获取用户的可显示名称。但我从 ADFS 收到的令牌中不存在该声明。
当我重定向到 ADFS 服务器的授权端点时,我将其传递scope
给openid profile
. 根据OIDC 规范的第 5.4 节profile
,范围应导致name
请求声明。但我没有收到这种说法。我确实得到了一些我可以考虑使用的其他声明(即upn
或unique_name
),但我正在努力尽可能地与标准保持一致。
这是否意味着 ADFS 2016 在该特定领域不符合 OIDC 规范?还是我误读了我在这里引用的规范部分?