프라이빗 클라우드용 Edge v4.19.01
이 문서에서는 최종 사용자 ID, 앱 ID 또는 둘 다를 사용하여 OAuth 2.0 액세스 토큰을 검색하고 취소하는 방법을 설명합니다.
앱 ID는 OAuth 액세스 토큰에 자동으로 추가됩니다. 따라서 아래 절차를 사용하여 조직에 토큰 액세스를 사용 설정한 후 앱 ID로 토큰에 액세스할 수 있습니다.
최종 사용자 ID로 OAuth 2.0 액세스 토큰을 검색하고 취소하려면 액세스 토큰에 최종 사용자 ID가 있어야 합니다. 아래 절차에서는 기존 토큰 또는 새 토큰에 최종 사용자 ID를 추가하는 방법을 설명합니다.
기본적으로 Edge에서 OAuth 2.0 액세스 토큰을 생성할 때 토큰의 형식은 다음과 같습니다.
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", "refresh_count" : "0" }
다음에 유의하세요.
application_name필드에는 토큰과 연결된 앱의 UUID가 포함됩니다. 앱 ID로 OAuth 2.0 액세스 토큰의 검색 및 취소를 사용 설정하는 경우 이 앱 ID를 사용합니다.access_token필드에는 OAuth 2.0 액세스 토큰 값이 포함됩니다.
최종 사용자 ID로 OAuth 2.0 액세스 토큰을 검색하고 취소하려면 아래 절차에 설명된 대로 토큰에 사용자 ID를 포함하도록 OAuth 2.0 정책을 구성합니다.
최종 사용자 ID는 Edge에서 개발자 ID로 사용하는 문자열이며 개발자의 이메일 주소가 아닙니다. 개발자 가져오기 API 호출을 사용하여 개발자의 이메일 주소에서 개발자의 ID를 확인할 수 있습니다.
토큰에 최종 사용자 ID를 포함하도록 Edge를 구성하면 아래와 같이 app_enduser 필드로 포함됩니다.
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "app_enduser" : "6ZG094fgnjNf02EK", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", "refresh_count" : "0" }
사용자 ID 및 앱 ID로 OAuth 2.0 액세스 토큰을 검색하고 취소하는 API
다음 API를 사용하여 사용자 ID, 앱 ID 또는 둘 다로 OAuth 토큰에 액세스합니다.
토큰 액세스 사용 설정 절차
다음 절차에 따라 최종 사용자 ID 및 앱 ID로 OAuth 2.0 액세스 토큰을 검색하고 취소할 수 있습니다.
1단계: 조직에 토큰 액세스 지원 사용 설정
각 조직에 대해 별도로 토큰 액세스를 사용 설정해야 합니다. 최종 사용자 ID 또는 앱 ID로 OAuth 2.0 액세스 토큰의 검색 및 취소를 사용 설정하려는 각 조직에 대해 아래의 PUT API를 호출합니다.
다음 호출을 수행하는 사용자는 조직의 orgadmin 또는 opsadmin 역할에 있어야 합니다. values를 조직별 값으로 바꿉니다.
curl -H "Content-type:text/xml" -X POST \
https://management_server_IP;:8080/v1/organizations/org_name \
-d '<Organization name="org_name">
<Properties>
<Property name="features.isOAuthRevokeEnabled">true</Property>
<Property name="features.isOAuth2TokenSearchEnabled">true</Property>
</Properties>
</Organization>' \
-u USER_EMAIL:PASSWORD2단계: 조직에서 opsadmin 역할에 대한 권한 설정
조직의 orgadmin 및 opsadmin 역할에만 사용자 ID 또는 앱 ID를 기반으로 OAuth 2.0 토큰을 검색 (HTTP GET)하고 취소 (HTTP PUT)할 수 있는 권한이 부여되어야 합니다. 액세스를 제어하려면 조직의 /oauth2 리소스에 대한 가져오기 및 배치 권한을 설정합니다. 이 리소스에는 다음과 같은 형식의 URL이 있습니다.
https://management_server_IP:8080/v1/organizations/org_name/oauth2
orgadmin 역할에는 이미 필요한 권한이 있습니다. /oauth2 리소스의 opsadmin 역할의 경우 권한은 다음과 같이 표시됩니다.
<ResourcePermission path="/oauth2">
<Permissions>
<Permission>get</Permission>
<Permission>put</Permission>
</Permissions>
</ResourcePermission>단일 리소스 API에 대한 권한 가져오기 호출을 사용하여 /oauth2 리소스에 대한 권한이 있는 역할을 확인할 수 있습니다.
응답에 따라 역할에 리소스 권한 추가 및 리소스 권한 삭제 API 호출을 사용하여 /oauth2 리소스 권한을 필요한 대로 조정할 수 있습니다.
다음 curl 명령어를 사용하여 opsadmin 역할에 /oauth2 리소스에 대한 get 및 put 권한을 부여합니다. values를 조직별 값으로 바꿉니다.
curl -X POST -H 'Content-type:application/xml' \
http://management_server_IP:8080/v1/organizations/org_name/userroles/opsadmin/permissions \
-d '<ResourcePermission path="/oauth2">
<Permissions>
<Permission>get</Permission>
<Permission>put</Permission>
</Permissions>
</ResourcePermission>' \
-u USEREMAIL:PASSWORD
다음 curl 명령어를 사용하여 orgadmin 및 opsadmin 이외의 역할에서 /oauth2 리소스에 대한 get 및 put 권한을 취소합니다. values를 조직별 값으로 바꿉니다.
curl -X DELETE -H 'Content-type:application/xml' \
http://management_server_IP:8080/v1/organizations/org_name/userroles/roles/permissions \
-d '<ResourcePermission path="/oauth2">
<Permissions></Permissions>
</ResourcePermission>' \
-u USEREMAIL:PASSWORD
3단계: oauth_max_search_limit 속성 설정
/opt/apigee/customer/application/management-server.properties 파일의 conf_keymanagement_oauth_max_search_limit 속성이 100으로 설정되어 있는지 확인합니다.
conf_keymanagement_oauth_max_search_limit = 100
이 파일이 존재하지 않으면 만듭니다.
이 속성은 토큰을 가져올 때 사용되는 페이지 크기를 설정합니다. Apigee에서는 100을 권장하지만 적절하게 설정할 수 있습니다.
새로 설치하는 경우 속성이 이미 100으로 설정되어 있어야 합니다. 이 속성 값을 변경해야 하는 경우 다음 명령어를 사용하여 관리 서버 및 메시지 프로세서를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart4단계: 최종 사용자 ID를 포함하는 토큰을 생성하는 OAuth 2.0 정책 구성
액세스 토큰을 생성하는 데 사용되는 OAuth 2.0 정책을 구성하여 토큰에 최종 사용자 ID를 포함합니다. 액세스 토큰에 최종 사용자 ID를 포함하면 ID별로 토큰을 검색하고 취소할 수 있습니다.
액세스 토큰에 최종 사용자 ID를 포함하도록 정책을 구성하려면 액세스 토큰을 만드는 요청에 최종 사용자 ID가 포함되어야 하며 최종 사용자 ID가 포함된 입력 변수를 지정해야 합니다.
아래의 OAuth 2.0 정책(GenerateAccessTokenClient)은 OAuth 2.0 액세스 토큰을 생성합니다. 최종 사용자 ID가 포함된 변수를 지정하는 <AppEndUser> 태그가 굵게 추가되었습니다.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient"> <DisplayName>OAuth 2.0.0 1</DisplayName> <ExternalAuthorization>false</ExternalAuthorization> <Operation>GenerateAccessToken</Operation> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> <GrantType>request.queryparam.grant_type</GrantType> <AppEndUser>request.header.appuserID</AppEndUser> <ExpiresIn>960000</ExpiresIn> </OAuthV2>
그런 다음 다음 curl 명령어를 사용하여 OAuth 2.0 액세스 토큰을 생성하고 사용자 ID를 appuserID 헤더로 전달할 수 있습니다.
curl -H "appuserID:6ZG094fgnjNf02EK" \ https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials \ -X POST -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNXFmP&client_secret=gk5K5lIp943AY4'
이 예시에서는 appuserID가 요청 헤더로 전달됩니다. 여러 가지 방법으로 요청의 일부로 정보를 전달할 수 있습니다. 예를 들어 다음과 같은 작업을 할 수 있습니다.
- 양식 매개변수 변수
request.formparam.appuserID를 사용합니다. - 최종 사용자 ID를 제공하는 흐름 변수를 사용합니다.