跳至內容
從 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 權限」,然後按一下「授與管理員同意…」,以允許使用者對您的租用戶的讀取存取權。
  • 現在複製您的
    • 應用程式 (用戶端) 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