NextJS14+next-auth集成Microsoft Entra ID时AADSTS700025错误求助
解决方案:NextAuth集成Microsoft Entra ID时AADSTS700025错误
错误核心原因
你的Microsoft Entra ID应用注册为公共客户端(如SPA、移动类应用),但NextAuth配置中却传入了clientSecret。公共客户端无需也不能使用客户端密钥,因此触发AADSTS700025错误。
修复步骤
1. 确认Entra ID客户端类型
- 登录Azure门户,找到你的Entra ID应用注册
- 进入「概述」页面,查看「客户端类型」:如果显示「公共客户端(移动和桌面)」或「单页应用」,则属于公共客户端范畴
2. 调整NextAuth配置
移除配置中的clientSecret字段,确保授权参数匹配公共客户端要求:
import NextAuth from "next-auth"; import MicrosoftEntraID from "next-auth/providers/microsoft-entra-id"; export const authOptions = { providers: [ MicrosoftEntraID({ clientId: process.env.AZURE_AD_CLIENT_ID, tenantId: process.env.AZURE_AD_TENANT_ID, // 直接删除clientSecret字段 authorization: { params: { response_type: "code", redirect_uri: `${process.env.NEXTAUTH_URL}/api/auth/callback/microsoft-entra-id`, }, }, }), ], }; export default NextAuth(authOptions);
3. 验证Entra ID重定向URI设置
- 在Entra ID应用注册的「身份验证」页面,添加正确的回调URI:
- 对于NextJS服务器端应用,选择「Web」类型,填入
http://localhost:3000/api/auth/callback/microsoft-entra-id(本地开发)或生产环境域名对应的地址 - 确保重定向URI与NextAuth配置中的
redirect_uri完全一致
- 对于NextJS服务器端应用,选择「Web」类型,填入
4. 若需使用机密客户端(可选)
如果你实际需要服务器端的机密客户端认证:
- 在Entra ID应用注册的「概述」页面,点击「修改应用程序类型」,改为「机密客户端(Web应用/API)」
- 进入「证书和密码」页面,生成新的客户端密钥,将其填入NextAuth配置的
clientSecret字段
内容的提问来源于stack exchange,提问作者Haifeng Zhang
相关产品推荐
相关产品推荐

