附註:

使用 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 部署的認證與授權

目標

必要條件

工作 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 上建立和設定兩個從屬端應用程式,請依照下列步驟進行:

  1. 若要建立第一個應用程式,請開啟 Microsoft Entra ID 入口網站,按一下應用程式註冊新註冊以註冊新應用程式。

  2. 輸入下列資訊,然後按一下註冊

    • 名稱:輸入應用程式名稱。
    • 支援的帳戶類型:選取僅限此組織目錄中的帳戶 (僅限預設目錄 - 單一用戶)

    影像 1

  3. 按一下顯示 API ,即可新增應用程式 ID URI,然後按一下新增範圍來新增範圍,讓從屬端應用程式公開此 API。本教學課程提供測試值 (如下圖所示),以顯示 API 並新增範圍。

    註冊 Web API 並透過範圍公開,指派 App 角色,即可將資源的權限型存取權輸入給存取您 API 的授權使用者和從屬端 App。

    注意:請注意應用程式 ID URI,稍後在從 Microsoft Entra ID 擷取權杖時,將會使用此功能。

    影像 2

    影像 3

  4. 按一下應用程式角色即可新增第一個應用程式的角色。

    影像 4

  5. 若要建立第二個應用程式,請開啟 Microsoft Entra ID 入口網站,按一下應用程式註冊新註冊以註冊新應用程式。

  6. 輸入下列資訊,然後按一下註冊

    • 名稱:輸入應用程式名稱。
    • 支援的帳戶類型:選取僅限此組織目錄中的帳戶 (僅限預設目錄 - 單一用戶)

    影像 6

  7. 請記下應用程式 (從屬端) ID ,因為我們將使用它作為權杖產生 API 中的證明資料,以取得第一個公開為 API 的從屬端 App 權杖。

    影像 5

  8. 按一下憑證與加密密碼中的新從屬端加密密碼,然後輸入下列資訊,然後按一下新增

    • 描述:輸入簡短密碼描述。
    • 到期:選取到期。依照預設,加密密碼的到期時間會設為六個月。

    影像 7

    注意:請複製值欄位來記下加密密碼。

    密碼將會與上面的應用程式 (從屬端) ID 配對。

    影像 8

  9. 按一下 API 權限Api_App新增權限。在選取 API 區段中,選取我的組織使用的 API ,然後選取設定第一個應用程式時顯示的 API。

    影像 9

    影像 10

  10. 選取應用程式權限和公開的權限,然後按一下新增權限

    影像 11

    影像 12

  11. 按一下總覽端點,然後複製 OAuth 2.0 記號端點 (v1) URL,此 URL 將用於發出 JWT 記號。

    影像 13

  12. 端點中,我們將擷取包含遠端 JWKS URI 的已知 OpenID 端點 URL。

    影像 14

我們使用 Microsoft Entra ID 部分完成,現在正邁向設定 OCI API 閘道。不過,在 OCI 中設定 API 閘道之前,我們將使用 Postman 從 JWT 和 openid-configuration 從 Microsoft Entra ID 收集必要的詳細資訊。我們需要收集以下細節:

使用 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

我們將使用 Microsoft Entra ID 發出的 JSON Web Token (JWT) 作為 OCI API Gateway 下設定的存貨回應。

作業 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. 驗證類型區段中,輸入您從已知 OpenID 端點的 Microsoft Entra ID 取得的 JWKS URI。

    影像 19

  4. 若要建立路由,請輸入下列資訊,然後按一下下一步

    • 路徑:定義路徑。
    • 方法:選取方法。
    • 選取新增單一後端
    • 後端類型:選取股票回應
    • 狀態代碼:輸入狀態代碼。
    • 主體:定義簡單的主體。

    注意:為了簡化起見,我們將顯示庫存回應作為 API 閘道的後端類型。這通常是透過 API 閘道保護的 API,但 Microsoft Entra ID OIDC 認證的組態類似。

    影像 20

  5. 複查段落中,複查建置,然後按一下建立。等待部署處於 Active 狀態並複製端點 URL。

    影像 21

使用 Postman 測試安全的 API 端點。輸入端點,並以路由路徑作為尾碼。新增 Authorization 標頭、使用 Bearer 配置,然後貼上您從 Microsoft Entra ID 取得的 JWT 記號。

影像 22

您的 OCI API 閘道部署現在已使用 Microsoft Entra ID 保護。

認可

其他學習資源

瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center