跳至内容
从 NextAuth.js v4 迁移?阅读 我们的迁移指南.

Azure AD 提供者

⚠️

已弃用 - Microsoft 已将此产品重命名为 Microsoft Entra ID,所有支持工作都将转移到该 IdP。我们建议您也迁移到使用该提供者。

资源

设置

回调 URL

https://example.com/api/auth/callback/azure-ad

环境变量

AUTH_AZURE_AD_ID
AUTH_AZURE_AD_SECRET
AUTH_AZURE_AD_TENANT_ID

配置

/auth.ts
import NextAuth from "next-auth"
import AzureAd from "next-auth/providers/azure-ad"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [AzureAd],
})

要允许特定 Active Directory 用户访问:

  • https://portal.azure.com/ 中搜索“Azure Active Directory”,并选择您的组织。
  • 接下来,在左侧菜单中转到“应用程序注册”,并创建一个新应用程序。
  • 请密切注意“谁可以使用此应用程序或访问此 API?”
    • 这使您可以将访问权限范围限定为特定类型的用户帐户
    • 仅您的租户、所有 Azure 租户或所有 Azure 租户和个人 Microsoft 帐户(Skype、Xbox、Outlook.com 等)
  • 当提示输入重定向 URL 时,请使用 https://yourapplication.com/api/auth/callback/azure-ad 或在开发环境中使用 https://127.0.0.1:3000/api/auth/callback/azure-ad
  • 创建应用程序注册后,在“客户端凭据”下创建您的客户端密钥。
  • 单击“API 权限”,然后单击“授予对...的管理员同意”以允许 User.Read 访问您的租户。
  • 现在复制您的
    • 应用程序(客户端)ID
    • 目录(租户)ID
    • 客户端密钥(值)

.env.local 中创建以下条目

AUTH_AZURE_AD_CLIENT_ID=<copy Application (client) ID here>
AUTH_AZURE_AD_CLIENT_SECRET=<copy generated client secret value here>
AUTH_AZURE_AD_TENANT_ID=<copy the tenant id here>

这将默认使用 common 授权端点作为租户。 有关更多详细信息,请参见此处

如果您希望您的应用程序不仅接收来自租户的授权请求,还接收来自所有 Microsoft 用户的授权请求,只需在 AUTH_AZURE_AD_TENANT_ID 中添加“common”,这将“跳过”租户授权。

AUTH_AZURE_AD_TENANT_ID=common

Azure AD 在 ArrayBuffer 中返回个人资料图片,而不是直接返回图片的 URL,因此我们的提供者将其转换为 base64 编码的图片字符串并返回该字符串。请参见:https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0#examples。默认图片大小为 48x48,以避免 在将会话保存为 JWT 时出现空间不足的情况

pages/api/auth/[...nextauth].js 中找到或添加 AzureAD 条目

import AzureADProvider from "next-auth/providers/azure-ad"
 
providers: [
  AzureADProvider({
    clientId: process.env.AZURE_AD_CLIENT_ID,
    clientSecret: process.env.AZURE_AD_CLIENT_SECRET,
    tenantId: process.env.AZURE_AD_TENANT_ID,
  }),
]
Auth.js © Balázs Orbán 和团队 -2024