ADFS 4.0 (2016) OpenID Connect 用户信息端点在提供访问 token 时返回 401

标签 adfs openid-connect userinfo

知道这是为什么。我已经配置了一个服务器应用程序和一个 Web API,并发布了一个 ID token 、访问 token 和刷新 token 。但是,调用 userinfo 端点会返回带有以下 header 消息的 401:

WWW-Authenticate →Bearer error="invalid_token", error_description="MSIS9920: 收到无效的 UserInfo 请求。请求中的访问 token 无效。"

访问 token 根据 http://jwt.io 有效

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjVVbEw5a1JocDJNLUVzTDlBRDJOQ055aHZtdyJ9.eyJhdWQiOiJ1cm46bWljcm9zb2Z0OnVzZXJpbmZvIiwiaXNzIjoiaHR0cDovL3Rlc3Rsb2dpbi51bm9wcy5vcmcvYWRmcy9zZXJ2aWNlcy90cnVzdCIsImlhdCI6MTQ4NjYyOTUxOSwiZXhwIjoxNDg2NjMzMTE5LCJhcHB0eXBlIjoiQ29uZmlkZW50aWFsIiwiYXBwaWQiOiJrbnVkIiwiYXV0aG1ldGhvZCI6InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0IiwiYXV0aF90aW1lIjoiMjAxNy0wMi0wOVQwODozMjo1Ny4xNDZaIiwidmVyIjoiMS4wIiwic2NwIjoib3BlbmlkIiwic3ViIjoiM2krUGlyRncwSVlkdDVzTVNKQlpKbjVOTXZVWXZVdyt2WHI2Ujd1N0dBZz0ifQ.ajKtSk0xQE1crJkIA-lMLBZj2DtYE6xQo-Stmevh4pOGX17GEePbAFP-g6qPUwtGT_whVj74wRpSlyTBscp2JDsp_CW2E6BsTUI810S6jYRVjkYGxL1QcL1KoKJ8wyYKcxsCeOY2IUKNPnJOxV53Rs8E9EvJgjcsjTJHQw5Z_zC43dsTfCZvVfGrwJ3nn6BGxhIE_bEXvrWdgmg49V7-KK2kVDbDwJGr1iLpqU88-bkHdjGCIuc8XKX5pobWWlcyBmR_dpACM6Tu-d8jYJ_8mbof-eZrqn8YS61rgvRAhAAONyDklWcPgiYnhcMQVHZoCME-rVTjI6LDDY2czhL0rg

最佳答案

很久以前就有人问过这个问题,但让我分享一下我的经验。 如果您想执行 ADFS 4.0 userInfo 端点(win server 2016)以希望获得用户配置文件,但我所经历的是它仅返回 Sub 属性 例如:

{
    "sub": "MpR57wSIQz1kiR2uUMrkCQadbgDoztWmMV863Dugdso="
}

对于任何尝试 UserInfo 端点的人,您需要修改您的应用程序组,添加带有 Identitfier 的 api https://adfs.example.com/adfs/userinfo 并在客户端权限选项卡上勾选 openId。

用于执行用户信息

例如:

curl -X GET \
  https://adfs.example.com/adfs/userinfo \
  -H 'Authorization: Bearer ACCESS_TOKEN

注意:在您的获取访问 token 代码中,您需要传递您的资源 = urn:microsoft:userinfo

The ADFS userinfo endpoint always returns the subject claim as specified in the OpenID standards. AD FS does not provide additional claims requested via the UserInfo endpoint. If you need additional claims in ID token, refer to Custom ID Tokens in AD FS.

关于ADFS 4.0 (2016) OpenID Connect 用户信息端点在提供访问 token 时返回 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42131776/

相关文章:

oauth-2.0 - OpenID Connect 用户信息端点使用

single-sign-on - 在 Office 365 中使用第三方身份提供者

saml-2.0 - 添加两个具有相同证书 ADFS (SAML2.0) 的声明提供者

java - j2ee 和 ADFS 之间的集成

azure - AADSTS50001 : Getting exception while trying to access token from Azure AD by using ADAL from Console client

openid-connect - 为什么 IdentityTokenLifetime 默认为 300 秒?

keycloak - 节点 oidc-provider(用于 keycloak)

c# - 登录后使用 oidc 和浏览器后退按钮的带有 azure 广告的 netcore 导致异常