Edge API와 함께 외부 IDP를 사용하는 경우 IDP 상호작용에서 OAuth2 액세스 및 갱신 토큰을 가져오는 프로세스를 비밀번호 흐름이라고 합니다. 비밀번호 흐름을 사용하면 브라우저를 사용하여 일회용 비밀번호를 가져온 후 이를 사용하여 OAuth2 토큰을 가져옵니다.
하지만 개발 환경에서는 테스트 자동화 또는 CI/CD와 같은 일반적인 개발 작업에 자동화를 지원할 수 있습니다. 외부 IDP가 사용 설정된 경우 이러한 작업을 자동화하려면 브라우저에서 비밀번호를 복사하여 붙여넣지 않고도 OAuth2 토큰을 가져오고 갱신할 수 있는 방법이 필요합니다.
Edge는 IDP가 사용 설정된 조직 내에서 머신 사용자를 사용하여 자동화된 토큰 생성을 지원합니다. 머신 사용자는 비밀번호를 지정하지 않고도 OAuth2 토큰을 가져올 수 있습니다. 즉, Edge Management API를 사용하여 OAuth2 토큰을 가져오고 갱신하는 프로세스를 완전히 자동화할 수 있습니다.
IDP가 사용 설정된 조직의 머신 사용자를 만드는 방법은 두 가지입니다.
이러한 각 방법은 다음 섹션에 설명되어 있습니다.
외부 IDP가 사용 설정되지 않은 조직의 머신 사용자는 만들 수 없습니다.
apigee-ssoadminapi.sh로 머신 사용자 만들기
apigee-ssoadminapi.sh
유틸리티를 사용하여 IDP가 사용 설정된 조직 내에서 머신 사용자를 만듭니다. 자세한 내용은 apigee-ssoadminapi.sh 사용을 참고하세요. 모든
조직에서 사용하는 단일 머신 사용자를 만들거나 각 조직에 대해 별도의 머신 사용자를 만들 수 있습니다.
머신 사용자는 IDP가 아닌 Edge 데이터 저장소에 생성되고 저장됩니다. 따라서 Edge UI 및 Edge Management API를 사용하여 머신 사용자를 유지관리할 책임은 사용자에게 없습니다.
머신 사용자를 만들 때는 이메일 주소와 비밀번호를 지정해야 합니다. 머신 사용자를 만든 후 하나 이상의 조직에 할당합니다.
apigee-ssoadminapi.sh로 머신 사용자를 만들려면 다음 안내를 따르세요.
- 다음
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은 Apigee SSO 모듈을 구성하는 데 사용되는 구성 파일의
SSO_ADMIN_NAME속성으로 정의된 관리자 사용자 이름입니다. 기본값은ssoadmin입니다. - SSO_ADMIN_SECRET은 구성 파일의
SSO_ADMIN_SECRET속성에 지정된 관리자 비밀번호입니다.이 예에서는
--port및--ssl의 값을 생략할 수 있습니다.apigee-sso모듈이--port의 기본값 9099와--ssl의 기본값 http를 사용하기 때문입니다. 설치에서 이러한 기본값을 사용하지 않는 경우 적절하게 지정하세요.
- SSO_ADMIN_NAME은 Apigee SSO 모듈을 구성하는 데 사용되는 구성 파일의
- Edge UI에 로그인하고 머신 사용자의 이메일을 조직에 추가한 후 머신 사용자를 필요한 역할에 할당합니다. 자세한 내용은 전역 사용자 추가를 참고하세요.
Edge Management API로 머신 사용자 만들기
apigee-ssoadminapi.sh 유틸리티를 사용하는 대신 Edge Management API를 사용하여 머신 사용자를 만들 수 있습니다.
Management API로 머신 사용자를 만들려면 다음 안내를 따르세요.
- 다음
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을 설치할 때 설정한 관리자 비밀번호입니다.이 명령어는 다음 호출을 수행하는 데 필요한 토큰을 표시합니다.
- 다음
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"이후 단계에서 머신 사용자 비밀번호가 필요합니다.
- Edge UI에 로그인합니다.
- 머신 사용자의 이메일을 조직에 추가하고 머신 사용자를 필요한 역할에 할당합니다. 자세한 내용은 전역 사용자 추가를 참고하세요.
머신 사용자 토큰 가져오기 및 갱신
Edge API를 사용하여 비밀번호 대신 머신 사용자의 사용자 인증 정보를 전달하여 OAuth2 토큰을 가져오고 갱신합니다.
머신 사용자의 OAuth2 토큰을 가져오려면 다음 안내를 따르세요.
- 다음 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'
나중에 사용할 수 있도록 토큰을 저장합니다.
- 다음 예와 같이 액세스 토큰을 Edge Management API 호출에
Bearer헤더로 전달합니다.curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
여기서 org_name은 머신 사용자가 포함된 조직의 이름입니다.
- 나중에 액세스 토큰을 갱신하려면 갱신 토큰이 포함된 다음 호출을 사용합니다.
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'