資格情報マネージャーの構成 - GitHub API
適用対象: すべての API Management レベル
この記事では、API Management でマネージド 接続 を作成し、OAuth 2.0 トークンを必要とする GitHub API を呼び出す方法について説明します。 この例では、認可コードの付与タイプを使用します。
以下の方法について説明します。
- GitHub にアプリケーションを登録する
- API Management で資格情報プロバイダーを構成する
- 接続の構成
- API Management で API を作成し、ポリシーを構成する
- API Management で GitHub API をテストする
前提条件
- GitHub アカウントが必要です。
- 実行中の API Management インスタンス。 必要に応じて、Azure API Management インスタンスを作成します。
- API Management インスタンスで API Management 用のシステム割り当てマネージド ID を有効にします。
手順 1: GitHub にアプリケーションを登録する
API 用の GitHub OAuth アプリを作成し、呼び出したい要求について適切なアクセス許可を付与します。
GitHub にサインインします。
アカウント プロファイルで、設定 > 開発者向け設定 > OAuth アプリに移動します。[新しい OAuth アプリ] を選択します。
- アプリケーションの [アプリケーション名] と [ホームページ URL] を入力します。 この例では、
http://localhost
などのプレースホルダー URL を指定できます。 - 必要に応じて、アプリケーションの説明を追加します。
- 認可コールバック URL (リダイレクト URL) に、
https://authorization-manager.consent.azure-apim.net/redirect/apim/<YOUR-APIM-SERVICENAME>
と入力し、資格情報プロバイダーを構成する API Management インスタンスの名前を置き換えます。
- アプリケーションの [アプリケーション名] と [ホームページ URL] を入力します。 この例では、
[アプリケーションの登録] を選択します。
[全般] ページで、手順 2 で使用するクライアント ID をコピーします。
[新しいクライアント シークレットを生成する] を選択します。 シークレットをコピーします (これは再表示されません)。手順 2 で使用します。
手順 2: API Management で資格情報プロバイダーを構成する
portal にサインインし、API Management インスタンスに移動します。
左側のメニューで、資格情報マネージャー>+ 作成 を選択します。
[資格情報プロバイダー の作成] ページで、次の設定を入力します:
設定 値 資格情報プロバイダー名 github-01 など、選択した名前 ID プロバイダー [GitHub] を選択します [付与タイプ] [承認コード] を選択します クライアント ID 前にアプリの登録からコピーした値を貼り付けます クライアント シークレット 前にアプリの登録からコピーした値を貼り付けます スコープ この例では、スコープを [ユーザー] に設定します [作成] を選択します
メッセージが表示されたら、表示されている OAuth リダイレクト URL を確認し、[はい] を選択して、アプリ登録で入力した URL と一致することを確認します。
手順 3: 接続を構成する
[接続] タブで、プロバイダーへの接続の手順を完了します。
Note
接続を構成すると、API Management は既定で、インスタンスのシステム割り当てマネージド ID によるアクセスを有効にするアクセス ポリシーを設定します。 この例では、このアクセスで十分です。 必要に応じて、追加のアクセス ポリシーを追加できます。
- 接続名を入力し、[保存]を選択します。
- 手順 2: 接続にログインする (承認コード許可の種類の場合) で、資格情報プロバイダーにログインするためのリンクを選択します。 アクセスを承認し、API Management に戻る手順を完了します。
- 手順 3: この接続 (アクセス ポリシー) へのアクセス権を持つユーザーを決定で、マネージド ID メンバーが一覧表示されます。 シナリオによっては、他のメンバーの追加は省略可能です。
- 完了を選択します。
新しい接続が接続のリストに表示され、[接続済み]の状態が表示されます。 資格情報プロバイダー用に別の接続を作成する場合は、前述の手順を実行します。
ヒント
ポータルを使用して、資格情報プロバイダーへの接続をいつでも追加、更新、または削除できます。 詳細については、「複数の接続を構成する」を参照してください。
手順 4: API Management で API を作成し、ポリシーを構成します。
portal にサインインし、API Management インスタンスに移動します。
左側のメニューで、[API] > [+ API の追加] を選択します。
[HTTP] を選択し、以下の設定値を入力します。 [作成] を選択します。
設定 値 表示名 githubuser [Web サービスの URL] https://api.github.com
API URL サフィックス githubuser 新しく作成した API に移動し、[操作の追加] を選択します。 以下の設定値を入力し、[保存] を選択します。
設定 値 表示名 getauthdata GET の URL /user 前の手順に従って、次の設定で別の操作を追加します。
設定 値 表示名 getauthfollowers GET の URL /user/followers [すべての操作] を選択します。 [受信処理] セクションで、(</>) (コード エディター) アイコンを選択します。
以下をコピーして、ポリシー エディターに貼り付けます。
get-authorization-context
ポリシーのprovider-id
とauthorization-id
の値が、前の手順で構成した資格情報プロバイダーと接続の名前にそれぞれ対応していることを確認します。 [保存] を選択します。<policies> <inbound> <base /> <get-authorization-context provider-id="github-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> <set-header name="User-Agent" exists-action="override"> <value>API Management</value> </set-header> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
上記のポリシー定義は、次の 3 つの部分で構成されています。
- get-authorization-context ポリシーは、前に作成した資格情報プロバイダーと接続を参照して、承認トークンをフェッチします。
- 最初の set-header ポリシーは、フェッチされた認可トークンを使用して HTTP ヘッダーを作成します。
- 2 番目の set-header ポリシーは、
User-Agent
ヘッダーを作成します (GitHub API 要件)。
手順 5: API をテストする
[テスト] タブで、構成した操作を 1 つ選択します。
[Send] を選択します。
応答が成功すると、GitHub API からユーザー データが返されます。