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

Private Cloud 適用的 Edge 4.17.09 版

將 SAML 與 Edge API 搭配使用時,從 SAML 斷言取得 OAuth2 存取權和重新整理權杖的程序稱為密碼流程。使用密碼流程時,您可以透過瀏覽器取得一次性密碼,然後用來取得 OAuth2 權杖。

不過,開發環境可能會支援常見開發工作的自動化作業,例如測試自動化或持續整合/持續部署 (CI/CD)。如要在啟用 SAML 時自動執行這些工作,您需要能夠取得及重新整理 OAuth2 權杖,而不需要從瀏覽器複製/貼上密碼。

Edge 支援透過機器使用者自動產生權杖。機器使用者可以取得 OAuth2 權杖,而無須指定密碼。也就是說,您可以使用 Edge 管理 API 完全自動化取得及重新整理 OAuth2 權杖的程序。

建立機器使用者

使用 apigee-ssoadminapi.sh 公用程式,為 SAML 機構建立機器使用者。詳情請參閱「使用 apigee-ssoadminapi.sh」一文。您可以建立單一機器使用者,供所有機構使用,也可以為每個機構建立個別機器使用者。

系統會在 Edge 資料儲存庫中建立及儲存機器使用者,而不是在 SAML 身分提供者中。因此,您不必使用 Edge UI 和 Edge 管理 API 維護機器人使用者。

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

如要建立機器使用者,請按照下列步驟操作:

  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_NAME 是管理員使用者名稱,由用於設定 Edge SSO 模組的設定檔中的 SSO_ADMIN_NAME 屬性定義。預設值為 ssoadmin
    • SSO_ADMIN_SECRET 是設定檔中 SSO_ADMIN_SECRET 屬性指定的管理員密碼。

      在這個範例中,您可以省略 --port--ssl 的值,因為 apigee-sso 模組會使用預設值,即 --port 為 9099,--ssl 為 http。如果您的安裝作業未使用這些預設值,請視情況指定這些值。
  2. 登入 Edge 使用者介面,將機器使用者的電子郵件地址新增至貴機構,並將機器使用者指派至必要角色。詳情請參閱「新增全球使用者」。

取得及更新機器使用者權杖

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

    如要授權,請在「Authorization」標頭中傳遞保留的 OAuth2 用戶端憑證。這個呼叫會將存取和重新整理權杖列印到畫面上。儲存權杖,以便日後使用。
  2. 將存取權杖傳遞至 Edge 管理 API 呼叫,做為 Bearer 標頭:
    > curl -H "Authorization: Bearer access_token" http://ms_IP_DNS:8080/v1/organizations/orgName

    其中 orgName 是包含機器使用者的機構名稱。
  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'


    如要授權,請在 Authorization 標頭中傳遞保留的 OAuth2 用戶端憑證。

使用 Edge 管理 API 建立機器使用者

您可以使用 Edge 管理 API 建立機器使用者,而非使用 apigee-ssoadminapi.sh 公用程式。如要建立機器使用者,請按照下列步驟操作:

  1. 使用下列 cURL 指令,為 ssoadmin 使用者取得權杖,這是 apigee-sso 管理員帳戶的使用者名稱,如設定檔中的 SSO_ADMIN_SECRET 屬性所述。
    > 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 時設定的管理員密碼,如設定檔中的 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 使用者介面,將機器使用者的電子郵件地址新增至貴機構,並將機器使用者指派至必要角色。詳情請參閱「新增全球使用者」。