資格情報マネージャーの構成 - Microsoft Graph API

適用対象: すべての API Management レベル

この記事では、Azure API Management から Microsoft Graph API への マネージド接続 を作成するために必要な手順について説明します。 Microsoft Entra ID プロバイダーを使用して、Microsoft Graph API を呼び出します。 この例では、承認コード許可の種類を使用します。

注

この記事では、クライアント シークレットを使用した従来の認証コード付与タイプまたはフェデレーション ID 資格情報を使用した認証コード付与タイプを用いて、資格情報プロバイダーを構成することができます。 シナリオに最適なパスを選択します。 フェデレーション ID 資格情報を使用すると、シークレットを管理およびローテーションする必要がなくなります。 詳細については、「 Microsoft Entra ID のフェデレーション ID 資格情報の概要」を参照してください。

次の方法を学びます:

  • Microsoft Entra アプリケーションを作成する
  • API Management で資格情報プロバイダーを作成して構成する
  • 接続を構成する
  • API Management で Microsoft Graph API を作成し、ポリシーを構成する
  • API Management で Microsoft Graph API をテストする

[前提条件]

手順 1: Microsoft Entra アプリケーションを作成する

API 用の Microsoft Entra アプリケーションを作成し、呼び出す要求に適切なアクセス許可を付与します。

  1. テナントで十分なアクセス許可を持つアカウントで Azure portal にサインインします。

  2. Microsoft Entra ID を検索して選択します。

  3. サイドバー メニューの [ 管理 ] で、[ アプリの登録] を選択し、[ + 新規登録] を選択します。

  4. [ アプリケーションの登録] で、アプリケーション登録設定を入力します。

    1. [ 名前] に、アプリのわかりやすい名前 ( MicrosoftGraphAuth など) を入力します。

    2. [サポートされているアカウントの種類] で、シナリオに合ったオプション (この組織のディレクトリ内のアカウントのみ (シングル テナント) など) を選択します。

    3. リダイレクト URI をWeb に設定し、「https://authorization-manager.consent.azure-apim.net/redirect/apim/<YOUR-APIM-SERVICENAME>」と入力し、資格情報プロバイダーを構成する API Management サービスの名前に置き換えます。

    4. 登録 を選択します。

      ポータルで Microsoft Entra アプリの登録を作成するスクリーンショット。

  5. サイドバー メニューの [ 管理>API アクセス許可] を選択します。 Delegated 型のアクセス許可 User.Read が既に追加されていることを確認します。

  6. [ + アクセス許可の追加] を選択します。 ポータルでの API アクセス許可の追加のスクリーンショット。

    1. Microsoft Graph を選択し、[委任されたアクセス許可] を選択します。
    2. 「チーム」と入力し、チーム オプションを展開して Team.ReadBasic.All を選択します。 アクセス許可の追加 を選択します。
    3. 次に、[ 既定のディレクトリに管理者の同意を与える] を選択します。 アクセス許可の状態が [ 既定のディレクトリに付与] に変わります。
  7. サイドバー メニューの [ 概要] を選択します。 [ 概要] で、 アプリケーション (クライアント) ID の値を見つけて、手順 2 で使用するために記録します。 必要に応じて、 ディレクトリ (テナント) ID の値もコピーします。

クライアント シークレットを構成する

  1. サイドバー メニューの [ 管理>Certificates > シークレット] を選択し、[ + 新しいクライアント シークレット] を選択します。 ポータルでアプリ シークレットを作成するスクリーンショット。

    1. [Description]\(説明\) を入力します。
    2. [有効期限] のオプションを選択します。
    3. [] を選択し、[] を追加します。
    4. ページを離れる前に、クライアント シークレットの 値 をコピーします。 手順 2 で必要になります。

手順 2: API Management で資格情報プロバイダーを構成する

  1. API Management インスタンスに移動します。

  2. サイドバー メニューの [API ] で 、[ 資格情報マネージャー] を選択し、[ + 作成] を選択します。 ポータルで API 資格情報を作成するスクリーンショット。

  3. [ 資格情報プロバイダーの作成] で、次の設定を入力し、[ 作成] を選択します。

    設定 価値
    資格情報プロバイダー名 選択した名前 (MicrosoftEntraID-01 など)
    ID プロバイダー Azure Active Directory v1 を選択する
    許可の種類 承認コードの選択
    承認 URL Microsoft Entra ID プロバイダーの場合は省略可能です。 既定値は https://login.microsoftonline.com です。
    クライアント ID 前にアプリの登録からコピーした値を貼り付けます
    クライアント シークレット 手順 1 で作成したクライアント シークレットの値を貼り付けます
    リソース URL https://graph.microsoft.com
    テナント ID Microsoft Entra ID プロバイダーの場合は省略可能です。 既定値は Common です。
    スコープ この許可タイプの Microsoft Entra アイデンティティ プロバイダーは省略可能です。 Microsoft Entra アプリの API アクセス許可から自動的に構成されます。
  4. 表示されるダイアログ ボックスで、表示されている OAuth リダイレクト URL を確認し、[ はい ] を選択して、アプリ登録で入力した URL と一致することを確認します。

手順 2: API Management で資格情報プロバイダーを構成する

API Management では、フェデレーション ID 資格情報を生成できます。 Microsoft Entra アプリの登録に追加されると、API Management と Microsoft Entra の間に信頼関係が確立されます。 これにより、認証用のシークレットを管理する必要がなくなります。

  1. API Management インスタンスに移動します。

  2. サイドバー メニューの [API ] で 、[ 資格情報マネージャー] を選択し、[ + 作成] を選択します。 ポータルで API 資格情報を作成するスクリーンショット。

  3. [ 資格情報プロバイダーの作成] で、次の設定を入力し、[ 作成] を選択します。

    設定 価値
    資格情報プロバイダー名 選択した名前 ( MicrosoftEntraID-federated-01 など)
    ID プロバイダー Azure Active Directory v1 を選択する
    許可の種類 フェデレーション ID 資格情報を持つ承認コードを選択する
    承認 URL Microsoft Entra ID プロバイダーの場合は省略可能です。 既定値は https://login.microsoftonline.com です。
    クライアント ID 前にアプリ登録からコピーした値を貼り付けます。
    リソース URL https://graph.microsoft.com
    テナント ID 前にアプリ登録からコピーした値を貼り付けます。
    スコープ Microsoft Entra ID プロバイダーの場合は省略可能です。 Microsoft Entra アプリの API アクセス許可から自動的に構成されます。
  4. 表示されるダイアログ ボックスで、次の手順を実行します。

    1. 表示されている OAuth リダイレクト URL を確認し、アプリ登録で入力した URL と一致することを確認します。

    2. [Entra application]\(Entra アプリケーション\) リンクを選択して、表示されたフェデレーション ID 資格情報をアプリの登録に追加します。 ポータルでフェデレーション ID 資格情報プロバイダーの構成を完了しているスクリーンショット。

    3. [ 資格情報の追加 ] ウィンドウで、フェデレーション資格情報シナリオの [その他の発行者 ] を選択します。

    4. [ アカウントの接続] で、ダイアログ ボックスの 発行者 と サブジェクトの識別子 の値をコピーして、対応するフィールドに貼り付けます。

    5. [ 資格情報の詳細] で、資格情報の 名前 とオプションの 説明 を入力します。 対象ユーザーが API Management のダイアログ ボックスに表示される対象ユーザーと同じであることを確認します。

    6. [ 追加] を選択してフェデレーション資格情報を作成し、API Management と Microsoft Entra アプリの登録の間の接続を完了します。

    ポータルでフェデレーション ID 資格情報を構成するスクリーンショット。

  5. [API Management] ダイアログ ボックスで、[ はい ] を選択して続行することを確認します。

手順 3: 接続を構成する

[ 接続 ] タブで、プロバイダーへの接続の手順を完了します。

注

接続を構成すると、API Management は既定で、インスタンスのシステム割り当てマネージド ID によるアクセスを有効にするアクセス ポリシー を設定します。 この例では、このアクセスで十分です。 必要に応じて、さらにアクセス ポリシーを追加できます。

  1. 接続名を入力し、[保存] を選択します。
  2. [手順 2: 接続にログインする (承認コード許可の種類の場合)] で、[ログイン] ボタンを選択します。 ID プロバイダーでアクセスを承認し、API Management に戻る手順を完了します。 ログインに成功すると、接続の状態が [接続済み] に変わります。
  3. [手順 3: この接続にアクセスできるユーザーを決定する (アクセス ポリシー)]で、マネージド ID メンバーが一覧表示されます。 シナリオによっては、他のメンバーの追加は省略可能です。
  4. [Complete]\(完了\) を選択します。

新しい接続が接続の一覧に表示され、状態が [接続済み] と表示されます。 資格情報プロバイダー用に別の接続を作成する場合は、前の手順を実行します。

ヒント

ポータルを使用して、資格情報プロバイダーへの接続をいつでも追加、更新、または削除できます。 詳細については、「 複数の接続を構成する」を参照してください。

注

この手順の後に Microsoft Graph のアクセス許可を更新する場合は、手順 2 と 3 を繰り返す必要があります。

手順 4: API Management で Microsoft Graph API を作成し、ポリシーを構成する

  1. サイドバー メニューの[API]で[API]を選択します。

  2. [HTTP] を選択し、次の設定を入力します。 次に、[ 作成] を選択します。

    Setting 価値
    表示名 msgraph
    Web サービスの URL https://graph.microsoft.com/v1.0
    API URL サフィックス msgraph
  3. 新しく作成した API に移動し、[ + 操作の追加] を選択します。 次の設定を入力し、[ 保存] を選択します。

    Setting 価値
    表示名 getprofile
    GET の URL /me
  4. 前の手順に従って、次の設定で別の操作を追加します。

    Setting 価値
    表示名 getJoinedTeams
    GET の URL /me/joinedTeams
  5. [すべての操作] を選択します。 [ 受信処理 ] セクションで、 </> (コード エディター) アイコンを選択します。

  6. 次のスニペットをコピーして貼り付けます。 前の手順で構成した資格情報プロバイダーと接続の名前で get-authorization-context ポリシーを更新し、[ 保存] を選択します。

    • 資格情報プロバイダー名を provider-idの値に置き換える。
    • 接続名を authorization-id の値に置き換える。
    <policies>
        <inbound>
            <base />
            <get-authorization-context provider-id="MicrosoftEntraID-01" authorization-id="first-connection" context-variable-name="auth-context" identity-type="managed" ignore-error="false" />
           <set-header name="Authorization" exists-action="override">
               <value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
           </set-header>
        </inbound>
        <backend>
            <base />
        </backend>
        <outbound>
            <base />
        </outbound>
        <on-error>
            <base />
        </on-error>
    </policies>
    

上記のポリシー定義は、次の 2 つの部分で構成されています。

  • get-authorization-context ポリシーは、前に作成した資格情報プロバイダーと接続を参照して、承認トークンをフェッチします。
  • set-header ポリシーは、フェッチされたアクセス トークンを含む HTTP ヘッダーを作成します。

手順 5: API をテストする

  1. [ テスト ] タブで、構成した操作を選択します。

  2. [Send] を選択します。

    ポータルでの Graph API のテストのスクリーンショット。

    応答が成功すると、Microsoft Graph からユーザー データが返されます。