知道这是为什么。我已经配置了一个服务器应用程序和一个 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/