현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동 정보
Apigee Edge를 사용하면 OAuth2 토큰으로 인증된 Edge API 호출을 수행할 수 있습니다. OAuth2 지원은 클라우드 계정의 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.com
Enter 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에 요청을 전송합니다.
acurl
는 토큰을 자동으로 연결합니다. 다른 도구를 사용하는 경우 토큰을 수동으로 추가해야 합니다. - 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
), 브라우저 기반 UI(예: Postman), Apigee 유틸리티(예: acurl
)를 포함한 모든 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에서 '조직'에 단축된 'o'를 사용합니다.
acurl
는 두 번째 요청에서 액세스 토큰을 자동으로 전달합니다. acurl
에서 OAuth2 토큰을 저장한 후에는 사용자 인증 정보를 전달할 필요가 없습니다. 후속 호출을 위해 ~/.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
를 호출하여 액세스 토큰을 새로고침합니다.- 에지 OAuth2 서비스: 다음이 포함된 요청을 전송합니다.
- 갱신 토큰
grant_type
양식 매개변수가 'refresh_token'으로 설정됨
머신 사용자용 OAuth2
acurl
및 get_token
유틸리티를 사용하여 머신 사용자를 위한 OAuth2 인증을 통해 Edge API에 대한 자동 액세스를 스크립팅할 수 있습니다. 다음 예에서는 get_token
를 사용하여 액세스 토큰을 요청한 후 토큰 값을 curl
호출에 추가하는 방법을 보여줍니다.
USER=me@example.com
PASS=not-that-secret
TOKEN=$(get_token -u $USER:$PASS -m '')
curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'
또는 acurl
유틸리티를 사용하여 토큰 요청과 curl
호출을 결합할 수 있습니다.
예를 들면 다음과 같습니다.
USER=me@example.com
PASS=not-that-secret
acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
두 가지 예시에서 -m
값을 빈 문자열로 설정하면 머신 사용자에게 MFA 코드를 입력하라는 메시지가 표시되지 않습니다.