將 SAML 與自動化工作搭配使用

Private Cloud v4.19.01 版

透過 Edge API 使用 SAML 時,您必須按照以下程序取得 OAuth2 存取權, SAML 宣告中的重新整理憑證稱為密碼流程。設定密碼流程後 使用瀏覽器取得動態密碼,然後再用來取得 OAuth2 權杖。

然而,您的開發環境可能會支援自動化處理一般開發工作。 例如測試自動化或持續整合/持續部署 (CI/CD)。實現自動化 因此在啟用 SAML 後,您需要設法在沒有憑證的情況下取得及更新 OAuth2 權杖 不必從瀏覽器複製/貼上密碼

Edge 支援在 SAML 中使用電腦使用者自動產生權杖 員工只能在您的 Google Cloud 機構中存取資源 無法在其他機構存取資源機器使用者可以 不必指定密碼,即可取得 OAuth2 權杖。這表示您可以完全 使用 Edge Management API 取得並更新 OAuth2 權杖的程序。

您可以透過兩種方式為 SAML 機構建立電腦使用者:

以下章節會分別說明這些方法。

您無法為非 SAML 機構建立電腦使用者。

使用 apigee-ssoadminapi.sh 建立電腦使用者

使用「apigee-ssoadminapi.sh」 公用程式,在 SAML 機構中建立電腦使用者。如需相關資訊,請參閱使用 apigee-ssoadminapi.sh。您可以建立單一電腦使用者 或為各機構建立獨立的電腦使用者。

電腦使用者是在 Edge 資料儲存庫中建立並儲存,而非儲存在 SAML 身分中 。因此,使用 Edge 維護電腦使用者時,您無須自行負責 Ui 和 Edge Management API。

建立電腦使用者時,您必須指定電子郵件地址和密碼。更新後 建立電腦使用者時,請將該使用者指派給一或多個機構。

如要透過 apigee-ssoadminapi.sh 建立電腦使用者,請按照下列指示操作:

  1. 使用下列 apigee-ssoadminapi.sh 指令建立電腦使用者:
    apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME \
      --secret SSO_ADMIN_SECRET --host Edge_SSO_IP_or_DNS \
      -u machine_user_email -p machine_user_password

    在此情況下:

    • SSO_ADMIN_NAMESSO_ADMIN_NAME 個房源 用於設定 Edge 單一登入 (SSO) 模組的設定檔。預設值為 ssoadmin
    • SSO_ADMIN_SECRETSSO_ADMIN_SECRET 屬性。
    • 在這個範例中,您可以省略 --port--ssl,因為 apigee-sso 模組使用預設值 --port 的值為 9099,--ssl 的值為 http。如果您的 安裝時不會使用這些預設值,請視情況指定。

  2. 登入 Edge UI,將電腦使用者的電子郵件新增至貴機構,然後指派 授予必要角色的所有機器使用者請參閱新增全球使用者一文,瞭解如何 內容。

使用 Edge 建立機器使用者 Management API

您可以使用 Edge Management API 建立電腦使用者,而不是使用 「apigee-ssoadminapi.sh」公用程式。

如何透過 Management API 建立電腦使用者:

  1. 使用下列 curl 指令取得 ssoadmin 使用者 ( apigee-sso 管理員帳戶的使用者名稱:
    curl "http://Edge_SSO_IP_DNS:9099/oauth/token" -i -X POST \
      -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' \
      -d "response_type=token" -d "grant_type=client_credentials" \
      --data-urlencode "client_secret=SSO_ADMIN_SECRET" \
      --data-urlencode "client_id=ssoadmin"

    SSO_ADMIN_SECRET 是您在安裝時設定的管理員密碼 apigee-sso,由 SDK 中 SSO_ADMIN_SECRET 屬性指定 設定檔。

    這個指令會顯示下一個呼叫所需的權杖。

  2. 使用以下 curl 指令建立電腦使用者,傳送您取得的權杖
    curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST \
      -H "Accept: application/json" -H "Content-Type: application/json" \
      -d '{"userName" : "machine_user_email", "name" :
        {"formatted":"DevOps", "familyName" : "last_name", "givenName" :
        "first_name"}, "emails" : [ {"value" :
        "machine_user_email", "primary" : true } ], "active" : true,
        "verified" : true, "password" : "machine_user_password" }' \
      -H "Authorization: Bearer token"

    後續步驟中會用到電腦使用者密碼。

  3. 登入 Edge UI。
  4. 將電腦使用者的電子郵件新增至機構,並將電腦使用者指派給 或必要的角色請參閱新增 瞭解詳情。

取得及更新電腦使用者權杖

使用 Edge API 取得並更新電腦使用者的 OAuth2 權杖 憑證,而非密碼

如何為電腦使用者取得 OAuth2 權杖:

  1. 使用下列 API 呼叫產生初始存取和更新權杖:
    curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
      -H "accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      http://Edge_SSO_IP_DNS:9099/oauth/token -s \
      -d 'grant_type=password&username=m_user_email&password=m_user_password'

    儲存符記供日後使用。

  2. 將存取權杖做為 Bearer 標頭傳遞至 Edge Management API 呼叫:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    其中 org_name 是包含電腦使用者的機構名稱。

  3. 稍後如要更新存取權杖,請使用下列包含重新整理的呼叫 符記:
    curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
      -H "Accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      http://edge_sso_IP_DNS:9099/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=refreshToken'