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

使用drf-msal-jwt实现Microsoft社交登录时遇unauthorized_client错误

解决Microsoft登录unauthorized_client错误的Azure应用配置修改方案

针对你使用Django + drf-msal-jwt实现Microsoft社交登录时遇到的unauthorized_client错误,结合你的Azure应用manifest配置,以下是具体的修改点:

1. 修正allowPublicClient参数

你的应用是Django后端服务,属于机密客户端,需将allowPublicClient从null改为false:

"allowPublicClient": false,

null值会导致Azure无法正确识别客户端类型,进而触发授权验证失败。

2. 同步回调重定向URI

确保生成跳转链接时指定的redirect_uri,与Azure配置的replyUrlsWithType完全一致。例如,如果你的Django回调端点是http://localhost:8000/api/microsoft/callback,需将其添加到配置中:

"replyUrlsWithType": [
  {
    "url": "http://localhost:8000/api/microsoft/callback",
    "type": "Web"
  },
  {
    "url": "http://localhost:8000/",
    "type": "Web"
  }
]

注意:协议(http/https)、域名、端口、路径必须完全匹配,不能有任何差异。

3. 开启ID Token隐式流(按需)

如果你的登录流程需要获取ID Token来同步用户状态,需开启oauth2AllowIdTokenImplicitFlow:

"oauth2AllowIdTokenImplicitFlow": true,

授权码流本身不需要隐式流,但部分身份验证库依赖此配置完成登录闭环。

4. 补充必要的授权范围

在生成跳转链接的GET API中,确保scope参数包含以下内容:

openid email profile offline_access User.Read

其中:

  • openid、email、profile用于获取用户基本信息
  • offline_access用于获取refresh token,支持后续令牌刷新
  • User.Read用于读取用户资料(与你manifest中的权限配置对应)

5. 验证客户端ID与密钥

确保你的Django配置中使用的client_id是manifest中的appId(de345rft-iok8-42hy-86bb-3124ahhgfts4d),客户端密钥是你在Azure门户中生成的有效密码凭据(与manifest中passwordCredentials的条目对应)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:31:03