Personaliza tokens y códigos de autorización

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Información sobre los metadatos de tokens

Apigee Edge 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, Edge almacena esos tokens y códigos. Más adelante, cuando Edge recibe solicitudes de la API entrantes que abarcan estos tokens o códigos, Edge usa la información almacenada para autorizar las solicitudes.

Cuando Edge 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 Edge 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 Edge, estos datos se denominan “datos atributos". 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 del atributo personalizado y el valor que debe tomar. 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 Muestra u oculta atributos personalizados en la respuesta.

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

Cuando se realiza una llamada a OAuthV2/VerifyAccessToken, Apigee Edge verifica el token buscándolo en el almacén de tokens. Luego, Apigee Edge propaga un conjunto de variables de contexto que contiene información sobre el token. Estos incluyen los siguientes:

  • organization_name
  • developer.id
  • developer.app.name
  • client_id
  • grant_type
  • token_type
  • access_token
  • issued_at
  • expires_in //--in seconds
  • status
  • alcance
  • 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 algunos casos, querrás que tu proxy de API actualice los metadatos asociados a un token de acceso en el entorno de ejecución mientras se procesa una llamada a la API en Apigee Edge. 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.

También puedes usar las API de Edge para actualizar los atributos personalizados conectados a un token. Consulta la documentación de la API para conocer el método Actualiza el Token de acceso OAuth 2.0.