Personaliza tokens y códigos de autorización

Estás viendo la documentación de Apigee X.
Consulta la documentación de Apigee Edge.

Información sobre los metadatos de tokens

Apigee genera tokens de acceso de OAuth, tokens de actualización y códigos de autorización, y los distribuye a las apps autenticadas. En el momento en que se generan, Apigee almacena esos tokens y códigos. Más adelante, cuando Apigee recibe solicitudes a la API entrantes que abarcan estos tokens o códigos, usa la información almacenada para autorizar las solicitudes.

Cuando Apigee genera estos artefactos de OAuth, también adjunta metadatos al token o código. Por ejemplo, un token de acceso se asocia con pares nombre-valor que definen la hora de vencimiento, la app y el desarrollador asociados, y otra información.

La representación JSON de un token de acceso de Apigee se ve de la siguiente manera:

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

Agrega atributos personalizados a los tokens de OAuth

A veces resulta útil adjuntar metadatos personalizados a un token de acceso. Por ejemplo, es posible que quieras agregar un nombre de usuario, membresías de grupo, funciones para un usuario, un ID de cliente, un identificador de sesión o cualquier otra información arbitraria a un token. En Apigee, estos datos se denominan “atributos personalizados”. Luego, cuando el token se verifique dentro del alcance de una solicitud a la API, esos datos estarán disponibles para el proxy de API mediante variables de contexto. Un proxy de API podría tomar decisiones detalladas de autorización o enrutamiento según los datos personalizados adjuntos al token.

Para adjuntar datos arbitrarios a un token, usa el elemento <Attributes> en la política de OAuthV2. Puedes especificar el nombre y el valor del atributo personalizado. Por ejemplo, a continuación, se muestra una configuración de política que genera un token y adjunta un atributo personalizado llamado “tenant_list” al token:

<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>

Puedes especificar varios atributos personalizados y adjuntarlos de forma implícita a un código de autorización (<Operation>GenerateAuthorizationCode</Operation>) o a un token (<Operation>GenerateAccessToken</Operation>) en el momento de la generación.

Cuando se configura display como true (el valor predeterminado), los atributos personalizados se muestran en la respuesta, en la que la app puede verlos o pasarlos al usuario final. Cuando se configura display como false, los atributos personalizados se almacenan en el almacén de datos, pero no se muestran en el mensaje de respuesta. En cualquier caso, los datos personalizados están disponibles para las políticas dentro del proxy de API, después de que se verifica el token.

Para obtener más información sobre la opción display, consulta Cómo mostrar u ocultar atributos personalizados en la respuesta.

Obtén atributos personalizados en el tiempo de ejecución

Cuando hay una llamada a OAuthV2/VerifyAccessToken, Apigee verifica el token mediante la búsqueda en el almacén de tokens. A continuación, Apigee propaga un conjunto de variables de contexto que contienen información sobre el token. Estos incluyen:

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • expires_in // en segundos
  • status
  • scope
  • apiproduct.name*

Si hay atributos personalizados en el token, estos estarán disponibles en una variable de contexto con el nombre accesstoken.{custom_attribute}. Por ejemplo, supongamos que se emite un token a partir de la política como se muestra en el ejemplo anterior. Después de verificar este token, habrá una variable de contexto adicional llamada accesstoken.tenant_list, que contiene el valor que se almacenaba en el momento en que se generó el token.

Luego, las políticas o las condiciones pueden hacer referencia a estas variables y modificar el comportamiento en función de los valores almacenados en ellas.

Configura y actualiza atributos personalizados en el entorno de ejecución

En algunas situaciones, querrás que el proxy de API actualice los metadatos asociados con un token de acceso en el entorno de ejecución mientras se procesa una llamada a la API en Apigee. A fin de ayudar con esto, Apigee proporciona políticas para obtener y configurar atributos de token. Para obtener más información, consulta la Política de GetOAuthV2Info y la Política de SetOAuthV2Info.

En cada una de estas políticas, el elemento AccessToken debe referirse a una variable que contiene el token de acceso.