Microsoft Entra ID
💡
Microsoft 已将 Azure AD 重命名为 Microsoft Entra ID,有关新名称的更多信息,请参见 此处。
资源
设置
回调 URL
https://example.com/api/auth/callback/microsoft-entra-id
环境变量
AUTH_MICROSOFT_ENTRA_ID_ID
AUTH_MICROSOFT_ENTRA_ID_SECRET
AUTH_MICROSOFT_ENTRA_ID_ISSUER
配置
/auth.ts
import NextAuth from "next-auth"
import MicrosoftEntraID from "next-auth/providers/microsoft-entra-id"
const { handlers, auth, signIn, signOut } = NextAuth({
providers: [
MicrosoftEntraID({
clientId: process.env.AUTH_MICROSOFT_ENTRA_ID_ID,
clientSecret: process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET,
issuer: process.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER,
}),
],
})
备注
- 仅允许特定 Active Directory 用户
- 在 https://entra.microsoft.com/ 中,从左侧栏菜单中选择“身份”。
- 接下来,在左侧菜单中转到“应用注册”,并创建一个新的注册。
- 请特别注意“谁可以使用此应用程序或访问此 API?”
- 这使您可以将访问权限限定为特定类型的用户帐户
- 仅您的租户、所有 Microsoft 租户或所有 Microsoft 租户和公共 Microsoft 帐户(Skype、Xbox、Outlook.com 等)。
- 当提示输入重定向 URL 时,请使用
https://yourapplication.com/api/auth/callback/microsoft-entra-id
或用于开发的https://127.0.0.1:3000/api/auth/callback/microsoft-entra-id
。 - 创建应用注册后,在“客户端凭据”下创建您的客户端密钥。
- 现在复制您的
- 应用程序(客户端)ID
- 客户端密钥(值)
- 颁发者
在 .env.local
中创建以下条目
AUTH_MICROSOFT_ENTRA_ID_ID=<copy Application (client) ID here>
AUTH_MICROSOFT_ENTRA_ID_SECRET=<copy generated client secret value here>
AUTH_MICROSOFT_ENTRA_ID_ISSUER=<copy the issuer here>
这将默认使用 common
授权端点来设置租户。 有关更多详细信息,请参见此处。
- Microsoft Entra 会将个人资料图片以 ArrayBuffer 形式返回,而不是简单地返回到图片的 URL,因此我们的提供商会将其转换为 base64 编码的图片字符串并返回该字符串。请参见:https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples。默认图片大小为 48x48,以避免在将会话保存为 JWT 时 出现空间不足的情况。