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

多租户Django应用Azure AD认证异常:AuthCanceled错误排查

问题解决:外部租户Azure AD登录触发AuthCanceled及400 Token请求错误

问题核心

已部署的Django+Nginx+MySQL应用中,Azure认证、Graph/EWS邮件功能正常,开发/生产环境的redirect URI均可正常工作,但**外部租户账号(已添加至宿主AD并分配访问角色)**完成MFA后,在/social-auth/complete/azuread-oauth2/路径触发AuthCanceled异常(提示“Authentication process canceled”),同时请求https://login.microsoftonline.com/common/oauth2/token返回400 Bad Request错误。

配置问题分析(针对提供的aad.config.json)

给出的配置存在几个关键错误:

  • authority路径错误:client.authority不应指向token请求端点,而应是多租户的基础授权端点
  • redirect_uri未配置:设置为null会导致认证流程无法正确回调
  • scopes为空:缺少基础认证所需的权限范围,导致token请求无效

修正后的配置示例

{
    "type": {
        "client_type": "CONFIDENTIAL",
        "authority_type": "MULTI_TENANT",
        "framework": "DJANGO"
    },
    "client": {
        "authority": "https://login.microsoftonline.com/common/"
    },
    "auth_request": {
        "redirect_uri": "https://your-production-domain.com/social-auth/complete/azuread-oauth2/",
        "scopes": ["openid", "email", "profile"],
        "response_type": "code"
    },
    "flask": null,
    "django": {
        "id_web_configs": "MS_ID_WEB_CONFIGS",
        "auth_endpoints": {
            "prefix": "auth",
            "sign_in": "sign_in",
            "edit_profile": "edit_profile",
            "redirect": "redirect",
            "sign_out": "sign_out",
            "post_sign_out": "post_sign_out"
        }
    }
}

额外检查项

  • 开发环境适配:将redirect_uri替换为开发环境的地址,比如http://localhost:8000/social-auth/complete/azuread-oauth2/,确保和Azure AD应用注册中配置的redirect URI完全一致(包括协议、域名、路径)
  • Azure AD应用注册设置:确认应用的“账户类型”设置为任何组织目录中的账户和个人Microsoft账户,匹配配置中的MULTI_TENANT类型
  • 权限分配验证:外部租户账号在宿主AD中分配的角色需包含User.Read等基础认证权限,确保能正常获取用户信息
  • social-auth配置对齐:检查Django的social-auth配置中,Azure AD provider的REDIRECT_URI是否和aad.config.json中的设置一致,避免回调路径冲突

内容的提问来源于stack exchange,提问作者Vinnie Esposito

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:22:37