ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を終える際は、これらの値をクラウド環境に固有の値に置き換えてください。
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デプロイメントへの認証および認可の追加を参照してください。
目的
- OAuthおよびOpenID Connect(OIDC)を使用して、OCI API GatewayとMicrosoft Entra IDを統合します。Microsoft Entra IDトークンを使用して、OCI API Gatewayで安全な方法で認証する方法をご紹介します。
前提条件
-
OCIおよびMicrosoft Entra IDテナンシへのアクセス。
-
Microsoft Entra IDからのJSON Webトークン(JWT)。このJWTは、Postman、curlまたはその他の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つのクライアント・アプリケーションを作成および設定するには、次のステップに従います。
-
最初のアプリケーションを作成するには、Microsoft Entra IDポータルを開き、「アプリケーション登録」および「新規登録」をクリックして新しいアプリケーションを登録します。
-
次の情報を入力し、「登録」をクリックします。
- 名前:アプリケーション名を入力します。
- サポートされているアカウント・タイプ: 「この組織ディレクトリのみに含まれるアカウント(デフォルト・ディレクトリのみ- シングル・テナント)」を選択します。
-
「APIを公開」をクリックして、アプリケーションID URIを追加してこれをクライアント・アプリケーションに公開し、「スコープの追加」をクリックしてスコープを追加します。このチュートリアルでは、APIを公開し、スコープを追加するために、次のイメージに示すようにテスト値を指定しました。
Web APIを登録してスコープを通じて公開し、アプリケーション・ロールを割り当てることで、権限ベースのアクセス権を、APIにアクセスする認可ユーザーおよびクライアント・アプリケーションにそのリソースに入力できます。
ノート:アプリケーションID URIを書き留めます。これは、後でMicrosoft Entra IDからトークンを取得するときに使用されます。
-
「アプリケーション・ロール」をクリックして、アプリケーション・ロール(最初のアプリケーション用)を追加します。
-
2つ目のアプリケーションを作成するには、Microsoft Entra IDポータルを開き、「アプリケーション登録」および「新規登録」をクリックして新しいアプリケーションを登録します。
-
次の情報を入力し、「登録」をクリックします。
- 名前:アプリケーション名を入力します。
- サポートされているアカウント・タイプ: 「この組織ディレクトリのみに含まれるアカウント(デフォルト・ディレクトリのみ- シングル・テナント)」を選択します。
-
アプリケーション(クライアント) IDを書き留めます。これは、これをトークン生成APIの資格証明として使用して、APIとして公開される最初のクライアント・アプリケーションのトークンを取得するためです。
-
「証明書とシークレット」、「新規クライアント・シークレット」の順にクリックし、次の情報を入力して「追加」をクリックします。
- 説明:短いシークレットの説明を入力します。
- 有効期限:有効期限を選択します。デフォルトでは、シークレットの有効期限は6か月に設定されます。
ノート:値フィールドをコピーしてシークレットを書き留めます。
シークレットは、上からアプリケーション(クライアント) IDと組み合わされます。
-
Api_App
の「APIの権限」および「権限の追加」をクリックします。「APIの選択」セクションで、「組織が使用するAPI」を選択し、最初のアプリケーションの構成中に公開されたAPIを選択します。 -
「アプリケーション権限」と公開された権限を選択し、「権限の追加」をクリックします。
-
「概要」、「エンドポイント」をクリックし、JWTトークンの発行に使用されるOAuth 2.0トークン・エンドポイント(v1)のURLをコピーします。
-
「エンドポイント」では、リモートJWKS URIを含む既知のOpenIDエンドポイントURLを取得します。
Microsoft Entra IDのパートが完成し、OCI API Gatewayの構成に進みます。ただし、OCIでAPIゲートウェイを構成する前に、Postmanを使用してJWTおよびMicrosoft Entra IDからopenid-configuration
から必要な詳細を収集します。次の詳細を収集する必要があります。
- JWT発行者:これは、トークンのトークン-
iss
フィールドから取得できます。 - JWT許可オーディエンス:これは、トークンのトークン-
aud
フィールドからも取得されます。 - リモートJWKS URI:これは、OpenID Connectメタデータ・ドキュメントから入手できます。これはリモートJWKS URI:
https://login.microsoftonline.com/{tenant-id}/discovery/v2.0/keys
です。
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
値をコピーします。
ここで、JWTトークンをデコードして、JWT許可発行者やJWT許可対象オーディエンスなどの値を取り込むことができます。
OCI API Gatewayで構成された標準レスポンスには、Microsoft Entra IDによって発行されたJSON Web Token (JWT)を使用します。
タスク2: OCI APIゲートウェイの構成
-
OCI APIゲートウェイに移動し、「認証」セクションで「単一認証」を選択し、次の情報を入力します。
- 認証タイプ:
OAuth 2.0/ OpenID Connect
。 - トークンの場所:
Header
。 - JWTトークン・ヘッダー名:
Authorization
。 - 認証スキーム:
Bearer
。
- 認証タイプ:
-
「追加のJWT検証」セクションで、許可される「発行者」および「オーディエンス」を定義します。v1トークンAPIを使用したため、許可された発行者は
https://sts.windows.net/{tenant-id}/
に設定する必要があります。{tenant-ID}
をAzureテナントIDに置き換えます。許可されたオーディエンスには、タスク1で取得したaud
クレーム値が含まれている必要があります。 -
「検証タイプ」セクションで、Microsoft Entra IDの既知のOpenIDエンドポイントから取得したJWKS URIを入力します。
-
ルートを作成するには、次の情報を入力して、「次」をクリックします。
- パス:パスを定義します。
- メソッド:メソッドを選択します。
- 「単一のバックエンドの追加」を選択します。
- バックエンド・タイプ: 「Stock response」を選択します。
- ステータス・コード:ステータス・コードを入力します。
- 本文:単純な本文を定義します。
ノート:簡単にするために、APIゲートウェイのバックエンド・タイプとして標準レスポンスを公開しています。通常、これはAPIゲートウェイを介して保護されるAPIですが、Microsoft Entra ID OIDC認証の構成は似ています。
-
「確認」セクションで、デプロイメントを確認し、「作成」をクリックします。デプロイメントが
Active
状態になるまで待機し、エンドポイントURLをコピーします。
Postmanを使用して、保護されたAPIエンドポイントをテストします。エンドポイントを入力し、ルート・パスで接尾辞を付けます。認可ヘッダーを追加し、Bearerスキームを使用して、Microsoft Entra IDから取得したJWTトークンを貼り付けます。
OCI API Gatewayデプロイメントは、Microsoft Entra IDで保護されるようになりました。
関連リンク
確認
- 著者 - Aqib Javid Bhat (シニア・クラウド・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Use Microsoft Entra ID to Secure OCI API Gateway Using OAuth and OpenID Connect
F94681-01
March 2024