集成ADFS WebProvider后调用UserInfo端点返回401的问题咨询
ADFS WebProvider(preview 4.1.0-preview-1.23108.18)调用userinfo接口401问题处理
方案一:设置resource参数适配userinfo接口
当前你拿到的令牌里,resource是应用专属ID(8f238a5c-2dea-42cd-80eb-abf7638fcadd),但ADFS的userinfo接口要求access_token对应的resource必须是urn:microsoft:userinfo,这就是401报错的核心原因。你可以这么调整:
- 在ADFS WebProvider的配置代码里,修改令牌请求参数,明确指定
resource=urn:microsoft:userinfo。这样获取到的access_token就会绑定这个资源标识,再调用userinfo接口就能通过权限校验。 - 调整后,令牌响应里的
resource字段会变成urn:microsoft:userinfo,此时请求userinfo接口就不会返回401了。
方案二:禁用userinfo接口调用
如果你的业务不需要从userinfo接口拿额外数据,直接关掉这个请求就行:
- 在认证流程的代码里,找到触发userinfo接口调用的逻辑,直接注释或删除这部分代码。
- 注意:用户基础信息(比如姓名、邮箱等)已经包含在你成功获取的
id_token里,完全可以从这里提取所需数据,替代userinfo接口的作用。
参考令牌响应
The token response returned by https://[redacted]/adfs/oauth2/token/ was successfully extracted: { "access_token": "[redacted]", "token_type": "bearer", "expires_in": 3600, "resource": "8f238a5c-2dea-42cd-80eb-abf7638fcadd", "refresh_token": "[redacted]", "refresh_token_expires_in": 26751, "scope": "openid", "id_token": "[redacted]" }.
内容的提问来源于stack exchange,提问作者dmkk3r
相关产品推荐
相关产品推荐

