Edge API와 함께 외부 IDP를 사용하는 경우 CLI에서 OIDC/OAuth2
액세스 토큰을 가져오는 표준 프로세스는 OAuth 2.0 기기 코드 흐름입니다. 이 흐름에서는 get_token 유틸리티를 사용하여 IDP를 통해 인증하기 위해 브라우저에서 URL을 방문하라는 메시지가 표시된 후 터미널이 자동으로 차단 해제됩니다.
그러나 개발 환경에서는 테스트 자동화 또는 CI/CD 파이프라인과 같은 일반적인 개발 작업에 자동화를 지원할 수 있습니다. 외부 IDP가 사용 설정된 경우 이러한 작업을 자동화하려면 브라우저 상호작용 없이 헤드리스 방식으로 OAuth2 토큰을 가져오고 갱신하는 방법이 필요합니다.
Edge는 헤드리스 머신 사용자를 사용하여 자동 토큰 생성을 지원합니다. 머신 사용자는 브라우저 없이 표준 비밀번호 부여를 통해 OIDC/OAuth2 토큰을 가져올 수 있습니다. 즉, 스크립트의 토큰을 가져오고 갱신하는 프로세스를 완전히 자동화할 수 있습니다.
머신 사용자 만들기
모든 조직에서 사용하는 머신 사용자를 만들거나 각 조직에 별도의 머신 사용자를 만들 수 있습니다.
머신 사용자는 로컬 OpenLDAP 디렉터리에 직접 생성 및 저장되며 머신 사용자로 명시적으로 태그 지정됩니다 (employeeType: machineuser). 이를 통해 Apigee SSO는 연동된 SAML/OIDC가 사용자에게 엄격하게 적용되는 경우에도 비밀번호 부여를 통해 머신 사용자를 안전하게 인증할 수 있습니다.
머신 사용자 생성, 나열, 관리에 관한 자세한 내용은 apigee-machineuser.sh로 머신 사용자 관리를 참고하세요.
머신 사용자 토큰 가져오기 및 갱신
/opt/apigee/apigee-openldap/bin/에 제공된 get_token 및 acurl 유틸리티 또는 표준 curl을 사용하여 머신 사용자의 토큰을 가져올 수 있습니다.
- Apigee 유틸리티 사용:
get_token및acurl래퍼는 토큰 캐싱, 페이로드 생성, 자동 갱신을 자동으로 처리합니다. 이러한 도구 사용에 관한 자세한 안내 및 예시는 get_token 및 acurl 유틸리티 사용을 참고하세요. - 표준 curl 사용: 자동화 스크립트가 Apigee 래퍼에 액세스할 수 없는 경우 다음 표준
curl명령어를 사용하여 Apigee SSO와 직접 상호작용할 수 있습니다.
표준 curl을 사용하여 토큰을 가져오고 갱신하려면 다음 단계를 따르세요.
- 다음 API 호출을 사용하여 Apigee SSO에서 직접 초기 액세스 및 갱신 토큰을 생성합니다.
curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \ -H "accept: application/json;charset=utf-8" \ -X POST http://Edge_SSO_IP_DNS:9099/token -s \ -d 'grant_type=password&username=machineUserEmail&password=machineUserPassword&client_id=edgecli&client_secret=edgeclisecret&scope=openid%20profile%20email%20offline_access' Authorization: Bearer헤더에서 액세스 토큰을 Edge Management API 호출에 전달합니다.curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
- 나중에 액세스 토큰을 기본적으로 갱신하려면 갱신 토큰이 포함된 다음 호출을 사용합니다.
curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \ -H "Accept: application/json;charset=utf-8" \ -X POST http://Edge_SSO_IP_DNS:9099/token \ -d 'grant_type=refresh_token&refresh_token=refreshToken&client_id=edgecli&client_secret=edgeclisecret'