토큰 및 승인 코드 맞춤설정

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

토큰 및 승인 코드 메타데이터 정보

Apigee는 OAuth 액세스 토큰, 갱신 토큰, 승인 코드를 생성하고 인증된 앱에 배포합니다. Apigee는 생성 시 이러한 토큰과 코드를 저장합니다. 이후에 Apigee가 이러한 토큰 또는 코드가 포함된 인바운드 API 요청을 받으면 Apigee는 저장된 정보를 사용하여 요청을 승인합니다.

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

Apigee 액세스 토큰의 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에서는 이러한 데이터를 '커스텀 속성'이라고 합니다. 이후에는 토큰이 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는 토큰 저장소에서 토큰을 검색하여 확인합니다. 그런 다음 Apigee는 토큰에 대한 정보가 포함된 컨텍스트 변수 집합을 채웁니다. 예를 들면 다음과 같습니다.

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • expires_in //--초 후
  • status
  • scope
  • apiproduct.name*

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

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

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

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

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