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

单租户Entra ID对接@sidebase/nuxt-auth配置报错及方案咨询

问题:@sidebase/nuxt-auth对接Entra ID单租户认证报错AADSTS50194

报错信息:

AADSTS50194: Application 'app guid'(app name) is not configured as a multi-tenant application. Usage of the /common endpoint is not supported for such applications created after '10/15/2018'. Use a tenant-specific endpoint or configure the application to be multi-tenant.

当前配置代码

Auth Handler配置

import { NuxtAuthHandler } from '#auth'
import AzureADProvider from "next-auth/providers/azure-ad";

const runtimeConfig = useRuntimeConfig()

export default NuxtAuthHandler({
    pages: {
        signIn: '/login'
    },
    secret: runtimeConfig.authSecret,
    providers: [
        AzureADProvider.default({
            clientId: runtimeConfig.public.azureAdClientId,
            clientSecret: runtimeConfig.AzureAdClientSecret,
            tenantId: runtimeConfig.public.AzureAdTenantId,
            authorization: {
                url: `https://login.microsoftonline.com/${runtimeConfig.public.azureAdTenantId}/oauth2/v2.0/authorize`,
                params: {
                    scope: "openid profile email",
                }
            },
            token: {
                url: `https://login.microsoftonline.com/${runtimeConfig.public.azureAdTenantId}/oauth2/v2.0/token`
            },
        }),        
    ],
})

nuxt.config.ts中的Auth配置

auth: {
    isEnabled: true,
    globalAppMiddleware: true,
    disableServerSideAuth: false,
    originEnvKey: 'NUXT_AUTH_ORIGIN',
    baseURL: 'http://localhost:3000/api/auth',
    provider: {
      type: 'authjs',
      trustHost: false,
      defaultProvider: 'azure-ad',
      addDefaultCallbackUrl: true,
    },
    sessionRefresh: {
      enablePeriodically: true,
      enableOnWindowFocus: true,
    }
  },

Entra ID应用注册概览

Entra ID应用注册概览

提问

针对单租户场景,正确的配置方案是什么?


解决方案:单租户场景下@sidebase/nuxt-auth对接Entra ID的正确配置

报错核心原因是Azure AD Provider仍在默认使用/common多租户端点,即使手动指定了tenantId相关URL,也可能因变量名拼写错误或Provider内部逻辑覆盖导致配置失效。以下是修正后的完整配置:

1. 修正Auth Handler配置

关键改动:

  • 统一配置变量名大小写,避免读取不到正确的tenantId/密钥
  • 移除手动定义的authorization和tokenURL,让Provider自动生成单租户专属端点
  • 明确指定issuer字段,强制使用单租户颁发者地址
import { NuxtAuthHandler } from '#auth'
import AzureADProvider from "next-auth/providers/azure-ad";

const runtimeConfig = useRuntimeConfig()

export default NuxtAuthHandler({
    pages: {
        signIn: '/login'
    },
    secret: runtimeConfig.authSecret,
    providers: [
        AzureADProvider.default({
            clientId: runtimeConfig.public.azureAdClientId,
            clientSecret: runtimeConfig.azureAdClientSecret, // 统一变量名大小写
            tenantId: runtimeConfig.public.azureAdTenantId,
            issuer: `https://login.microsoftonline.com/${runtimeConfig.public.azureAdTenantId}/v2.0`, // 强制单租户颁发者
            authorization: {
                params: {
                    scope: "openid profile email", // 保留权限配置
                }
            },
        }),        
    ],
})

2. 同步环境变量配置

确保.env文件变量名与代码中读取的完全一致:

# 前端可访问变量
NUXT_PUBLIC_AZURE_AD_CLIENT_ID=你的客户端ID
NUXT_PUBLIC_AZURE_AD_TENANT_ID=你的租户ID

# 后端专用变量(不可暴露给前端)
AZURE_AD_CLIENT_SECRET=你的客户端密钥
NUXT_AUTH_SECRET=你的Auth密钥(可通过`openssl rand -hex 32`生成)
NUXT_AUTH_ORIGIN=http://localhost:3000

3. 验证Entra ID应用注册

从截图确认单租户配置后,补充检查:

  • 认证页面:添加重定向URI http://localhost:3000/api/auth/callback/azure-ad
  • API权限页面:添加openid、profile、email权限并完成管理员同意

4. nuxt.config.ts优化(可选)

简化配置并调整信任主机设置:

auth: {
    isEnabled: true,
    globalAppMiddleware: true,
    disableServerSideAuth: false,
    originEnvKey: 'NUXT_AUTH_ORIGIN',
    baseURL: '/api/auth', // 简化为相对路径
    provider: {
      type: 'authjs',
      trustHost: true, // 本地开发建议设为true,生产环境按需调整
      defaultProvider: 'azure-ad',
      addDefaultCallbackUrl: true,
    },
    sessionRefresh: {
      enablePeriodically: true,
      enableOnWindowFocus: true,
    }
  },

核心原理

NextAuth.js的AzureADProvider未明确指定tenantId或issuer时,会默认使用/common多租户端点。单租户应用必须强制指定tenantId,让Provider生成https://login.microsoftonline.com/你的租户ID/...格式的专属端点,才能规避AADSTS50194错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:22:19