Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Acerca de los metadatos de tokens y códigos de autorización
Apigee genera tokens de acceso, tokens de actualización y códigos de autorización de OAuth, y los distribuye a las aplicaciones autenticadas. En el momento de la generación, Apigee almacena esos tokens y códigos. Más adelante, cuando Apigee reciba solicitudes de API entrantes que incluyan estos tokens o códigos, Apigee usará la información almacenada para autorizar las solicitudes.
Cuando Apigee genera estos artefactos de OAuth, también adjunta metadatos al token o al código. Por ejemplo, un token de acceso está asociado a pares nombre/valor que definen el tiempo de vencimiento, la aplicación y el desarrollador asociados, así como otra información.
La representación JSON de un token de acceso de Apigee tiene el siguiente aspecto:
{ "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" }
Añadir atributos personalizados a tokens de OAuth y códigos de autorización
A veces, es útil adjuntar metadatos personalizados a un token de acceso. Por ejemplo, puede que quieras añadir un nombre de usuario, las pertenencias a grupos o los roles de 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 se verifica el token en el ámbito de una solicitud de API, esos datos se ponen a disposición del proxy de la API a través de variables de contexto. Un proxy de API puede tomar decisiones de autorización o de enrutamiento precisas en función de los datos personalizados que se adjunten al token.
Para adjuntar datos arbitrarios a un token, usa el elemento <Attributes>
en la política OAuthV2. Puede especificar el nombre y el valor del atributo personalizado. Por ejemplo, aquí tiene 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 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
tiene el valor true
(el predeterminado), los atributos personalizados se devuelven en la respuesta, donde la aplicación puede verlos o enviarlos al usuario final.
Si display
tiene el valor false
, los atributos personalizados se almacenan en el almacén de datos, pero no se devuelven en el mensaje de respuesta. En ambos casos, los datos personalizados están disponibles para las políticas del proxy de API una vez que se ha verificado el token.
Para obtener más información sobre la opción display
, consulta el artículo sobre cómo
mostrar u ocultar atributos personalizados en la respuesta.
Obtener atributos de tokens de acceso personalizados en el tiempo de ejecución
Cuando se llama a OAuthV2/VerifyAccessToken
,
Apigee verifica el token buscándolo en el almacén de tokens. A continuación, Apigee rellena un conjunto de variables de contexto que contienen información sobre el token. Por ejemplo:
organization_name
developer.id
developer.app.name
client_id
grant_type
token_type
access_token
issued_at
expires_in
//--en segundosstatus
scope
apiproduct.name*
Si el token tiene atributos personalizados, 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 que se muestra arriba. Después de verificar un token de este tipo, habría una variable de contexto adicional llamada accesstoken.tenant_list
, que contendría el valor que se almacenó en el momento en que se generó el token.
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.
Configurar y actualizar atributos personalizados en el tiempo de ejecución
En algunas situaciones, querrás que tu 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 ayudarte con esto, Apigee proporciona políticas para obtener y definir atributos de token. Para obtener más información, consulta las políticas Get OAuth V2 Info y Set OAuth V2 Info.
En cada una de estas políticas, el elemento AccessToken
debe hacer referencia a una variable que contenga el token de acceso.