ノート:

Microsoft Entra IDを使用した、OAuthおよびOpenID Connectを使用したOCI API Gatewayの保護

イントロダクション

Oracle Cloud Infrastructure (OCI) API Gatewayは、APIエンドポイントおよびWebアプリケーションの保護に使用できる、OCIのサーバーレスのフルマネージド・サービスです。レート制限、認可強制、動的ルーティング、SSL強制など、多くのセキュリティ機能を提供します。Microsoft Entra ID OAuthトークンを使用してOCI API Gatewayの背後にあるAPIを保護する方法、またはMicrosoft Entra IDトークンを使用してOCI API Gatewayに対して認証する方法について、お客様から多くのリクエストが寄せられています。OCI APIゲートウェイ認証の詳細は、トークンの検証によるAPIデプロイメントへの認証および認可の追加を参照してください。

目的

前提条件

タスク1: OAuthアイデンティティ・プロバイダ(IdP)としてのMicrosoft Entra IDの構成

Microsoft Entra ID側では、2つのクライアント・アプリケーションをMicrosoft Entra IDで構成する必要があります。1つはMicrosoft Entra IDへの認証に使用されるもので、もう1つはクライアント・アプリケーションです。Microsoft Entra IDにAPIを公開するために使用され、Postmanを介して最初のアプリケーションのシークレットであるクライアントIDを使用して、この公開APIのトークンを取得します。このトークンを確認し、OCI APIゲートウェイ構成にインポートするオーディエンス(aud)および発行者フィールドを使用します。

Microsoft Entra IDで2つのクライアント・アプリケーションを作成および設定するには、次のステップに従います。

  1. 最初のアプリケーションを作成するには、Microsoft Entra IDポータルを開き、「アプリケーション登録」および「新規登録」をクリックして新しいアプリケーションを登録します。

  2. 次の情報を入力し、「登録」をクリックします。

    • 名前:アプリケーション名を入力します。
    • サポートされているアカウント・タイプ: 「この組織ディレクトリのみに含まれるアカウント(デフォルト・ディレクトリのみ- シングル・テナント)」を選択します。

    イメージ 1

  3. 「APIを公開」をクリックして、アプリケーションID URIを追加してこれをクライアント・アプリケーションに公開し、「スコープの追加」をクリックしてスコープを追加します。このチュートリアルでは、APIを公開し、スコープを追加するために、次のイメージに示すようにテスト値を指定しました。

    Web APIを登録してスコープを通じて公開し、アプリケーション・ロールを割り当てることで、権限ベースのアクセス権を、APIにアクセスする認可ユーザーおよびクライアント・アプリケーションにそのリソースに入力できます。

    ノート:アプリケーションID URIを書き留めます。これは、後でMicrosoft Entra IDからトークンを取得するときに使用されます。

    イメージ 2

    イメージ 3

  4. 「アプリケーション・ロール」をクリックして、アプリケーション・ロール(最初のアプリケーション用)を追加します。

    イメージ 4

  5. 2つ目のアプリケーションを作成するには、Microsoft Entra IDポータルを開き、「アプリケーション登録」および「新規登録」をクリックして新しいアプリケーションを登録します。

  6. 次の情報を入力し、「登録」をクリックします。

    • 名前:アプリケーション名を入力します。
    • サポートされているアカウント・タイプ: 「この組織ディレクトリのみに含まれるアカウント(デフォルト・ディレクトリのみ- シングル・テナント)」を選択します。

    イメージ 6

  7. アプリケーション(クライアント) IDを書き留めます。これは、これをトークン生成APIの資格証明として使用して、APIとして公開される最初のクライアント・アプリケーションのトークンを取得するためです。

    イメージ 5

  8. 「証明書とシークレット」「新規クライアント・シークレット」の順にクリックし、次の情報を入力して「追加」をクリックします。

    • 説明:短いシークレットの説明を入力します。
    • 有効期限:有効期限を選択します。デフォルトでは、シークレットの有効期限は6か月に設定されます。

    イメージ 7

    ノート:値フィールドをコピーしてシークレットを書き留めます。

    シークレットは、上からアプリケーション(クライアント) IDと組み合わされます。

    イメージ 8

  9. Api_App「APIの権限」および「権限の追加」をクリックします。「APIの選択」セクションで、「組織が使用するAPI」を選択し、最初のアプリケーションの構成中に公開されたAPIを選択します。

    イメージ 9

    イメージ 10

  10. 「アプリケーション権限」と公開された権限を選択し、「権限の追加」をクリックします。

    イメージ 11

    イメージ 12

  11. 「概要」「エンドポイント」をクリックし、JWTトークンの発行に使用されるOAuth 2.0トークン・エンドポイント(v1)のURLをコピーします。

    イメージ 13

  12. 「エンドポイント」では、リモートJWKS URIを含む既知のOpenIDエンドポイントURLを取得します。

    イメージ 14

Microsoft Entra IDのパートが完成し、OCI API Gatewayの構成に進みます。ただし、OCIでAPIゲートウェイを構成する前に、Postmanを使用してJWTおよびMicrosoft Entra IDからopenid-configurationから必要な詳細を収集します。次の詳細を収集する必要があります。

Postmanを使用して、Microsoft Entra IDからアクセス・トークンを取得します。スコープ値は、Api_Appの「APIの公開」セクションで作成したアプリケーションID URIであり、次の図に示すように/.defaultを末尾に追加します。

Postmanを使用して、Microsoft Entra IDからJWTトークンを取得します。トークンAPI URL https://login.microsoftonline.com/{tenant-ID}/oauth2/tokenを入力し、{tenant-ID}をAzureテナントIDに置き換えます。リクエストを送信し、access_token値をコピーします。

イメージ 15

ここで、JWTトークンをデコードして、JWT許可発行者やJWT許可対象オーディエンスなどの値を取り込むことができます。

イメージ 16

OCI API Gatewayで構成された標準レスポンスには、Microsoft Entra IDによって発行されたJSON Web Token (JWT)を使用します。

タスク2: OCI APIゲートウェイの構成

  1. OCI APIゲートウェイに移動し、「認証」セクションで「単一認証」を選択し、次の情報を入力します。

    • 認証タイプ: OAuth 2.0/ OpenID Connect
    • トークンの場所: Header
    • JWTトークン・ヘッダー名: Authorization
    • 認証スキーム: Bearer

    イメージ 17

  2. 「追加のJWT検証」セクションで、許可される「発行者」および「オーディエンス」を定義します。v1トークンAPIを使用したため、許可された発行者https://sts.windows.net/{tenant-id}/に設定する必要があります。{tenant-ID}をAzureテナントIDに置き換えます。許可されたオーディエンスには、タスク1で取得したaudクレーム値が含まれている必要があります。

    イメージ 18

  3. 「検証タイプ」セクションで、Microsoft Entra IDの既知のOpenIDエンドポイントから取得したJWKS URIを入力します。

    イメージ 19

  4. ルートを作成するには、次の情報を入力して、「次」をクリックします。

    • パス:パスを定義します。
    • メソッド:メソッドを選択します。
    • 「単一のバックエンドの追加」を選択します。
    • バックエンド・タイプ: 「Stock response」を選択します。
    • ステータス・コード:ステータス・コードを入力します。
    • 本文:単純な本文を定義します。

    ノート:簡単にするために、APIゲートウェイのバックエンド・タイプとして標準レスポンスを公開しています。通常、これはAPIゲートウェイを介して保護されるAPIですが、Microsoft Entra ID OIDC認証の構成は似ています。

    イメージ 20

  5. 「確認」セクションで、デプロイメントを確認し、「作成」をクリックします。デプロイメントがActive状態になるまで待機し、エンドポイントURLをコピーします。

    イメージ 21

Postmanを使用して、保護されたAPIエンドポイントをテストします。エンドポイントを入力し、ルート・パスで接尾辞を付けます。認可ヘッダーを追加し、Bearerスキームを使用して、Microsoft Entra IDから取得したJWTトークンを貼り付けます。

イメージ 22

OCI API Gatewayデプロイメントは、Microsoft Entra IDで保護されるようになりました。

確認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。