認可プロバイダ・ファンクションへのトークンの受渡しによるAPIデプロイメントへの認証および 認可の追加

単一引数認可プロバイダ・ファンクションおよびアクセス・トークンを使用して、APIゲートウェイ・サービスを使用して認証および認可機能をAPIゲートウェイに追加する方法について学習します。

APIゲートウェイでリクエストに含まれる複数引数または単一引数のアクセス・トークンを、検証のためにOCIファンクションにデプロイされた認可プロバイダ・ファンクションに渡すことで、認証および認可機能をAPIゲートウェイに追加できます(このトピックを参照)。または、APIゲートウェイ自体で、リクエストに含まれるトークンを検証できます(「APIデプロイメントに認証および認可を追加するためのトークンの検証」を参照)。

APIゲートウェイに認証および認可機能を追加するには、次のような「認可プロバイダ・ファンクション」を記述します:

  • リクエスト属性を処理して、アイデンティティ・プロバイダでAPIクライアントのアイデンティティを確認します。
  • APIクライアントで実行できる操作を決定します。
  • 「アクセス・スコープ」のリストとして、APIクライアントが実行を許可されている操作を返します(「アクセス・スコープ」は、アクセスの決定に使用される任意の文字列です)。
  • オプションで、APIデプロイメントで使用するキーと値のペアを返します。たとえば、HTTPバック・エンド定義で使用するコンテキスト変数です(ポリシーおよびHTTPバック・エンド定義へのコンテキスト変数の追加を参照)。

必要な機能に応じて、次を記述できます:

  • (推奨)リクエストの1つ以上の要素で構成される、ユーザー定義の複数引数アクセス・トークンを受け入れる複数引数認可プロバイダ・ファンクション(「複数引数認可プロバイダ・ファンクションの作成(推奨)」を参照)。複数引数認可プロバイダ・ファンクションは、リクエスト・ヘッダーまたは問合せパラメータに含まれる単一のアクセス・トークンを受け入れることができることに注意してください。
  • リクエストのリクエスト・ヘッダーまたは問合せパラメータに含まれる単一値で構成される単一引数アクセス・トークンを受け入れる単一引数認可プロバイダ・ファンクション(単一引数認可プロバイダ・ファンクションの作成を参照)。

複数引数(単一引数ではなく)認可プロバイダ・ファンクションを使用すると、APIゲートウェイは、より詳細なリクエストベースの認証を実行できます。複数引数認可プロバイダ・ファンクションは、アクセス・トークンの属性および問合せパラメータ、ホスト名、サブドメインなどの他のリクエスト要素を使用して、デシジョン・サービスおよびポリシー・エージェントを問い合せることができます。

ノート

Oracleでは、単一引数認可プロバイダ・ファンクションではなく複数引数認可プロバイダ・ファンクションを使用することをお薦めします。これは、追加の汎用性があるためです。単一引数認可プロバイダ・ファンクションは以前のリリースで提供されていましたが、引き続きサポートされています。ただし、複数引数認可プロバイダ・ファンクションは、リクエスト・ヘッダーおよび問合せパラメータに含まれる単一引数アクセス・トークンを受け入れることができるため、新しい単一引数認可プロバイダ・ファンクションを作成する理由はありません。さらに、単一引数認可プロバイダ・ファンクションは、将来のリリースで非推奨になるように計画されています。

認可プロバイダ・ファンクションを記述した後、それをOCIファンクションにデプロイできます(認可プロバイダ・ファンクションのデプロイを参照)。

単一引数認可プロバイダ・ファンクションの例が示された関連する開発者チュートリアルについては、ファンクション: APIゲートウェイを使用したAPIキーの検証を参照してください。

認可プロバイダ・ファンクションをデプロイした後、APIデプロイメント仕様に2種類の異なるリクエスト・ポリシーを含めることにより、APIデプロイメントに対する認証および認可を有効にします:

  • 次を指定するAPIデプロイメント全体の認証リクエスト・ポリシー:
    • 認証および認可を実行するOCIファンクションにデプロイした認可プロバイダ・ファンクションのOCID。
    • 認可プロバイダ・ファンクションに渡すリクエスト属性。
    • 認証されていないAPIクライアントがAPIデプロイメント内のルートにアクセスできるかどうか。
  • 認可プロバイダ・ファンクションから返されたAPIクライアントのアクセス・スコープに基づいて、APIクライアントが実行を許可されている操作を指定する各ルートの認可リクエスト・ポリシー。

次を実行して、認証および認可リクエスト・ポリシーをAPIデプロイメント仕様に追加できます:

  • コンソールの使用。
  • JSONファイルの編集。
ヒント

認可プロバイダ・ファンクションの問題のトラブルシューティングについては、ログ・レベルを「情報」に設定して、APIデプロイメントに実行ログを追加することを検討してください(APIデプロイメントへのロギングの追加を参照)。

認証および認可に関連するログ・ファイルの詳細を表示するには、customAuthを検索します。