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