附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
使用 OAuth 和 OpenID Connect 使用 Microsoft Entra ID 保護 OCI API 閘道
簡介
Oracle Cloud Infrastructure (OCI) API Gateway 是 OCI 中無伺服器完全受管理的服務,可用來保護 API 端點和 Web 應用程式。它提供許多安全功能,例如速率限制、授權強制實行、動態路由、SSL 強制實行等等。我們看到許多來自客戶的要求,詢問如何使用 Microsoft Entra ID OAuth 權杖來保護 OCI API 閘道後執行的 API,或如何運用 Microsoft Entra ID 權杖對 OCI API 閘道進行認證。如需有關 OCI API Gateway 認證的詳細資訊,請參閱驗證權杖以新增 API 部署的認證與授權。
目標
- 使用 OAuth 和 OpenID Connect (OIDC) 整合 OCI API 閘道和 Microsoft Entra ID。我們將瞭解如何使用 Microsoft Entra ID 權杖以安全的方式與 OCI API 閘道進行認證。
必要條件
-
存取 OCI 和 Microsoft Entra ID 租用戶。
-
來自 Microsoft Entra ID 的 JSON Web Token (JWT),您可以使用 Postman、Curl 或任何其他 API 用戶端擷取此 JWT。
工作 1:將 Microsoft Entra ID 設定為 OAuth 身分識別提供者 (IdP)
在 Microsoft Entra ID 端,我們需要在 Microsoft Entra ID 中設定兩個從屬端應用程式:一個從屬端應用程式將用於向 Microsoft Entra ID (另一個從屬端應用程式) 進行認證將用於在 Microsoft Entra ID 上顯示 API,我們會透過 Postman 擷取使用此公開 API 的權杖 (第一個 App 的加密密碼)。我們將檢查此權杖並使用要匯入 OCI API 閘道組態中的受眾 (稽核) 和發照者欄位。
若要在 Microsoft Entra ID 上建立和設定兩個從屬端應用程式,請依照下列步驟進行:
-
若要建立第一個應用程式,請開啟 Microsoft Entra ID 入口網站,按一下應用程式註冊和新註冊以註冊新應用程式。
-
輸入下列資訊,然後按一下註冊。
- 名稱:輸入應用程式名稱。
- 支援的帳戶類型:選取僅限此組織目錄中的帳戶 (僅限預設目錄 - 單一用戶) 。
-
按一下顯示 API ,即可新增應用程式 ID URI,然後按一下新增範圍來新增範圍,讓從屬端應用程式公開此 API。本教學課程提供測試值 (如下圖所示),以顯示 API 並新增範圍。
註冊 Web API 並透過範圍公開,指派 App 角色,即可將資源的權限型存取權輸入給存取您 API 的授權使用者和從屬端 App。
注意:請注意應用程式 ID URI,稍後在從 Microsoft Entra ID 擷取權杖時,將會使用此功能。
-
按一下應用程式角色即可新增第一個應用程式的角色。
-
若要建立第二個應用程式,請開啟 Microsoft Entra ID 入口網站,按一下應用程式註冊和新註冊以註冊新應用程式。
-
輸入下列資訊,然後按一下註冊。
- 名稱:輸入應用程式名稱。
- 支援的帳戶類型:選取僅限此組織目錄中的帳戶 (僅限預設目錄 - 單一用戶) 。
-
請記下應用程式 (從屬端) ID ,因為我們將使用它作為權杖產生 API 中的證明資料,以取得第一個公開為 API 的從屬端 App 權杖。
-
按一下憑證與加密密碼中的新從屬端加密密碼,然後輸入下列資訊,然後按一下新增。
- 描述:輸入簡短密碼描述。
- 到期:選取到期。依照預設,加密密碼的到期時間會設為六個月。
注意:請複製值欄位來記下加密密碼。
密碼將會與上面的應用程式 (從屬端) ID 配對。
-
按一下 API 權限和
Api_App
的新增權限。在選取 API 區段中,選取我的組織使用的 API ,然後選取設定第一個應用程式時顯示的 API。 -
選取應用程式權限和公開的權限,然後按一下新增權限。
-
按一下總覽、端點,然後複製 OAuth 2.0 記號端點 (v1) URL,此 URL 將用於發出 JWT 記號。
-
在端點中,我們將擷取包含遠端 JWKS URI 的已知 OpenID 端點 URL。
我們使用 Microsoft Entra ID 部分完成,現在正邁向設定 OCI API 閘道。不過,在 OCI 中設定 API 閘道之前,我們將使用 Postman 從 JWT 和 openid-configuration
從 Microsoft Entra ID 收集必要的詳細資訊。我們需要收集以下細節:
- 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 允許的受眾」。
我們將使用 Microsoft Entra ID 發出的 JSON Web Token (JWT) 作為 OCI API Gateway 下設定的存貨回應。
作業 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
索賠值。 -
在驗證類型區段中,輸入您從已知 OpenID 端點的 Microsoft Entra ID 取得的 JWKS URI。
-
若要建立路由,請輸入下列資訊,然後按一下下一步。
- 路徑:定義路徑。
- 方法:選取方法。
- 選取新增單一後端。
- 後端類型:選取股票回應。
- 狀態代碼:輸入狀態代碼。
- 主體:定義簡單的主體。
注意:為了簡化起見,我們將顯示庫存回應作為 API 閘道的後端類型。這通常是透過 API 閘道保護的 API,但 Microsoft Entra ID OIDC 認證的組態類似。
-
在複查段落中,複查建置,然後按一下建立。等待部署處於
Active
狀態並複製端點 URL。
使用 Postman 測試安全的 API 端點。輸入端點,並以路由路徑作為尾碼。新增 Authorization 標頭、使用 Bearer 配置,然後貼上您從 Microsoft Entra ID 取得的 JWT 記號。
您的 OCI API 閘道部署現在已使用 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
F94685-01
March 2024