자동화된 태스크로 SAML 사용

프라이빗 클라우드용 Edge v. 4.17.09

Edge API에서 SAML을 사용하는 경우 SAML 어설션에서 OAuth2 액세스 및 갱신 토큰을 가져오는 데 사용하는 프로세스를 비밀번호 흐름이라고 합니다. 비밀번호 흐름에서는 브라우저를 사용하여 일회용 비밀번호를 가져온 다음 이를 사용하여 OAuth2 토큰을 가져옵니다.

하지만 개발 환경에서 테스트 자동화 또는 지속적 통합/지속적 배포 (CI/CD)와 같은 일반적인 개발 작업의 자동화를 지원할 수 있습니다. SAML이 사용 설정된 경우 이러한 작업을 자동화하려면 브라우저에서 비밀번호를 복사하여 붙여넣지 않고도 OAuth2 토큰을 가져오고 새로고침할 수 있는 방법이 필요합니다.

Edge는 머신 사용자를 통해 자동 토큰 생성을 지원합니다. 머신 사용자는 비밀번호를 지정하지 않고도 OAuth2 토큰을 가져올 수 있습니다. 즉, Edge Management API를 사용하여 OAuth2 토큰을 가져오고 새로고침하는 프로세스를 완전히 자동화할 수 있습니다.

머신 사용자 만들기

apigee-ssoadminapi.sh 유틸리티를 사용하여 SAML 조직의 머신 사용자를 만듭니다. 자세한 내용은 apigee-ssoadminapi.sh 사용을 참조하세요. 모든 조직에서 사용하는 단일 머신 사용자를 만들거나 각 조직에 대해 별도의 머신 사용자를 만들 수 있습니다.

머신 사용자는 SAML ID 공급업체가 아닌 Edge 데이터 스토어에서 생성되고 저장됩니다. 따라서 Edge UI 및 Edge Management API를 사용하여 머신 사용자를 유지관리할 책임이 없습니다.

머신 사용자를 만들 때 이메일 주소와 비밀번호를 지정해야 합니다. 머신 사용자를 만든 후 하나 이상의 조직에 할당합니다.

thought 머신 사용자를 만들려면 다음 안내를 따르세요.

  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 속성으로 지정된 관리자 비밀번호입니다.

      이 예시에서는 apigee-sso 모듈이 --port에 기본값 9099를 사용하고 --ssl에 http를 사용하므로 --port 및 --ssl 값을 생략할 수 있습니다. 설치에서 이러한 기본값을 사용하지 않는 경우 적절하게 지정합니다.
  2. Edge UI에 로그인하고 머신 사용자의 이메일을 조직에 추가하고 머신 사용자를 필요한 역할에 할당합니다. 자세한 내용은 전역 사용자 추가를 참조하세요.

머신 사용자 토큰 가져오기 및 새로고침

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. 액세스 토큰을 Bearer 헤더로 Edge Management API 호출에 전달합니다.
    > 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 Management API를 사용하여 머신 사용자 만들기

apigee-ssoadminapi.sh 유틸리티를 사용하는 대신 Edge Management API를 사용하여 머신 사용자를 만들 수 있습니다. 머신 사용자를 만들려면 다음 안내를 따르세요.

  1. 다음 cURL 명령어를 사용하여 apigee-sso의 관리자 계정 사용자 이름인 ssoadmin 사용자의 토큰을 가져옵니다.
    > 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은 구성 파일의 SSO_ADMIN_SECRET 속성에 지정된 대로 apigee-sso를 설치할 때 설정한 관리자 비밀번호입니다.

    이 명령어는 다음 호출을 수행하는 데 필요한 토큰을 표시합니다.
  2. 다음 cURL 명령어를 사용하여 머신 사용자를 만들고 이전 단계에서 받은 Bearer 토큰을 전달합니다.
    > 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에 로그인하고 머신 사용자의 이메일을 조직에 추가하고 머신 사용자를 필요한 역할에 할당합니다. 자세한 내용은 전역 사용자 추가를 참조하세요.