附註:

在 OCI API 閘道啟用 OAuth2 認證,以使用 OCI 函數和 OCI SDK 呼叫 OCI 服務

簡介

我們通常需要應用系統來使用 Oracle Cloud Infrastructure (OCI) REST 服務。有數種方式可以保證元件之間的安全性,確保應用程式能夠安全地向後端服務進行認證。

此工作在 Oracle Cloud 內原生,因為有幾種方式可以保護網路及存取現有服務。只需幾個設定即可完成。不過,在某些情況下,應用程式可能會提供額外的安全性和連線需求。此材料的使用案例在混合或多雲端案例中滿足了非常常見的需求 (連線到 Oracle Cloud 的內部部署,或連線到另一個雲端的 Oracle Cloud)。

讓我們呈現下列案例:

因此,教學課程提供下列解決方案:

目標

必要條件

作業 1:使用 Oracle Identity Cloud Service 設定 OAuth2

  1. 取得 OCI API 閘道參數:開始設定 OAuth2 機制。我們需要將您的 OCI API 閘道執行處理與身分識別提供者整合,方法是將 Oracle Cloud 的 Oracle Identity Cloud Service 設定為身分識別提供者。

    前往 OCI API 閘道執行處理並複製主機名稱。此資訊將在下一步驟用於您的 Oracle Identity Cloud Service 資源伺服器組態。

    img.png

  2. 建立資源應用程式:我們需要為您的應用程式建立 OAuth2 授權者。我們可以在 Oracle Cloud 中與 Oracle Identity Cloud Service 搭配使用。

    1. 在 OCI 主控台中,前往識別與安全性,然後選取聯合

      img.png

    2. 按一下 OracleIdentityCloudSevice

      img.png

    3. 按一下您 Oracle Identity Cloud Service 執行處理的連結。

      img.png

    4. 我們將建立兩個應用程式。按一下應用程式和服務

      img.png

    5. 在應用程式中,按一下新增

      img.png

    6. 選取機密應用程式,即可開始設定您的資源伺服器。

      img.png

    7. 我們將設定第一個應用程式。在您的資源伺服器應用程式中輸入名稱,然後按下一步

      img.png

    8. 按一下略過以供稍後使用。我們只需要設定資源。

      img.png

    9. 輸入您在步驟 1 中取得的 OCI API 閘道主機名稱。

      img.png

    10. 按一下新增範圍,然後輸入範圍資訊。

      img.png

    11. 複查您的範圍資訊,按兩次下一步,然後按一下完成

      img.png

    12. 按一下啟用來啟用您的應用程式。

      img.png

  3. 建立從屬端應用程式

    1. 在應用程式中,按一下新增

      img.png

    2. 選取機密應用程式,即可開始設定您的資源伺服器。

      img.png

    3. 輸入您應用程式的名稱,然後按下一步

      img_1.png

    4. 選取立即將應用程式設定為用戶端,為您的用戶端應用程式啟用組態。選取從屬端證明資料JWT 宣告以及代表

      img.png

    5. 向下捲動畫面,然後按一下新增範圍

      img.png

    6. 尋找您之前建立的資源應用程式 (此工作中的 oauth_resource_server),然後按一下新增

      img.png

    7. 您可以查看已新增至應用程式的範圍。按下一步

      img.png

      注意:請保留範圍值,您必須使用它來要求記號。

    8. 略過資源Web 層原則視窗。在授權中,選取強制授權,然後按一下完成

      img.png

    9. 保留從屬端 ID從屬端密碼資訊。您必須取得您的權杖。

      img.png

    10. 按一下啟用即可啟用您的應用程式,OAuth2 授權者已準備好進行測試。

      img_1.png

  4. 取得權杖:現在我們可以測試 OAuth2 授權者以取得權杖。

    1. 撰寫授權者的 URL。您可以在瀏覽器中取得 Oracle Identity Cloud Service URL,以取得此 URL。在 Oracle Identity Cloud Service URL 中,您可以看到像這樣的內容:https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/ui/v1/adminconsole

    2. 您必須要有 URL 連結,直到 oraclecloud.com 為根端點。例如 https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com

    3. 我們需要新增 oAuth 認證路徑。此 URL 將作為 POST REST 要求執行。例如,https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/oauth2/v1/token。您必須輸入一些參數才能要求權杖。

    4. 將證明資料輸入為基本認證從屬端 ID 以及從屬端密碼

      img.png

    5. 主體內容中,輸入 grant_typescope 值。請記住,範圍是擷取在 Oracle Identity Cloud Service 組態中。

      img.png

    6. 按一下傳送,然後執行 POST 要求並檢視記號。

      img_2.png

  5. 建立 JSON Web 金鑰 (JWK) :在您的瀏覽器中,輸入新增 /admin/v1/SigningCert/jwk 以取得 JWK 的根 Oracle Identity Cloud Service 端點:https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/admin/v1/SigningCert/jwk

    您將會收到如下所示的 JWK 字串。

    img_2.png

    我們需要處理此 JWK 字串。

    {"keys":[{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"key_ops":["sig","encrypt"],"alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}]}
    

    注意

    • 已隱匿此 JWK。

    • 如果您收到錯誤訊息,必須提供 Oracle Identity Cloud Service 的存取權。

    img.png

    JWK 字串的重要變更:在進行某些變更之前,JWK 字串在 OCI API 閘道中將無用。

    1. 使用 "key_ops":["x","y","z"] 尋找區隔,並以 "use" :"sig" 取代。其外觀如下所示 (比較兩個字串)。

      {"keys":[{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"use" : "sig","alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}]}
      
    2. 從開頭移除字串 {"keys":[,從結尾移除 ]}。最後一個字串的外觀如下所示。現在您可以使用它。

      {"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"use" : "sig","alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}
      

作業 2:設定 OCI 函數以呼叫您的 OCI SDK API

  1. 瞭解 OCI 函數和 API 閘道:透過 API 閘道公開服務是最佳做法。許多認證都可以藉由將證明資料從 API 閘道略過到後端服務來完成,但如果後端認證不是從屬端應用程式的適當方法,我們可以在 API 閘道層次執行一些組態。

    在此步驟中,讓我們瞭解 OCI API Gateway 如何協助我們整合 OAuth2 認證和任何 OCI 服務的要求,例如透過 OCI Functions 進行資料科學模型部署預測。

    OCI 函數可以執行工作來接收主體要求並傳送至 OCI 服務。OCI 服務中的部分服務無法透過 OAuth2 方法進行認證,因此我們可以使用 OCI 函數進行認證。

    在此範例中,模型部署預測服務可透過 OCI IAM 中的 OCI 私密金鑰進行認證。它可由資源主體完成。

    如果您不知道如何建立及部署 OCI 函數,請參閱 OCI 函數快速啟動

  2. 瞭解程式碼:此程式碼將與 OCI API 閘道搭配使用。在您的 API 部署中,我們將在 API 閘道中設定模型部署端點,並將其作為 HEADER 參數傳送。因此,您可以在每個所需的 API 閘道部署中,將此功能用於許多模型部署。

    img_3.png

    • 我們將使用 Python 中的 oracle.ads 程式庫,由資源主體授權此函數對「模型部署」執行處理的存取 (請參閱工作 4)。

      ads.set_auth('resource_principal')
      
    • 本文內容可由此明細行擷取。

      body = json.loads(data.getvalue())
      
    • 我們將在 OCI API Gateway 中設定名為 model_deployment 的 HEADER。此 HEADER 包含 API 閘道要求中傳送之模型部署預測的 URL。

      endpoint = ctx.Headers()["model_deployment"]
      
    • 這將會執行 REST API POST 要求,並從資料科學端點的模型部署傳回結果。

      return requests.post(endpoint, json=body, auth=ads.common.auth.default_signer()['signer']).json()
      
    • 這是需要載入此函數中的 requirements.txt 程式庫。

      requirements.txt
      ---------------------
      fdk>=0.1.54
      requests
      oracle-ads
      

    部署您的 OCI 函數,並在 OCI API 閘道中設定。

作業 3:設定 API 閘道部署認證

注意:如需有關如何開發 OCI 函數並在 OCI API 閘道中呼叫它的詳細資訊,請參閱使用 API 閘道呼叫 OCI 函數

  1. 選取 OAuth 2.0 / OpenID Connect 並輸入下列組態。這是透過 HEADER 認證的預設方式。

    Token Location: Header
    JWT token header name: Authorization
    Authentication scheme: Bearer
    
  2. 輸入先前建立的 JSON Web 金鑰字串,選取靜態金鑰,然後輸入下列資訊。

    Key ID: SIGNING_KEY
    Key format: JSON web key
    JSON web key: <Your JWK string created previously>
    
  3. 輸入「發照者」為 https://identity.oraclecloud.com/,輸入先前取得之 OCI API 閘道主機名稱的「對象」。

    img.png

    設定您在上一個作業中建立的 OCI 函數。

    img_1.png

  4. 設定 HEADER model_deployment 參數,按一下顯示路由要求原則

    img_5.png

  5. 標頭轉換中,按一下新增

    img_2.png

  6. 您必須要有資料科學模型部署預測 URL,您可以在此處取得:前往資料科學功能表,選取您的資料科學執行處理和模型部署,然後按一下呼叫您的模型

    注意:請在此處儲存您的模型部署 OCID。您之後將需要設定原則。

    img_3.png

    您的資料科學模型部署預測 URL。

    img_4.png

  7. 輸入標頭名稱作為 model_deployment ,並輸入值作為「資料科學模型部署」預測 URL。

    img_3.png

    img_4.png

    注意:儲存 API 閘道部署之後,請記住您的 API 部署端點。

    img_2.png

工作 4:設定 OCI 群組和原則

建立動態群組,將 OCI 函數的存取權授予您的 OCI 資源。在本教學課程中,我們正在使用資料科學模型部署。如需如何使用「資源主體」的詳細資訊,請參閱資源主體

  1. 取得模型部署執行處理的 OCID 。在動態群組字串中輸入 OCID。

    ALL {resource.type = 'fnfunc', resource.id = 'ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
    

    注意resource.id 是先前在「模型建置主控台」畫面中取得的 OCID。

    img_4.png

  2. 建立允許您動態群組的原則。如需詳細資訊,請參閱模型部署原則

    allow dynamic-group hoshikawa_datascience to {DATA_SCIENCE_MODEL_DEPLOYMENT_PREDICT} in tenancy
    allow dynamic-group hoshikawa_datascience to manage data-science-model-deployments in tenancy
    

    img_4.png

作業 5:測試 API

現在,讓我們在 OCI Data Science 中模擬您模型部署服務的應用程式 OAuth2 要求。

  1. 取得將從屬端 ID從屬端加密密碼傳送至您 Oracle Identity Cloud Service 提供者的權杖。

    img_2.png

  2. 輸入您的 OCI API 閘道部署端點,然後選取 POST REST 要求。複製 access_token 值並傳送至您的 OCI API 閘道部署。請記住,您的記號有一個小時的持續時間。

    img_5.png

    結果就是這裡!

    img.png

認可

其他學習資源

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

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