コンテンツへスキップ
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://#: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 はプロファイル写真を画像への URL ではなく ArrayBuffer で返すため、プロバイダーはそれを base64 エンコードされた画像文字列に変換して代わりに返します。参照: https://docs.microsoft.com/ja-jp/graph/api/profilephoto-get?view=graph-rest-1.0#examples。セッションが JWT として保存されている場合に スペース不足にならないように、デフォルトの画像サイズは 48x48 です。

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 and Team -2024