Apigee Edge 문서입니다.
Go to the
Apigee X documentation. info
Apigee Edge를 사용하면 OAuth2 토큰으로 인증된 Edge API 호출을 할 수 있습니다. OAuth2 지원은 Cloud 계정의 Edge에서 기본적으로 사용 설정됩니다. Private Cloud용 Edge 를 사용하는 경우 먼저 SAML 또는 LDAP를 설정하지 않고는 OAuth2를 사용할 수 없습니다.
OAuth2 작동 방식 (Apigee Edge API 사용)
Apigee Edge API 호출에는 인증이 필요하므로 사용자가 누구인지 확인할 수 있습니다. 사용자를 인증하려면 API에 액세스하기 위한 요청과 함께 OAuth2 액세스 토큰을 전송해야 합니다.
예를 들어 Edge에서 조직에 관한 세부정보를 가져오려면 다음과 같은 URL로 요청을 전송합니다.
https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval
하지만 사용자가 누구인지 알려주지 않고는 요청을 전송할 수 없습니다. 그렇지 않으면 누구나 조직의 세부정보를 볼 수 있습니다.
이때 OAuth2가 사용됩니다. 사용자를 인증하려면 요청에 액세스 토큰 도 전송해야 합니다. 액세스 토큰은 사용자가 누구인지 알려주므로 조직의 세부정보를 볼 수 있는지 확인할 수 있습니다.
다행히 Edge OAuth2 서비스에 사용자 인증 정보를 전송하여 토큰을 가져올 수 있습니다. 서비스는 액세스 토큰과 갱신 토큰으로 응답합니다.
OAuth2 흐름: 초기 요청
다음 이미지는 Edge API에 처음 액세스할 때의 OAuth2 흐름을 보여줍니다.
그림 1 과 같이 Edge API에 초기 요청을 하면 다음이 발생합니다.
- 액세스 토큰을 요청합니다.
Edge API, acurl 또는
get_token을 사용하여 이 작업을 할 수 있습니다. 예를 들면 다음과 같습니다.get_token Enter username:
ahamilton@apigee.comEnter the password for user 'ahamilton@apigee.com'[hidden input]Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:123456 - Edge OAuth2 서비스는 액세스 토큰으로 응답하고
stdout에 출력합니다. 예를 들면 다음과 같습니다.Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0 RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG 420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M 2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw
acurl및get_token유틸리티는 액세스 토큰과 갱신 토큰을~/.sso-cli에 자동으로 저장합니다. 갱신 토큰은stdout에 기록되지 않습니다. Edge OAuth2 서비스를 사용하여 토큰을 가져오는 경우 나중에 사용할 수 있도록 직접 저장해야 합니다. - 액세스 토큰으로 Edge API에 요청을 전송합니다.
acurl은 토큰을 자동으로 연결합니다. 예를 들면 다음과 같습니다.acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval
다른 HTTP 클라이언트를 사용하는 경우 액세스 토큰을 추가해야 합니다. 예를 들면 다음과 같습니다.
curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -H "Authorization: Bearer ACCESS_TOKEN"
- Edge API는 요청을 실행하고 일반적으로 데이터가 포함된 응답을 반환합니다.
OAuth2 흐름: 후속 요청
후속 요청에서는 사용자 인증 정보를 토큰으로 교환할 필요가 없습니다. 대신 아직 만료되지 않은 경우 이미 보유하고 있는 액세스 토큰을 포함하면 됩니다.
그림 2 와 같이 액세스 토큰이 이미 있는 경우 다음이 발생합니다.
- 액세스 토큰으로 Edge API에 요청을 전송합니다.
acurlattaches 토큰을 자동으로 연결합니다. 다른 도구를 사용하는 경우 토큰을 수동으로 추가해야 합니다. - Edge API는 요청을 실행하고 일반적으로 데이터가 포함된 응답을 반환합니다.
OAuth2 흐름: 액세스 토큰이 만료된 경우
액세스 토큰이 12시간 후에 만료되면 갱신 토큰을 사용하여 새 액세스 토큰을 가져올 수 있습니다.
그림 3 과 같이 액세스 토큰이 만료되면 다음이 발생합니다.
- Edge API에 요청을 전송하지만 액세스 토큰이 만료되었습니다.
- Edge API는 요청을 승인되지 않은 것으로 거부합니다.
- Edge OAuth2 서비스에 갱신 토큰을 전송합니다.
acurl을 사용하는 경우 이 작업이 자동으로 실행됩니다. - Edge OAuth2 서비스는 새 액세스 토큰으로 응답합니다.
- 새 액세스 토큰으로 Edge API에 요청을 전송합니다.
- Edge API는 요청을 실행하고 일반적으로 데이터가 포함된 응답을 반환합니다.
토큰 가져오기
Edge API에 전송할 수 있는 액세스 토큰을 가져오려면 curl과 같은 유틸리티 외에도 다음
Apigee 유틸리티를 사용할 수 있습니다.
- get_token 유틸리티: Edge API를 호출하는 데 사용할 수 있는 액세스 토큰과 갱신 토큰으로 Apigee 사용자 인증 정보를 교환합니다.
- acurl 유틸리티: 표준
curl명령어에 편리한 래퍼를 제공합니다. Edge API에 대한 HTTP 요청을 구성하고,get_token에서 액세스 토큰과 갱신 토큰을 가져오고, Edge API에 액세스 토큰을 전달합니다. - Edge OAuth2 서비스의 토큰 엔드포인트: Edge API 호출을 통해 Apigee 사용자 인증 정보를 액세스 토큰과 갱신 토큰으로 교환합니다.
이러한 유틸리티는 Apigee 계정 사용자 인증 정보 (이메일 주소 및 비밀번호)를 다음과 같은 기간의 토큰으로 교환합니다.
- 액세스 토큰은 12시간 후에 만료됩니다.
- 갱신 토큰은 30일 후에 만료됩니다.
따라서 acurl 또는 get_token으로 API 호출을 성공적으로 한 후에는 30일 동안 토큰 쌍을 계속 사용할 수 있습니다. 만료 후에는 사용자 인증 정보를 다시 입력하고 새 토큰을 가져와야 합니다.
OAuth2로 Edge API에 액세스
Edge API에 액세스하려면 API 엔드포인트에 요청을 전송하고 액세스 토큰을 포함합니다.
curl과 같은 명령줄 유틸리티, Postman과 같은 브라우저 기반 UI 또는 acurl과 같은 Apigee 유틸리티를 비롯한 모든 HTTP 클라이언트를 사용하여 이 작업을 할 수 있습니다.
acurl 및 curl을 사용하여 Edge API에 액세스하는 방법은
다음 섹션에 설명되어 있습니다.
acurl 사용
acurl을 사용하여 Edge API에 액세스하려면 초기 요청에 사용자
인증 정보가 포함되어야 합니다. Edge OAuth2 서비스는 액세스 토큰과 갱신 토큰으로 응답합니다. acurl
은 토큰을 로컬에 저장합니다.
후속 요청에서 acurl은 ~/.sso-cli에 저장된 토큰을 사용하므로
토큰이 만료될 때까지 사용자 인증 정보를 다시 포함할 필요가 없습니다.
다음 예는 'ahamilton-eval' 조직의 세부정보를 가져오는 초기 acurl 요청을 보여줍니다.
acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -u ahamilton@apigee.com Enter the password for user 'ahamilton@apigee.com'[hidden input]Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:1a2b3c{ "createdAt" : 1491854501264, "createdBy" : "noreply_iops@apigee.com", "displayName" : "ahamilton", "environments" : [ "prod", "test" ], "lastModifiedAt" : 1491854501264, "lastModifiedBy" : "noreply_iops@apigee.com", "name" : "ahamilton", "properties" : { "property" : [ { "name" : "features.isSmbOrganization", "value" : "false" }, { "name" : "features.isCpsEnabled", "value" : "true" } ] }, "type" : "trial" }acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]
이 예에서는 조직에 관한 세부정보를 가져오는 것 외에도 'helloworld' API 프록시 내에서 정책 목록을 가져오는 두 번째 요청 을 보여줍니다. 두 번째 요청은 URL에서 'organizations'의 약어 'o'를 사용합니다.
acurl은 두 번째 요청에서 액세스 토큰을 자동으로 전달합니다.
`acurl`이 OAuth2 토큰을 저장하면acurl 사용자 인증 정보를 전달할 필요가 없습니다. 후속 호출을 위해 ~/.sso-cli에서 토큰을 가져옵니다.
자세한 내용은 acurl을 사용하여 Edge API에 액세스를 참고하세요.
curl 사용
curl을 사용하여 Edge API에 액세스할 수 있습니다. 이렇게 하려면 먼저
액세스 토큰과 갱신 토큰을 가져와야 합니다. get_token과 같은 유틸리티 또는
Edge OAuth2 서비스를 사용하여 이러한 토큰을 가져올 수 있습니다.
액세스 토큰을 성공적으로 저장한 후에는 다음 예와 같이 Edge API 호출의
Authorization 헤더에 전달합니다.
curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \ -H "Authorization: Bearer ACCESS_TOKEN"
액세스 토큰은 발급 후 12시간 동안 유효합니다. 액세스 토큰이 만료된 후에는 갱신 토큰을 30일 동안 사용하여 사용자 인증 정보 없이 다른 액세스 토큰을 발급할 수 있습니다. Apigee는 API 호출마다 사용자 인증 정보를 입력하고 새 요청을 하는 대신 갱신 토큰이 만료된 후에만 새 액세스 토큰을 요청하는 것이 좋습니다.
토큰 만료
액세스 토큰이 만료되면 사용자 인증 정보를 다시 제출하지 않고도 갱신 토큰을 사용하여 새 액세스 토큰을 가져올 수 있습니다.
액세스 토큰을 새로고침하는 방법은 사용 중인 도구에 따라 다릅니다.
acurl: 아무 작업도 필요하지 않습니다.acurl은 오래된 액세스 토큰이 포함된 요청을 전송할 때 액세스 토큰을 자동으로 새로고침합니다.get_token:get_token을 호출하여 액세스 토큰을 새로고침합니다.- Edge OAuth2 서비스: 다음을 포함하는 요청을 전송합니다.
- 갱신 토큰
- 'refresh_token'으로 설정된
grant_type양식 매개변수
머신 사용자를 위한 OAuth2
`acurl` 및 `get_token` 유틸리티를 사용하여 머신 사용자를 위한 OAuth2 인증으로 Edge API에 대한 자동 액세스
를 스크립팅할 수 있습니다. 다음 예는
get_token을 사용하여
액세스 토큰을 요청한 후 토큰 값을 curl 호출에 추가하는 방법을 보여줍니다.
USER=me@example.comPASS=not-that-secretTOKEN=$(get_token -u $USER:$PASS -m '')curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'
또는 토큰 요청과 curl 호출을 acurl 유틸리티를 사용하여 결합할 수 있습니다.
예를 들면 다음과 같습니다.
USER=me@example.comPASS=not-that-secretacurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
두 예 모두 -m의 값을 빈 문자열로 설정하면 머신 사용자
에게 MFA 코드를 묻는 메시지가 표시되지 않습니다.