Habilitar la recuperación y revocación de tokens de acceso de OAuth 2.0 por ID de usuario final, ID de aplicación o ambos

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

En esta sección, se describe cómo habilitar la recuperación y revocación de tokens de acceso de OAuth 2.0 con el ID de usuario final, el ID de app o ambos. La función de ID del usuario final requiere una configuración especial, como se describe en este tema. Por usuario final se entiende el usuario de la aplicación que llama a la API.

Cuándo habilitar el acceso por ID de usuario final

A veces, resulta útil almacenar el ID de usuario en un token de acceso. Habilita la función de acceso mediante ID de usuario final solo si tienes un buen caso de uso para ella. Por ejemplo:

  • Una función para tu sitio web o app en la que los usuarios pueden ver qué apps de terceros autorizaron y proporcionar una opción para revocar el acceso a esas apps
  • Una función que permite que un usuario autorizado revoca todos los tokens de acceso asociados con una app de desarrollador específica

Información sobre los tokens de acceso de OAuth

Los IDs de app se agregan automáticamente a un token de acceso de OAuth. Por lo tanto, después de habilitar el acceso al token para una organización como se describe a continuación, puedes revocar tokens de acceso por ID de app.

Para recuperar y revocar tokens de acceso de OAuth 2.0 por ID de usuario final, debe haber un ID de usuario final en los tokens de acceso. En el siguiente procedimiento, se describe cómo agregar un ID de usuario final a un token existente.

De forma predeterminada, cuando Edge genera un token de acceso de OAuth 2.0, el token tiene el formato que se muestra a continuación:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Ten en cuenta lo siguiente:

  • El campo application_name contiene el UUID de la app asociada con el token. Si habilitas la recuperación y revocación de tokens de acceso de OAuth 2.0 por ID de app, este es el ID de app que usarás.
  • El campo access_token contiene el valor del token de acceso de OAuth 2.0.

No hay ningún campo para el ID del usuario final en el token de acceso predeterminado de OAuth. Para habilitar la recuperación y revocación de tokens de acceso de OAuth 2.0 por ID de usuario final, debes configurar la política de OAuth 2.0 de modo que incluya el ID de usuario en el token, como se describe en el siguiente procedimiento. Ten en cuenta que si solo quieres recuperar y revocar tokens de acceso de OAuth 2.0 por ID de app, no es necesario habilitar el acceso por ID de usuario final.

Debes pasar el ID del usuario final al extremo de creación del token. Puedes pasar el ID del usuario final como parámetro de consulta, parámetro de formulario o en un encabezado (como se explica más adelante en este tema). Después de configurar Edge para que incluya el ID de usuario final en el token, este se incluye como el campo app_enduser, como se muestra a continuación:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Para aprender a realizar las llamadas a la API que realizan estas recuperaciones y revocaciones, consulta los siguientes documentos inteligentes:

Habilita el acceso a los tokens de OAuth 2.0 por ID de usuario y por ID de app

La forma de habilitar el acceso a los tokens de OAuth 2.0 por ID de usuario y de app depende de cómo implementaste Edge:

  • Implementación basada en la nube

    Una implementación de Edge basada en la nube significa que Apigee se encarga de la mayor parte de la configuración. Solo eres responsable de configurar la política de OAuth 2.0 para agregar el ID de usuario al token de acceso. Para obtener más información, consulta el procedimiento que aparece a continuación.

  • Edge para la implementación en la nube privada

    En Apigee Edge para nube privada (local), eres completamente responsable de la configuración. Para obtener más información, consulta Operaciones y configuración.

  • Apigee Hybrid

    El acceso a los tokens de OAuth 2.0 por ID de usuario está habilitado de forma predeterminada. Solo eres responsable de configurar la política de OAuth 2.0 para agregar el ID de usuario al token de acceso. Para obtener más información, consulta el paso 5 del procedimiento que se indica a continuación.

Habilita el acceso en la nube

Paso 1: Habilita una organización para admitir esta función

Esta función debe estar habilitada para todas las organizaciones en las que quieras proporcionarla.

Comuníquese con el equipo de asistencia de Apigee Edge para que actualicen su organización.

Paso 2: Proporciona permisos de recursos deoauth2 para funciones opsadmin y orgadmin

Solo tus funciones orgadmin y opsadmin deberían tener permisos para realizar estas llamadas de recuperación (get ) y revocación (put) al recurso de oauth2 basado en el ID de usuario final o el ID de la app.

Puedes usar la llamada a la API Obtener permiso para un recurso a fin de ver qué funciones tienen los permisos get y put para el recurso deoauth2.

Si necesitas agregar o quitar algún permiso, comunícate con el equipo de asistencia de Apigee Edge para que realice las actualizaciones.

Paso 3: Copia los tokens de acceso de OAuth 2.0 existentes en los nodos de Cassandra

Realizada por la asistencia de Apigee: En esta tarea, se copiarán y almacenarán las copias de los tokens de acceso de OAuth 2.0 existentes en las organizaciones afectadas y se almacenarán en los nodos de Cassandra. Este procedimiento se realizará en los nodos de Cassandra para cada uno de tus pods de Apigee Edge. Esto permitirá que se recuperen y revoquen las llamadas a la API con todos tus tokens de acceso de OAuth 2.0, existentes y generados recientemente.

Paso 4: Agrega la propiedad oauth_max_search_limit a tu servidor de administración y al procesador de mensajes

En esta tarea, se actualizarán los archivos keymanagement.properties de tu servidor de administración y procesador de mensajes para incluir esta propiedad: oauth_max_search_limit = 100. 100 es el valor que recomienda Apigee, pero lo puedes configurar como estimes conveniente.

Comuníquese con el equipo de asistencia de Apigee Edge para que realice esta adición.

Paso 5: Configura una política de OAuth 2.0 para generar tokens de acceso que incluyan los IDs de usuario final

Configura la política de OAuth 2.0 que se usa para generar tokens de acceso a fin de incluir el ID del usuario final en el token. Si incluyes los IDs de usuario final en los tokens de acceso, podrás realizar recuperaciones y revocaciones según el ID de usuario final.

Para configurar la política de modo que incluya un ID de usuario final en un token de acceso, debes especificar la variable de entrada que contiene el ID de usuario final. Usa la etiqueta <AppEndUser> para especificar la variable.

La siguiente política de OAuth 2.0, llamada GenerateAccessTokenClient, genera un token de acceso de OAuth 2.0. Observa la adición de la etiqueta <AppEndUser> en negrita:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
  <DisplayName>OAuth 2.0.0 1</DisplayName>
  <ExternalAuthorization>false</ExternalAuthorization>
  <Operation>GenerateAccessToken</Operation>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse enabled="true"/>
  <GrantType>request.queryparam.grant_type</GrantType>
  <AppEndUser>request.header.appuserID</AppEndUser>
  <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

Luego, puedes usar el siguiente comando cURL para generar el token de acceso de OAuth 2.0 y pasar el ID de usuario como el encabezado appuserID:

curl -H "appuserID:6ZG094fgnjNf02EK" /
  https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials /
  -X POST /
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'

En este ejemplo, el appuserID se pasa como un encabezado de solicitud. Puedes pasar información como parte de una solicitud de muchas maneras. Por ejemplo, como alternativa puedes hacer lo siguiente:

  • Usa una variable de parámetro de formulario: request.formparam.appuserID
  • Usa una variable de flujo que proporcione el ID de usuario final