You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:07:11