ADFS 4.0(2016)OpenID Connect userinfo端点在提供访问令牌

时间:2017-02-09 08:40:45

标签: adfs openid-connect userinfo

任何想法为什么会这样。我已经配置了服务器应用程序和Web API以及ID令牌,访问令牌和发出刷新令牌。但是,调用userinfo端点会返回带有以下标头消息的401:

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

根据http://jwt.io

,访问令牌有效
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjVVbEw5a1JocDJNLUVzTDlBRDJOQ055aHZtdyJ9.eyJhdWQiOiJ1cm46bWljcm9zb2Z0OnVzZXJpbmZvIiwiaXNzIjoiaHR0cDovL3Rlc3Rsb2dpbi51bm9wcy5vcmcvYWRmcy9zZXJ2aWNlcy90cnVzdCIsImlhdCI6MTQ4NjYyOTUxOSwiZXhwIjoxNDg2NjMzMTE5LCJhcHB0eXBlIjoiQ29uZmlkZW50aWFsIiwiYXBwaWQiOiJrbnVkIiwiYXV0aG1ldGhvZCI6InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0IiwiYXV0aF90aW1lIjoiMjAxNy0wMi0wOVQwODozMjo1Ny4xNDZaIiwidmVyIjoiMS4wIiwic2NwIjoib3BlbmlkIiwic3ViIjoiM2krUGlyRncwSVlkdDVzTVNKQlpKbjVOTXZVWXZVdyt2WHI2Ujd1N0dBZz0ifQ.ajKtSk0xQE1crJkIA-lMLBZj2DtYE6xQo-Stmevh4pOGX17GEePbAFP-g6qPUwtGT_whVj74wRpSlyTBscp2JDsp_CW2E6BsTUI810S6jYRVjkYGxL1QcL1KoKJ8wyYKcxsCeOY2IUKNPnJOxV53Rs8E9EvJgjcsjTJHQw5Z_zC43dsTfCZvVfGrwJ3nn6BGxhIE_bEXvrWdgmg49V7-KK2kVDbDwJGr1iLpqU88-bkHdjGCIuc8XKX5pobWWlcyBmR_dpACM6Tu-d8jYJ_8mbof-eZrqn8YS61rgvRAhAAONyDklWcPgiYnhcMQVHZoCME-rVTjI6LDDY2czhL0rg

2 个答案:

答案 0 :(得分:1)

这个问题是很久以前问的,但是让我分享我的经验。 如果要执行ADFS 4.0 userInfo端点(win服务器2016),希望获得用户配置文件,但是我遇到的是,它仅返回Sub属性 例如:

{
    "sub": "MpR57wSIQz1kiR2uUMrkCQadbgDoztWmMV863Dugdso="
}

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

用于执行userinfo

例如:

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

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

  

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

答案 1 :(得分:0)

我只做了一次,所以我还没有太多建议。除非有更多细节,否则我无法提出任何建议。

你应该尝试从AD FS方面获得更多证据。使用

启用调试日志
wevtutil sl "ad fs tracing/debug" /l:5 /e:true

执行repro,然后按如下方式禁用日志。

wevtutil sl "ad fs tracing/debug" /e:false

然后使用

导出日志以进行查看
wevtutil epl "ad fs tracing/debug" c:\temp\userinfoerr.evtx

在事件查看器中打开该事件日志,并查看并查看有关验证JWT的其他错误。