En este documento, se describe cómo habilitar la recuperación y la revocación de tokens de acceso de OAuth 2.0 mediante ID de usuario final, ID de aplicación o ambos.
Los IDs de app se agregan automáticamente a un token de acceso de OAuth. Por lo tanto, después de usar a continuación para habilitar el acceso a los tokens para una organización, puedes acceder a los tokens 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 el token de acceso. El siguiente procedimiento describe cómo agregar un ID de usuario final a un token o a tokens nuevos.
De forma predeterminada, cuando Edge genera un token de acceso de OAuth 2.0, el token tiene el siguiente formato:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", "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", "refresh_count" : "0" }
Ten en cuenta lo siguiente:
- El campo
application_name
Contiene el UUID de la app asociado con el token. Si habilitas la recuperación y la revocación de tokens de acceso de OAuth 2.0 por ID de app, este es el ID de app que usas. - El campo
access_token
contiene el valor del token de acceso de OAuth 2.0.
Para habilitar la recuperación y revocación de tokens de acceso de OAuth 2.0 por ID de usuario final, configura el Política de OAuth 2.0 para incluir el ID de usuario en el token, como se describe en el siguiente procedimiento.
El ID de usuario final es la cadena que usa Edge como ID de desarrollador, no el correo electrónico del desarrollador. web. Puedes determinar el ID del desarrollador desde la dirección de correo electrónico del desarrollador mediante el botón llamada a la API de Developer.
Después de que configures Edge para incluir el ID de usuario final en el token, este se incluirá como 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", "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", "refresh_count" : "0" }
APIs para recuperar y revocar Tokens de acceso de OAuth 2.0 por ID de usuario e ID de app
Usa las siguientes APIs para acceder a los tokens de OAuth por ID de usuario, ID de app o ambos:
- Obtén OAuth 2.0 Token de acceso por ID de usuario final o ID de app
- Revocar OAuth 2.0 Token de acceso por ID de usuario final o ID de app
Procedimiento para habilitar el acceso al token
Usa el siguiente procedimiento para habilitar la recuperación y revocación de los tokens de acceso de OAuth 2.0 a través de el ID del usuario final y el ID de la aplicación.
Paso 1: Habilita la compatibilidad con el acceso a los tokens para una organización
Debes habilitar el acceso a los tokens para cada organización por separado. Llama a la API de PUT que se muestra a continuación para cada uno. organización en la que deseas habilitar la recuperación y revocación de los tokens de acceso de OAuth 2.0 por ID de usuario final o ID de aplicación.
El usuario que realiza la siguiente llamada debe tener el rol administrador de la organización o
opsadmin
para la organización. Reemplaza values por el nombre de tu organización
valores:
curl -H "Content-type:text/xml" -X POST \ https://management_server_IP;:8080/v1/organizations/org_name \ -d '<Organization name="org_name"> <Properties> <Property name="features.isOAuthRevokeEnabled">true</Property> <Property name="features.isOAuth2TokenSearchEnabled">true</Property> </Properties> </Organization>' \ -u USER_EMAIL:PASSWORD
Paso 2: Establece los permisos para el rol de opsadmin en la organización
Solo los roles orgadmin
y opsadmin
de una organización
debería tener permisos para recuperar (HTTP GET) y revocar (HTTP PUT) tokens de OAuth 2.0 basados en
según el ID de usuario o de aplicación. Para controlar el acceso, configura get y put los permisos en el recurso /oauth2 para
en una organización. Ese recurso tiene una URL con el siguiente formato:
https://management_server_IP:8080/v1/organizations/org_name/oauth2
El rol orgadmin
ya debería tener los permisos necesarios. Para el
opsadmin
para el recurso /oauth2, los permisos deberían verse así:
esto:
<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>
Puedes usar el botón Obtener
Permiso para una llamada a la API de Single Resource para ver qué roles tienen permisos para
/oauth2
recurso.
Según la respuesta, puedes usar el botón Agregar Permisos de recurso para un rol y Delete Permission para llamadas a la API de Resource para realizar los ajustes necesarios en /oauth2 permisos de recursos.
Usa el siguiente comando de curl
para asignar el rol opsadmin
Los permisos get
y put
para el recurso /oauth2
. Reemplazar
values por los valores específicos de tu organización:
curl -X POST -H 'Content-type:application/xml' \ http://management_server_IP:8080/v1/organizations/org_name/userroles/opsadmin/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>' \ -u USEREMAIL:PASSWORD
Usa el siguiente comando curl
para revocar get
y put
permisos para el recurso /oauth2
de roles que no sean
orgadmin
y opsadmin
. Reemplaza values por tu
valores específicos de la organización:
curl -X DELETE -H 'Content-type:application/xml' \ http://management_server_IP:8080/v1/organizations/org_name/userroles/roles/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions></Permissions> </ResourcePermission>' \ -u USEREMAIL:PASSWORD
Paso 3: Configurar la propiedad oauth_max_search_limit
Asegúrate de que conf_keymanagement_oauth_max_search_limit
propiedad en /opt/apigee/customer/application/management-server.properties
archivo se configura en 100:
conf_keymanagement_oauth_max_search_limit = 100
Si este archivo no existe, créalo.
Esta propiedad establece el tamaño de la página que se usa para recuperar tokens. Apigee recomienda un valor de 100, pero puedes configurarlo como estimes conveniente.
En una instalación nueva, la propiedad debería estar configurada en 100. Si tienes que cambiar de esta propiedad, reinicia el servidor de administración y el procesador de mensajes mediante el comandos:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Paso 4: Configura la política de OAuth 2.0 que genera tokens para incluir el ID del usuario final
Configura la política de OAuth 2.0 que se usa para generar tokens de acceso para incluir el ID de usuario final en el token. Si incluyes los ID de usuario final en el token de acceso, puedes recuperar y revocar tokens mediante ID.
Para configurar que la política incluya un ID de usuario final en un token de acceso, la solicitud que crea el token de acceso debe incluir el ID de usuario final y debes especificar la variable de entrada que contiene el ID del usuario final.
La siguiente política de OAuth 2.0, denominada GenerateAccessTokenClient, genera acceso de OAuth 2.0
token. Observa el agregado de la etiqueta <AppEndUser>
en negrita que especifica
la variable que contiene el ID del usuario final:
<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 de curl
para generar el acceso de OAuth 2.0.
token, que pasa 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=k3nJyFJIA3p62TKIkLO6OJNXFmP&client_secret=gk5K5lIp943AY4'
En este ejemplo, 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