- Una API identificada por su
audienceo identificador único. - Una aplicación identificada por su
client_id. - Una lista de permisos, como alcances y/o
authorization_details_types, que la aplicación puede solicitar para la audiencia especificada.
Políticas de acceso de aplicaciones a la API y client grants
require_client_grant, solo las aplicaciones que tengan definido un client grant pueden obtener un token de acceso para la API. El client grant establece los permisos máximos que una aplicación puede solicitar a la API, conforme al principio de mínimo privilegio. Por ello, Auth0 recomienda usar require_client_grant al configurar la política de acceso de aplicaciones de una API.
Para ilustrar cómo los client grants aplican el principio de privilegio mínimo, supongamos que tiene una API de redes sociales con los permisos read:posts, write:posts, read:friends y delete:posts. Crea una aplicación y define un client grant con los permisos read:posts y write:posts.
Este client grant ahora actúa como un límite estricto. Aunque la API de redes sociales tenga otros permisos, su aplicación nunca podrá solicitar ni obtener read:friends o delete:posts.
Acceso delegado por el usuario vs. acceso del cliente
subject_type del client grant determina el tipo de acceso de la aplicación que se permite para una API.
Una aplicación puede tener hasta dos client grants para una sola API:
- Cuando establece
subject_typeenclient, define sus permisos de máquina a máquina. - Cuando establece
subject_typeenuser, define sus permisos para actuar en nombre del usuario.
| Tipo de acceso | Atributo subject_type | Descripción |
|---|---|---|
| Acceso con credenciales de cliente (acceso de máquina a máquina) | Establezca subject_type en client. | El client grant autoriza directamente a la aplicación a acceder a la API en su propio nombre, en lugar de hacerlo en nombre del usuario final. Los permisos que define en el client grant son los que la aplicación está autorizada a recibir en el token de acceso. |
| Acceso delegado por el usuario | Establezca subject_type en user. | El client grant define los permisos máximos que la aplicación puede solicitar a la API. Los permisos finales del token de acceso emitido a la aplicación en nombre del usuario son la intersección de los permisos:
Para obtener más información sobre los flujos de acceso delegado por el usuario, consulte Flujos de autenticación y autorización. Los flujos de acceso delegado por el usuario no incluyen el flujo de credenciales del cliente. |
Puede modificar los alcances finales otorgados por el Servidor de autorización a la aplicación o al usuario mediante Actions.
Atributos del client grant
| Atributo | Descripción |
|---|---|
id | Identificador único del client grant. |
audience | Identificador único de la API a la que corresponde el client grant. |
client_id | El id único de la aplicación a la que se le concede acceso. |
scopes | Una matriz de cadenas que representa los permisos que la aplicación puede solicitar. |
authorization_details_types | Una matriz de cadenas que representa tipos de datos de autorización enriquecidos que la aplicación puede solicitar. Este atributo solo se puede especificar para flujos de acceso delegados por el usuario. |
subject_type | El tipo de acceso de aplicación que permite el client grant:
|
allow_all_scopes | Booleano. Indica si se permiten para la aplicación todos los alcances definidos en la API. En el caso de la API, los alcances que se definan en el futuro se permitirán automáticamente. |
organization_usage | Determina cómo puede usar la aplicación las organizaciones al acceder a la API mediante el flujo de credenciales del cliente. Los valores posibles son deny, allow o require.Para obtener más información sobre la configuración de la organización, lea Organizaciones para aplicaciones M2M: definir el comportamiento de la organización. |
allow_any_organization | Determina si la aplicación puede acceder a cualquier organización al usar el flujo de credenciales del cliente. Para obtener más información sobre la configuración de la organización, lea Organizaciones para aplicaciones M2M: definir el comportamiento de la organización. |
Crear client grant
- Permisos por aplicación: Aplique permisos granulares a cada aplicación de su inquilino.
- Permisos predeterminados para aplicaciones de terceros: Aplique permisos predeterminados a todas las aplicaciones de terceros de su inquilino.
Permisos por aplicación
- Auth0 Dashboard
- Management API
Para configurar los permisos por aplicación con Auth0 Dashboard:
Para los permisos por aplicación, debe autorizar el acceso a la API individualmente para cada aplicación.
- Vaya a Dashboard > Applications > APIs y seleccione la API para la que quiere configurar el acceso de la aplicación.
- Vaya a la pestaña Settings y desplácese hacia abajo hasta Application Access Policy.
- Configure User-Delegated Access como No apps allowed, Per-app authorization o All apps allowed.
- No apps allowed: Ninguna aplicación puede obtener un token de acceso para la API.
- Per-app authorization: Solo las aplicaciones con un client grant definido pueden obtener un token de acceso para la API.
- All apps allowed: Cualquier aplicación de su inquilino puede obtener un token de acceso para la API.
- Configure Client Access como Per-app authorization o All apps allowed.
- Per-app authorization: Solo las aplicaciones con un client grant definido pueden obtener un token de acceso para la API.
- All apps allowed: Cualquier aplicación de su inquilino puede obtener un token de acceso para la API.
- Configure User-Delegated Access como No apps allowed, Per-app authorization o All apps allowed.
- Seleccione Save para guardar la configuración de Application Access Policy.

- Vaya a Applications > APIs y seleccione la API.
- Vaya a la pestaña Application Access.
- Desplácese hasta la aplicación, seleccione Edit y luego Grant Access para User-Delegated Access y/o Client Access. Después, seleccione los permisos que desee.
- Seleccione Save.

Permisos predeterminados para aplicaciones de terceros
default_for en lugar de client_id. También puede definir permisos por aplicación creando un client grant con un client_id específico. Cuando ambos existen para la misma API, los permisos por aplicación tienen prioridad.
Las API del sistema (la Management API, My Account API y otras) no admiten client grants predeterminados para terceros. No es posible conceder a aplicaciones de terceros acceso a las API del sistema.
default_for y client_id son mutuamente excluyentes. Cada client grant debe especificar exactamente uno de ellos.
Para obtener información sobre cómo configurar políticas de acceso a API para aplicaciones de terceros, consulte Configurar aplicaciones de terceros.
- Auth0 Dashboard
- Management API
Para configurar permisos predeterminados para aplicaciones de terceros con Auth0 Dashboard:
- Vaya a Dashboard > Applications > APIs y seleccione la API para la que desea configurar el acceso de las aplicaciones.
- Vaya a la pestaña Settings y desplácese hacia abajo hasta Default Permissions for Third-Party Applications.
- Configure User-Delegated Access y/o Client Access como Unauthorized, Authorized o All.
- Unauthorized: No se permite ningún permiso.
- Authorized: Seleccione los permisos que correspondan.
- All: Incluye los permisos actuales y futuros.
- Configure User-Delegated Access y/o Client Access como Unauthorized, Authorized o All.
- Seleccione Save.

Actualizar el client grant
PATCH a /client-grants/{id}:
Eliminar client grant
DELETE a /client-grants/{id}:
Obtener client grants
client-grants mediante parámetros como client_id, audience o subject_type: