この記事では、 OpenID Connect (OIDC) 仕様に準拠するカスタム認証プロバイダーを使用するように Azure App Service または Azure Functions を構成する方法について説明します。 OIDC は、多くの ID プロバイダーが使用する業界標準です。 アプリに OIDC ID プロバイダーを使用するために、仕様の詳細を理解する必要はありません。
1 つ以上の OIDC プロバイダーを使用するようにアプリを構成できます。 各 OIDC プロバイダーに、アプリ構成で一意のフレンドリ名を付ける必要があります。 既定のリダイレクト ターゲットとして使用できるプロバイダーは 1 つのみです。
OIDC ID プロバイダーにアプリを登録する
プロバイダーでは、 <app-url>/.auth/login/<provider-name>/callback形式でリダイレクト URI を指定して、アプリケーションを登録する必要があります。 リダイレクト URI で、 <app-url> をアプリの URL に置き換え、 <provider-name> を Azure の OpenID プロバイダーに付与するフレンドリ名に置き換えます。
注
この名前に基づいて App Service アプリケーション設定が作成され、アプリケーション設定でハイフンがサポートされていないため、OpenID プロバイダー名にハイフン -を含めることはできません。 代わりにアンダースコア _ を使用できます。
アプリを登録するときは、アプリケーションの クライアント ID と クライアント シークレット を収集する必要があります。 Azure アプリ構成で使用するこれらの値を書き留めます。
注
- クライアント シークレットの値は重要なセキュリティ資格情報です。 このシークレットを他のユーザーと共有したり、クライアント アプリケーション内で配布したりしないでください。
- ユーザーが対話型の承認コード フローを使用してアクセス トークンを取得する場合は、アプリでクライアント シークレットを提供する必要があります。 アクセス トークンを取得したくない場合は、シークレットを使用する必要はありません。
プロバイダーの OIDC メタデータも必要です。 このメタデータは、多くの場合、プロバイダーの発行者 URL に/.well-known/openid-configurationを追加することによって形成されたパスで取得できる構成メタデータ ドキュメントで公開されます。
構成メタデータ ドキュメントにアクセスできない場合は、次の値を個別に取得します。
- 発行者の URL。
issuerとして表示される場合があります。 -
OAuth 2.0 承認エンドポイント。
authorization_endpointと表示されることがあります。 -
OAuth 2.0 トークン エンドポイント。
token_endpointと表示されることがあります。 -
OAuth 2.0 JSON Web キー セット ドキュメントの URL。
jwks_uriとして表示される場合があります。
各 ID プロバイダーは、登録手順を完了する方法に関する手順を提供する必要があります。 プロバイダーによっては、構成または指定した値を使用するために、追加の手順が必要になる場合があります。 たとえば、Apple は JSON Web トークン (JWT) を作成するために使用する秘密キーを提供します。このキーは、アプリ構成でシークレットとして入力します。 詳細については、「 クライアント シークレットの作成」を参照してください。
アプリケーションにプロバイダー情報を追加する
Azure で OpenID Connect プロバイダーを構成するには、次の手順に従います。
アプリの Azure portal ページで、左側のナビゲーション メニューの [設定] で [認証] を選択します。
[認証] ページで、[ID プロバイダーの追加] を選択するか、[ID プロバイダー] セクションで [プロバイダーの追加] を選択します。
[ ID プロバイダーの追加 ] ページで、プロバイダーとして OpenID Connect を選択します。
OpenID プロバイダー名には、OIDC プロバイダーに対して選択したフレンドリ名を入力します。
OpenID Connect プロバイダーの構成で、ID プロバイダーのメタデータ ドキュメントがある場合は、[メタデータ] エントリの [ドキュメント URL] を選択します。
メタデータ ドキュメントがない場合は、[ メタデータの入力] を選択し、ID プロバイダーの各 URL を適切なフィールドに入力します。
[アプリの登録] で、クライアント ID とクライアント シークレットに対して前に収集した値を指定します。
これがアプリケーションの最初の ID プロバイダーである場合は、 App Service 認証設定 セクションに、認証されていない要求に対するアプリケーションの応答方法などの設定が表示されます。 既定の選択では、新しいプロバイダーでサインインするすべての要求がリダイレクトされます。
アプリの ID プロバイダーを既に構成している場合、このセクションは表示されません。 必要に応じて、後で設定をカスタマイズできます。
[ 追加] を選択して、ID プロバイダーの設定を完了します。
[認証] ページで、<oidc_friendly_name> (カスタム プロバイダー) が [ID プロバイダー] セクションに表示されるようになりました。 プロバイダーの設定を編集するには、[ 編集] の下にある鉛筆アイコンを選択します。
[ 認証設定] セクションには、認証されていない要求に対するアプリケーションの応答方法などの設定が表示されます。 これらの設定は、[認証設定] の横にある [編集] を選択して編集できます。 オプションの詳細については、「 認証フロー」を参照してください。
アプリケーション シークレットは、<oidc_friendly_name>_AUTHENTICATION_SECRETという名前のスロット固定アプリケーション設定として格納されます。 この設定は、ポータルのアプリの [環境変数] ページの [アプリの設定] タブで確認できます。 Azure Key Vault でシークレットを管理する場合は、 Key Vault 参照を使用するように設定を編集できます。
注
スコープを追加するには、アプリケーションがプロバイダーの登録ポータルで持つアクセス許可を定義します。 アプリは、サインイン時にこれらのアクセス許可を使用するスコープを要求できます。
- Azure には、
openid、profile、およびemailスコープが必要です。 少なくともこれらのスコープを使用して、ID プロバイダーでアプリの登録を構成してください。 -
audスコープは、構成されたクライアント ID と同じである必要があります。このプロバイダーの許可対象ユーザーを構成することはできません。