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:
- Revocar tokens de acceso de OAuth2 por usuario final o ID de app
- Cómo obtener un token de acceso de OAuth2 por usuario final o ID de app
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