Spring Boot Web应用配置Azure AD认证时出现AADSTS50011错误
问题根因
AADSTS50011报错的核心判定规则是:Azure AD会逐字符比对授权请求中携带的redirect_uri参数,与应用登记的所有重定向URI配置,只要存在任意字符偏差就会触发报错。
当前场景下的核心偏差为:应用实际生成的回调地址为http://localhost:8080/login/oauth2/code/,与Azure侧登记的http://localhost:8080/login/oauth2/code/azure相比,缺失了末尾的/azure段,本质是Spring Security拼接重定向URI时,未正确获取到Azure AD对应的客户端注册ID(registrationId)。
排查与解决步骤
- 检查自定义安全配置类的
oauth2Login配置段- 移除所有手动重写回调端点路径的代码(例如
redirectionEndpoint().baseUri(...)类配置),使用Spring Security默认回调路径规则/login/oauth2/code/{registrationId}即可 - 若必须自定义回调路径,确保路径模板中包含
{registrationId}占位符,避免拼接后丢失注册ID段
- 移除所有手动重写回调端点路径的代码(例如
- 核对配置文件项
- 确认Azure AD Starter的配置项统一使用
spring.cloud.azure.active-directory.*前缀,无遗漏必填的租户ID、客户端ID、客户端密钥配置 - 未在
spring.security.oauth2.client.registration.*配置段下手动覆盖Azure客户端的回调地址,避免自动生成的标准地址被替换
- 确认Azure AD Starter的配置项统一使用
- 核对依赖与Bean定义
- 不要在项目中手动定义ID非
azure的OAuth2客户端注册Bean,这类自定义Bean会覆盖Azure AD Starter自动生成的注册配置,导致注册ID匹配异常 - 避免混用不同版本的Azure Spring Boot Starter与Spring Security依赖,防止自动配置逻辑失效
- 不要在项目中手动定义ID非
- 结果校验
- 以debug模式启动应用,从启动日志的客户端注册列表中确认:对应Azure AD的注册ID为
azure,自动生成的回调地址完全等于http://localhost:8080/login/oauth2/code/azure - 确保Azure AD应用登记的重定向URI与应用实际生成的地址逐字符完全匹配,不存在http/https协议偏差、端口偏差、路径大小写偏差、末尾斜杠差异
- 以debug模式启动应用,从启动日志的客户端注册列表中确认:对应Azure AD的注册ID为
内容的提问来源于stack exchange,提问作者Billy Bolton
相关产品推荐
相关产品推荐

