高度な OAuth 2.0 トピック

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示します。

サードパーティの OAuth トークンの使用

サードパーティ OAuth トークンの使用をご覧ください。

複数のリダイレクト URI の指定

認証コードの付与タイプを使用する場合、デベロッパー アプリの登録時にリダイレクト URI を指定する必要があります。リダイレクト URI は、クライアント アプリに代わって認証コードを受け取るアプリの URI を指定します。クライアントは、認証コードとトークンをリクエストするとき、この URI を Apigee に送信する必要があります。redirect_uri パラメータは、登録されているものと一致する必要があります。OAuth 2.0 トークンを取得するもご覧ください。

次に例を示します。

https://mydomain.com/authorize?\
client_id=123456&\
response_type=code&\
redirect_uri=https%3A%2F%2Fmydomain.com%2Fcallback&scope=scope1%20scope2&state=abc

単一のプロキシ アプリケーションで複数のリダイレクト URI を指定するユースケースがあります。たとえば、複数のドメインに対して認証を行う必要があるとします。次に例を示します。

  • https://mydomain.com/callback
  • https://mydomain.uk/callback
  • https://mydomain.ja/callback

デベロッパー アプリで複数のリダイレクト URI を指定するには、デベロッパー アプリ UI で [Callback URL] フィールドにカンマ区切りのリストとして追加します。次に例を示します。

https://mydomain.com/callback,https://mydomain.uk/callback,https://mydomain.ja/callback

なお、/authorize リクエストでは、redirect_uri パラメータに URI を 1 つだけ指定する必要があります。リダイレクト URI がデベロッパー アプリ UI の [Callback URL] フィールドで指定された URI のいずれかと一致する限り、リクエストは成功します。

GenerateAuthCode オペレーションがコードを返す際のデフォルト動作を変更する

デフォルトでは、OAuthv2 ポリシーの GenerateAuthCode オペレーションは、認証コードを格納している ?code クエリ パラメータを含むリダイレクト URI への 302 リダイレクトを返します。

この動作の変更が必要になることがあります。たとえば、構造化 JSON にコードを格納した 200 レスポンスを返す必要がある場合などです。

このユースケースに対応するには、ExtractVariable ポリシーを使用してコードを取得し、AssignMessage ポリシーを使用して、取得したコードを格納した JSON ペイロードをステータス 200 で返します。

アプリのエンドユーザーの同意を監査する

場合によっては、アプリのエンドユーザーがアプリを認可したこと確認する必要があります。これを行うには、Apigee Audit API を使用します。

アウトバウンド OAuth の例

GitHub の Apigee api-platform-samples リポジトリにある outbound-oauth のサンプルをご覧ください。このサンプルのクローンを作成し、デプロイして実行できます。このサンプルでは Microsoft Azure Translator API を使用してツイートを翻訳します。そのために、まずアウトバウンド呼び出しを行って OAuth アクセス トークンを取得し、取得したトークンを API サービスのキャッシング ポリシーを使用してキャッシュに保存します。以降は、アウトバウンド呼び出しを行うたびにキャッシュに保存されているトークンを再利用します。このサンプルには、API プロキシの呼び出しに使用するデモ用ブラウザも含まれています。