Spring Boot WebMVC集成Azure身份认证遇invalid_user_info_response错误
问题排查与解决方案
核心错误分析
你遇到的invalid_user_info_response错误,本质是Spring Security的RestTemplate无法成功请求https://graph.microsoft.com/oidc/userinfo,属于网络连通性或配置异常问题,以下是针对性排查步骤:
1. 检查网络连通性
- 在应用服务器上执行
curl https://graph.microsoft.com/oidc/userinfo,确认是否能正常访问该端点。如果无法连通,排查:- 服务器防火墙/安全组是否放行对
graph.microsoft.com的HTTPS(443端口)请求 - 是否处于代理环境,未配置正确的代理参数
- 服务器防火墙/安全组是否放行对
2. 修正Redirect URI配置
你的redirect-uri配置存在格式错误,Spring OAuth2要求重定向URI必须精确匹配注册ID,修改为:
spring.security.oauth2.client.registration.myapp.redirect-uri=http://localhost:8080/login/oauth2/code/myapp
同时确保Azure AD应用注册的重定向URI列表中已添加上述地址,完全一致。
3. 确认Azure AD权限配置
- 登录Azure门户,找到你的应用注册,进入API权限页面
- 确认
User.Read权限已获取管理员同意(Delegated权限需要管理员同意才能生效,否则无法调用Graph API获取用户信息)
4. 补充Azure Provider的UserInfo配置(可选)
若自动端点发现失效,可手动指定UserInfo相关配置,确保Spring能正确定位端点:
spring.security.oauth2.client.provider.azure.user-info-uri=https://graph.microsoft.com/oidc/userinfo spring.security.oauth2.client.provider.azure.user-name-attribute=name
5. 代理环境下的额外配置
如果应用服务器在代理后运行,需为RestTemplate配置代理,可通过JVM启动参数添加:
-Dhttp.proxyHost=你的代理地址 -Dhttp.proxyPort=代理端口 -Dhttps.proxyHost=你的代理地址 -Dhttps.proxyPort=代理端口
内容的提问来源于stack exchange,提问作者user2566397
相关产品推荐
相关产品推荐

