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

Django allauth微软第三方登录回调阶段出现401错误求助

Django Allauth微软登录回调401错误排查方案

问题核心

日志显示获取token时调用https://login.microsoftonline.com/common/oauth2/v2.0/token返回401,说明身份验证在token交换阶段失败,而非授权码获取阶段(授权码已成功返回,回调GET请求状态码200)。

配置问题分析

你的配置存在重复参数冲突和结构错误:

  • 同一应用下同时在根层级和settings内配置了tenant/TENANT、login_url/LOGIN_URL,且租户值不一致(consumers vs common),微软会验证请求的租户与应用注册的租户匹配,这是401的核心原因之一。
  • 根层级的TOKEN_URL、LOGIN_URL等参数不属于allauth微软应用的标准配置结构,应统一放在settings字典内。

修复步骤

1. 修正配置结构与参数一致性

删除重复的根层级参数,将租户、URL等配置统一放入settings,确保租户值与Azure应用注册一致(面向普通用户用consumers,组织用户用对应租户ID或common):

SOCIALACCOUNT_PROVIDERS = {
    "microsoft": {
        "APPS": [
            {
                "client_id": "14bb4",
                "secret": "ed91f8adc68",
                "settings": {
                    "tenant": "consumers",
                    "login_url": "https://login.microsoftonline.com",
                    "graph_url": "https://graph.microsoft.com",
                    "token_url": "https://login.microsoftonline.com/consumers/oauth2/v2.0/token",
                    "authorize_url": "https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize",
                },
                "SCOPE": [
                    "openid",
                    "profile",
                    "email",
                ],
                "OAUTH_PKCE_ENABLED": True,
            }
        ]
    }
}

2. 验证PKCE配置

若开启OAUTH_PKCE_ENABLED,需确保Azure应用注册的认证页面中,「允许公共客户端流」设置为「是」(针对移动/桌面类公共客户端),或确认授权流程支持PKCE。

3. 开启详细日志获取错误详情

在Djangosettings.py中添加日志配置,捕获allauth的调试信息,明确401的具体原因(如密钥错误、租户不匹配、PKCE参数无效等):

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {'class': 'logging.StreamHandler'},
    },
    'loggers': {
        'allauth.socialaccount': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

4. 确认重定向URI匹配

检查Azure应用注册中的重定向URI是否与Django回调地址完全一致,包括协议(HTTP/HTTPS)、端口、路径(如http://localhost:8000/accounts/microsoft/login/callback/),任何细微差异都会导致验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:15:17