Personalización de tokens y códigos de autorización

Esta página se aplica a Apigee y Apigee híbrido .

Ver la documentación de Apigee Edge .

Acerca de los metadatos del token y del código de autorización

Apigee genera tokens de acceso OAuth, tokens de actualización y códigos de autorización, y los distribuye a las aplicaciones autenticadas. Durante la generación, Apigee almacena dichos tokens y códigos. Posteriormente, cuando recibe solicitudes API entrantes con estos tokens o códigos, utiliza la información almacenada para autorizar las solicitudes.

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

La representación JSON de un token de acceso de Apigee se ve así:

{
  "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" : "[email protected]",
  "organization_id" : "0",
  "refresh_token" : "82XMXgDyHTpFyXOaApj8C2AGIPnN2IZe",
  "client_id" : "deAVedE0W9Z9U35PAMaAJYphBJCGdrND",
  "access_token" : "shTUmeI1geSKin0TODcGLXBNe9vp",
  "organization_name" : "apifactory",
  "refresh_count" : "0"
}

Agregar atributos personalizados a tokens OAuth y códigos de autorización

A veces resulta útil adjuntar metadatos personalizados a un token de acceso. Por ejemplo, podría querer agregar un nombre de usuario, membresías de grupo o roles para un usuario, un ID de cliente, un identificador de sesión u otra información arbitraria a un token. En Apigee, estos datos se denominan "atributos personalizados". Posteriormente, cuando el token se verifica dentro del alcance de una solicitud de API, esos datos se ponen a disposición del proxy de API mediante variables de contexto. Un proxy de API podría tomar decisiones de autorización o enrutamiento detalladas basándose en los datos personalizados adjuntos al token.

Para adjuntar datos arbitrarios a un token, utilice el elemento <Attributes> en la política OAuthV2 . Puede 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 le adjunta un atributo personalizado llamado "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>

Puede especificar varios atributos personalizados y puede adjuntarlos implícitamente 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 display se establece en true (valor predeterminado), los atributos personalizados se devuelven en la respuesta, donde la aplicación puede verlos o se transmiten al usuario final. Cuando display se establece en false , los atributos personalizados se almacenan en el almacén de datos, pero no se devuelven en el mensaje de respuesta. En cualquier caso, los datos personalizados están disponibles para las políticas dentro del proxy de API, una vez verificado el token.

Para obtener más información sobre la opción display , consulte Mostrar u ocultar atributos personalizados en la respuesta .

Obtener atributos de token de acceso personalizados en tiempo de ejecución

Cuando se llama a OAuthV2/VerifyAccessToken , Apigee verifica el token buscándolo en el almacén de tokens. Posteriormente, Apigee rellena un conjunto de variables de contexto con información sobre el token. Estas 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 el token contiene atributos personalizados, estos se muestran en una variable de contexto llamada accesstoken.{custom_attribute} . Por ejemplo, supongamos que se emite un token según la política mostrada anteriormente. Tras verificar dicho token, se creará una variable de contexto adicional llamada accesstoken.tenant_list , que contiene el valor almacenado al generarse el token.

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

Configuración y actualización de atributos personalizados en tiempo de ejecución

En algunas situaciones, querrá que su proxy de API actualice los metadatos asociados a un token de acceso en tiempo de ejecución mientras se procesa una llamada a la API en Apigee. Para facilitar esto, Apigee proporciona políticas para obtener y configurar los atributos del token. Para más información, consulte Obtener la política de información de OAuth V2 y Configurar la política de información de OAuth V2 .

En cada una de estas políticas, el elemento AccessToken debe hacer referencia a una variable que contenga el token de acceso.