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,
}),
]