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