Dostosowywanie tokenów i kodów autoryzacji

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Informacje o metadanych tokenów

Apigee Edge generuje tokeny dostępu OAuth, tokeny odświeżania i kody autoryzacji oraz udostępnia je do uwierzytelnionych aplikacji. W momencie generowania Edge przechowuje te tokeny i kody. Później, gdy Edge otrzyma przychodzące żądania do interfejsu API zawierające te tokeny lub kody, Edge używa zapisanych informacji do autoryzacji żądań.

Gdy Edge generuje te artefakty OAuth, dołącza metadane do tokena lub kodu. Na przykład token dostępu jest powiązany z parami nazwa/wartość, które określają czas ważności, powiązaną aplikację i dewelopera oraz inne informacje.

Reprezentacja tokena dostępu Edge w formacie JSON wygląda tak:

{
  "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"
}

Dodawanie atrybutów niestandardowych do tokenów OAuth

Czasami warto dołączyć niestandardowe metadane do tokena dostępu. Do tokena możesz na przykład dodać nazwę użytkownika, członkostwo w grupach lub role użytkownika, identyfikator klienta, identyfikator sesji lub inne informacje. W Apigee Edge te dane są nazywane „atrybutami niestandardowymi”. Następnie, gdy token zostanie zweryfikowany w zakresie żądania do interfejsu API, dane są udostępniane serwerowi proxy interfejsu API za pomocą zmiennych kontekstowych. Serwer proxy interfejsu API może podejmować szczegółowe decyzje dotyczące autoryzacji lub routingu na podstawie danych niestandardowych dołączonych do tokena.

Aby dołączyć do tokena dowolne dane, użyj elementu <Attributes> w zasadzie OAuthV2. Możesz podać nazwę atrybutu niestandardowego i jego wartość. Oto przykład konfiguracji zasad, która generuje token i dołącza do tokena niestandardowy atrybut o nazwie „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>

Możesz określić wiele atrybutów niestandardowych i dołączyć je domyślnie do kodu autoryzacji (<Operation>GenerateAuthorizationCode</Operation>) lub tokena (<Operation>GenerateAccessToken</Operation>) podczas generowania.

Gdy display ma wartość domyślną true, atrybuty niestandardowe są zwracane w odpowiedzi, gdzie mogą być widoczne dla aplikacji lub przekazywane użytkownikowi. Gdy display ma wartość false, atrybuty niestandardowe są przechowywane w magazynie danych, ale nie są zwracane w wiadomości z odpowiedzią. W obu przypadkach dane niestandardowe są dostępne dla zasad w serwerze proxy interfejsu API po zweryfikowaniu tokena.

Dowiedz się więcej o opcji display Wyświetlanie lub ukrywanie atrybutów niestandardowych w odpowiedzi.

Pobieranie atrybutów niestandardowych w środowisku wykonawczym

W przypadku wywołania OAuthV2/VerifyAccessToken Apigee Edge weryfikuje token, wyszukując go w magazynie tokenów. Apigee Edge wypełnia następnie zestaw zmiennych kontekstowych zawierający informacje o tokenie. m.in.:

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • wygaśnięcie_za //-- w sekundach
  • status
  • zakres
  • apiproduct.name*,

Jeśli token zawiera atrybuty niestandardowe, są one udostępniane w zmiennej kontekstowej o nazwie accesstoken.{custom_attribute}. Załóżmy na przykład, że na podstawie powyższej zasady został wydany token. Po zweryfikowaniu takiego tokena powstanie dodatkowa zmienna kontekstowa o nazwie accesstoken.tenant_list, która zawiera wartość zapisaną w momencie generowania tokena.

Zasady lub warunki mogą się odwoływać do tych zmiennych i modyfikować działanie na podstawie zapisanych w nich wartości.

Ustawianie i aktualizowanie atrybutów niestandardowych w środowisku wykonawczym

W niektórych sytuacjach możesz chcieć, aby serwer proxy interfejsu API aktualizował metadane powiązane z tokenem dostępu w czasie działania, gdy jest przetwarzane wywołanie interfejsu API w Apigee Edge. Aby Ci w tym pomóc, Apigee udostępnia zasady pobierania i ustawiania atrybutów tokenów. Więcej informacji znajdziesz w artykułach na temat pobierania informacji dotyczących protokołu OAuth w wersji 2 i ustawiania zasad dotyczących informacji o protokole OAuth w wersji 2.

W każdej z tych zasad element AccessToken powinien odnosić się do zmiennej zawierającej token dostępu.

Za pomocą interfejsów API Edge możesz też aktualizować atrybuty niestandardowe dołączone do tokena. Więcej informacji o metodzie Update OAuth 2.0 Access Token znajdziesz w dokumentacji interfejsu API.