토큰 및 승인 코드 맞춤설정

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

토큰 메타데이터 정보

Apigee Edge는 OAuth 액세스 토큰, 갱신 토큰, 승인 코드를 생성하여 인증된 앱에 제공합니다. 생성 시 Edge는 이러한 토큰과 코드를 저장합니다. 나중에 Edge에서 이러한 토큰이나 코드가 포함된 인바운드 API 요청을 수신하면 저장된 정보를 사용하여 요청을 승인합니다.

Edge에서 이러한 OAuth 아티팩트를 생성할 때 토큰이나 코드에도 메타데이터를 추가합니다. 예를 들어 액세스 토큰은 만료 시간, 관련 앱 및 개발자, 기타 정보를 정의하는 이름/값 쌍과 연결되어 있습니다.

Edge 액세스 토큰의 JSON 표현은 다음과 같습니다.

{
  "issued_at" : "1372170159093",
  "application_name" : "ccd1803b-b557-4520-bd62-ddd3abf8e501",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[Product1,Product2]",
  "api_product_list_json" : ["Product1", "Product2"],
  "expires_in" : "3599", //--in seconds
  "developer.email" : "joe@weathersample.com",
  "organization_id" : "0",
  "refresh_token" : "82XMXgDyHTpFyXOaApj8C2AGIPnN2IZe",
  "client_id" : "deAVedE0W9Z9U35PAMaAJYphBJCGdrND",
  "access_token" : "shTUmeI1geSKin0TODcGLXBNe9vp",
  "organization_name" : "apifactory",
  "refresh_count" : "0"
}

OAuth 토큰에 커스텀 속성 추가

커스텀 메타데이터를 액세스 토큰에 첨부하는 것이 유용한 경우도 있습니다. 예를 들어 토큰에 사용자 이름, 그룹 멤버십, 사용자의 역할, 고객 ID, 세션 식별자, 기타 임의 정보를 추가하려고 할 수 있습니다. Apigee Edge에서는 이러한 데이터를 '커스텀 속성'이라고 합니다. 이후에는 토큰이 API 요청의 범위 내에서 확인되면 해당 데이터는 컨텍스트 변수를 통해 API 프록시에서 사용할 수 있게 됩니다. API 프록시는 토큰에 연결된 커스텀 데이터를 기반으로 세분화된 승인 또는 라우팅 결정을 내릴 수 있습니다.

임의 데이터를 토큰에 연결하려면 OAuthV2 정책<Attributes> 요소를 사용합니다. 커스텀 속성의 이름과 사용할 값을 지정할 수 있습니다. 예를 들어 다음은 토큰을 생성하고 'tenant_list'라는 커스텀 속성을 토큰에 연결하는 정책 구성입니다.

<OAuthV2 name="GenerateAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>600000</ExpiresIn>
  <GenerateResponse />
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <Attributes> 
    <Attribute name="tenant_list" ref="tenant_list_retrieved_from_external_service" display="false"/>
  </Attributes>
</OAuthV2>

여러 커스텀 속성을 지정할 수 있으며 생성 시 승인 코드(<Operation>GenerateAuthorizationCode</Operation>) 또는 토큰(<Operation>GenerateAccessToken</Operation>)에 암시적으로 연결할 수 있습니다.

displaytrue(기본값)로 설정된 경우 커스텀 속성이 응답으로 반환되며 이 속성은 앱에서 보거나 최종 사용자에게 전달될 수 있습니다. displayfalse로 설정된 경우 커스텀 속성은 데이터 저장소에 저장되지만 응답 메시지에 반환되지 않습니다. 어느 경우든 토큰이 확인된 후에는 API 프록시 내의 정책에서 커스텀 데이터를 사용할 수 있습니다.

display 옵션에 대한 자세한 내용은 응답에서 커스텀 속성 표시 또는 숨기기를 참조하세요.

런타임 시 커스텀 속성 가져오기

OAuthV2/VerifyAccessToken 호출이 있으면 Apigee Edge가 토큰 저장소에서 토큰을 조회하여 토큰을 확인합니다. 그러면 Apigee Edge가 토큰에 대한 정보가 포함된 컨텍스트 변수 집합을 채웁니다. 예를 들면 다음과 같습니다

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • expires_in //--in seconds
  • 상태
  • 범위
  • apiproduct.name*

토큰에 커스텀 속성이 있는 경우 accesstoken.{custom_attribute}이라는 이름을 가진 컨텍스트 변수로 커스텀 속성을 사용할 수 있습니다. 예를 들어 위에 표시된 정책에서 토큰이 발급된다고 가정해 보겠습니다. 이러한 토큰을 확인하면 토큰이 생성된 시점에 저장된 값이 포함된 accesstoken.tenant_list이라는 컨텍스트 변수가 추가로 생성됩니다.

그러면 정책 또는 조건이 이러한 변수를 참조하여 저장된 값에 따라 동작을 수정할 수 있습니다.

런타임 시 커스텀 속성 설정 및 업데이트

경우에 따라 Apigee Edge에서 API 호출이 처리되는 동안 런타임에 API 프록시가 액세스 토큰에 연결된 메타데이터를 업데이트해야 할 수 있습니다. 이를 위해 Apigee는 토큰 속성을 가져오고 설정하는 정책을 제공합니다. 자세한 내용은 Get OAuth V2 Info 정책Set OAuth V2 Info 정책을 참조하세요.

각 정책에서 AccessToken 요소는 액세스 토큰이 포함된 변수를 참조해야 합니다.

Edge API를 사용하여 토큰에 연결된 커스텀 속성을 업데이트할 수도 있습니다. OAuth 2.0 액세스 토큰 업데이트 메서드에 대해서는 API 문서를 참고하세요.