FastAPI集成Azure认证遇AADSTS50011:重定向URI不匹配问题求助
解决AADSTS50011错误的指导
错误截图提示:AADSTS50011,回复地址与为应用程序配置的回复地址不匹配;另一张截图为Azure门户中应用注册的重定向URI配置界面。
AADSTS50011错误的核心是Azure AD收到的重定向URI(redirect URI)与应用注册中配置的URI完全不匹配,即便你认为已配置正确,可按以下步骤排查:
1. 核对重定向URI的精确匹配
Azure AD对redirect URI的匹配是大小写敏感、完全精确的,需逐一确认:
- 代码中
swagger_ui_oauth2_redirect_url='/docs'对应的完整URI是http://localhost:8000/docs,需确保这个地址已准确添加到Azure应用注册的重定向URI列表中 - 注意末尾斜杠:
/docs和/docs/会被判定为不同的URI - 本地测试时,统一使用
http://localhost:8000而非127.0.0.1:8000,除非你同时在应用注册里配置了后者
2. 区分客户端应用与API应用的配置
你的场景是FastAPI结合Swagger UI做OAuth2授权,重点要关注客户端应用的配置:
- 代码
swagger_ui_init_oauth中的clientId必须对应Azure AD中注册的客户端应用ID(而非API应用ID),该客户端应用的重定向URI必须包含Swagger的回调地址http://localhost:8000/docs - API应用的重定向URI配置不影响Swagger的授权流程,无需在此处纠结
3. 补全代码中的遗漏配置
从你的代码片段看,存在几处关键遗漏:
- 未初始化
azure_scheme实例,但在startup事件和接口依赖中直接使用,需补充:azure_scheme = SingleTenantAzureAuthorizationCodeBearer( tenant_id=settings.TENANT_ID, client_id=settings.APP_CLIENT_ID, scopes=settings.SCOPES ) swagger_ui_init_oauth中的clientId应替换为settings.OPENAPI_CLIENT_ID(即客户端应用的ID),避免硬编码导致ID不匹配- CORS中间件未注册,需添加:
app.add_middleware( CORSMiddleware, allow_origins=settings.BACKEND_CORS_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )
4. 清除浏览器缓存与会话
浏览器可能缓存了旧的授权会话信息,导致redirect URI校验失败:
- 使用浏览器隐私模式(无痕窗口)重新测试
- 清除当前域名下的所有Cookie和缓存
5. 验证Azure应用注册的授权类型
登录Azure门户,进入对应客户端应用的身份验证页面:
- 确认已勾选授权代码流(因为你启用了
usePkceWithAuthorizationCodeGrant: True) - 检查重定向URI的类型是否为
Web(针对Swagger这类Web应用场景)
内容的提问来源于stack exchange,提问作者Intern
相关产品推荐
相关产品推荐

