外部 ID プロバイダーとして OpenID Connect を追加する

適用対象: 次の内容が外部テナントに適用されることを示す白いチェック マーク記号が付いた緑の円。 外部テナント (詳細)

カスタム構成の OpenID Connect (OIDC) ID プロバイダーとのフェデレーションを設定することで、ユーザーがフェデレーション外部プロバイダーの既存のアカウントを使用してアプリケーションにサインアップしてサインインできるようになります。 この OIDC フェデレーションにより、OpenID Connect プロトコルに準拠するさまざまなプロバイダーとの認証が可能になります。

ユーザー フローのサインイン オプションに OIDC ID プロバイダーを追加すると、ユーザーはサインアップして、そのユーザー フローで定義されている登録済みアプリケーションにサインインできます。 これは、OIDC ID プロバイダーの資格情報を使用して行うことができます。 (顧客向けの認証方法と ID プロバイダー の詳細については、こちらを参照してください)。

前提 条件

OpenID Connect ID プロバイダーを設定する

ユーザーを ID プロバイダーにフェデレーションするには、まず、外部テナントからのフェデレーション要求を受け入れるように ID プロバイダーを準備します。 この準備を行うには、リダイレクト URI を追加し、認識されるように ID プロバイダーを登録します。

次の手順に進む前に、次のようにリダイレクト URI を追加します。

https://<tenant-subdomain>.ciamlogin.com/<tenant-ID>/federation/oauth2

https://<tenant-subdomain>.ciamlogin.com/<tenant-subdomain>.onmicrosoft.com/federation/oauth2

ID プロバイダーでのサインインとサインアップを有効にする

ID プロバイダーのアカウントを持つユーザーのサインインとサインアップを有効にするには、Microsoft Entra ID をアプリケーションとして ID プロバイダーに登録する必要があります。 この手順により、ID プロバイダーはフェデレーションのために Microsoft Entra ID を認識してトークンを発行できます。 設定されたリダイレクト URI を使用してアプリケーションを登録します。 ID プロバイダー構成の詳細を保存して、外部テナントにフェデレーションを設定します。

フェデレーション設定

Microsoft Entra 外部 ID で ID プロバイダーとの OpenID Connect フェデレーションを構成するには、次の設定が必要です。

  • 既知のエンドポイント
  • 発行者 URI
  • クライアント ID
  • クライアント認証方法
  • クライアント シークレット
  • スコープ
  • 応答の種類
  • クレームマッピング
    • Sub
    • 名前
    • 指定された名前
    • 電子メール (既定では必須。 省略可能)
    • メールが確認されました
    • 電話番号
    • 電話番号が確認されました
    • 番地
    • 地域
    • 地域
    • 郵便番号
    • Country

管理センターで新しい OpenID Connect ID プロバイダーを構成する

ID プロバイダーを構成したら、この手順を完了して、Microsoft Entra 管理センターで新しい OpenID Connect フェデレーションを構成します。

  1. Microsoft Entra 管理センターに、少なくとも外部 ID プロバイダー管理者としてサインインします。

  2. [Entra ID]>[外部 ID]>[すべての ID プロバイダー] に移動します。

  3. [カスタム] タブを選択し、[新規追加]>Open ID Connect を選択します。

    新しいカスタム ID プロバイダーの追加のスクリーンショット。

  4. ID プロバイダーの次の詳細を入力します。

    • 表示名: サインインおよびサインアップ フロー中にユーザーに表示する ID プロバイダーの名前。 たとえば、 IdP 名でサインイン するか、 IdP 名でサインアップします

    • 既知のエンドポイント (メタデータ URI とも呼ばれます) は、ID プロバイダーの構成情報 を取得 OIDC 検出 URI です。 応答は、OAuth 2.0 エンドポイントの場所を含む JSON ドキュメントです。 少なくとも、メタデータ ドキュメントには、 issuerauthorization_endpointtoken_endpointtoken_endpoint_auth_methods_supportedresponse_types_supportedsubject_types_supportedjwks_uriの各プロパティが含まれている必要があります。 詳細については、「 OpenID Connect Discovery の仕様」を参照してください。

    • OpenID 発行者 URI: アプリケーションのアクセス トークンを発行する ID プロバイダーのエンティティ。 たとえば、OpenID Connect を使用して Azure AD B2C とフェデレーションする場合、発行者 URI は https://login.b2clogin.com/{tenant}/v2.0/ のようになります。 発行者 URI は、https スキームを使用する大文字と小文字が区別される URL です。 これにはスキーム、ホスト、および必要に応じてポート番号とパスのコンポーネントが含まれますが、クエリコンポーネントやフラグメントコンポーネントはありません。

    手記

    Microsoft Entra ID テナントとフェデレーションするには、「 Microsoft Entra ID テナントを OpenID Connect ID プロバイダーとして追加する」を参照してください。 OIDC フェデレーションは、 外部ユーザーの招待 (プレビュー) 機能とも互換性がありません。

    • クライアント IDクライアント シークレット は、ID プロバイダーが登録済みのアプリケーション サービスを識別するために使用する識別子です。 client_secret ベースの認証方法を選択するときに、クライアント シークレットを指定します。
    • クライアント認証 は、トークン エンドポイントを使用して ID プロバイダーで認証するために使用されるクライアント認証方法の種類です。 client_secret_post および client_secret_jwt 認証方法がサポートされています。 管理センターの UI にはオプションとして private_key_jwt 表示される場合がありますが、このメソッドは現在サポートされていないため、選択しないでください。

    手記

    セキュリティの問題が発生する可能性があるため、 client_secret_basic クライアント認証方法はサポートされていません。

    • スコープ は、ID プロバイダーから収集する情報とアクセス許可 ( openid profileなど) を定義します。 OpenID Connect 要求には、ID プロバイダーから ID トークンを受け取るために、 openid スコープ値が含まれている必要があります。 その他のスコープは、スペースで区切って追加できます。 profileなど、他の使用可能なスコープについては、emailを参照してください。
    • 応答の種類 は、ID プロバイダーの authorization_endpoint への最初の呼び出しで返される情報の種類を表します。 現時点では、code 応答の種類のみがサポートされています。 id_tokentoken はサポートされません。
  5. [ 次へ: 要求マッピング] を選択して 要求マッピング を構成するか、 確認と作成 を選択して ID プロバイダーを追加します。

手記

マイクロソフトは暗黙的な許可フローROPC フロー使用しないようにすることをお勧めします。 そのため、OpenID Connect 外部 ID プロバイダーの構成では、これらのフローはサポートされません。 SPA をサポートする推奨される方法は、OIDC フェデレーション構成でサポートされている OAuth 2.0 Authorization コード フロー (PKCE を使用) です。

OIDC ID プロバイダーをユーザー フローに追加する

この時点で、Microsoft Entra ID で OIDC ID プロバイダーを設定しましたが、どのサインイン ページでもまだ使用できません。 OIDC ID プロバイダーをユーザー フローに追加するには:

  1. 外部テナントで、Entra ID>外部 ID>ユーザー フローを参照します。

  2. OIDC ID プロバイダーを追加するユーザー フローを選択します。

  3. 設定で、ID プロバイダーを選択します。

  4. [ その他の ID プロバイダー] で、[ OIDC ID プロバイダー] を選択します

    IdP リストのカスタム OIDC プロバイダーのスクリーンショット。

  5. [保存] を選択します

外部 ID プロバイダーのサインアップに電子メールを省略可能にする

既定では、ユーザーが外部 ID プロバイダー (IdP) にサインアップするときに電子メール アドレスが必要です。 外部 IdP が電子メール要求を送信しない場合、ユーザーはサインアップ中にエラー AADSTS901011: No email address was obtained from the external oidc identity provider が発生します。 このエラーを回避するには、電子メール属性を省略可能にするようにユーザー フローを構成します。 その後、ユーザーは、電子メール アドレスを指定せずに、外部 IdP ID のみでサインアップを完了できます。

Important

電子メールを省略可能にすることは、ユーザー フロー レベルの設定です。 この変更は、ユーザー フローに関連付けられている すべてのアプリケーションの サインアップに適用されます。

Tip

通常、アカウント ピッカーにはユーザーのメール アドレスが表示されます。 電子メール アドレスが収集されない場合は、代わりに表示名が表示されます。 ユーザーが自分のアカウントを簡単に識別できるようにするには、[name] で要求をマップするか、サインアップ時に表示名を収集します。

電子メールを省略可能にするようにユーザー フローを更新する

ユーザー フローで電子メール属性を省略可能にするには、Microsoft Graph API を使用して、ユーザー フローの onAttributeCollection プロパティを更新します。

  1. 更新するユーザー フローの ID を見つけます。 これを行う 1 つの方法は、 Graph エクスプローラー を使用して、すべてのユーザー フローを一覧表示することです。

    GET https://graph.microsoft.com/v1.0/identity/authenticationEventsFlows
    

    応答で、ユーザー フローの idonAttributeCollection プロパティを見つけます。

  2. 応答から onAttributeCollection プロパティをコピーし、それを使用してユーザー フローを PATCH 要求で更新します。 必要な変更は、電子メール属性の required プロパティを false に設定することだけです。

    PATCH https://graph.microsoft.com/v1.0/identity/authenticationEventsFlows/{user-flow-id}
    Content-Type: application/json
    
    {
        "@odata.type": "#microsoft.graph.externalUsersSelfServiceSignUpEventsFlow",
        "onAttributeCollection": {
            "@odata.type": "#microsoft.graph.onAttributeCollectionExternalUsersSelfServiceSignUp",
            "attributeCollectionPage": {
                "views": [
                    {
                        "title": null,
                        "description": null,
                        "inputs": [
                            {
                                "attribute": "email",
                                "label": "Email Address",
                                "inputType": "text",
                                "defaultValue": null,
                                "hidden": false,
                                "editable": true,
                                "writeToDirectory": true,
                                "required": false,
                                "validationRegEx": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$",
                                "options": []
                            }
                        ]
                    }
                ]
            }
        }
    }
    

    手記

    電子メール属性だけでなく、既存のユーザー フローからのすべての属性入力を PATCH 要求に含めます。 前の例では電子メール入力のみを示していますが、ユーザー フローには追加の属性が含まれている可能性があります。 完全なスキーマについては、 authenticationAttributeCollectionPage リソースの種類に関するページを参照してください

既知の制限

発行者 URI の更新

既存の OIDC ID プロバイダー (IdP) の発行者 URI を更新すると、更新された構成がユーザー フローで自動的に有効にならない場合があります。 その結果、IdP サインイン オプションがサインイン ページに表示されない可能性があります。

変更を適用するには:

  1. ユーザー フローで IdP を無効にします。
  2. ユーザー フローを保存します。
  3. IdP を再度有効にします。
  4. ユーザー フローをもう一度保存します。