¿Qué es un Token de acceso?
Un Token de acceso (también denominado
access_token) es una cadena opaca que representa una autorización emitida para la aplicación. Puede indicar un identificador utilizado para recuperar la información de autorización o puede contener en sí mismo la información de autorización (por ejemplo, la identidad del usuario, los permisos, etc.) de forma verificable.Es bastante común que los Tokens de acceso se implementen como JSON Web Tokens.Para obtener más información sobre los Tokens de acceso de Auth0, consulte Token de acceso.scope.
Posteriormente, cuando el cliente envía el Token de acceso al realizar solicitudes a la API, la API puede inspeccionar el claim scope para asegurarse de que se hayan concedido los permisos necesarios para llamar a ese endpoint de API en particular.
¿Qué son los Scopes?
Cada Token de acceso puede incluir una lista de los permisos que se han concedido al cliente. Cuando un cliente se autentica con Auth0, especificará la lista de alcances (o permisos) que solicita. Si esos alcances están autorizados, entonces el Token de acceso contendrá una lista de alcances autorizados.Por ejemplo, la API de registro de horas puede aceptar cuatro niveles diferentes de autorización: leer registros de horas (scope
read:timesheets), crear registros de horas (scope create:timesheets), eliminar registros de horas (scope delete:timesheets) y aprobar registros de horas (scope approve:timesheets).Cuando un cliente solicita a la API crear una nueva entrada de registro de horas, el Token de acceso debe contener el scope create:timesheets. De forma similar, para eliminar registros de horas existentes, el Token de acceso debe contener el scope delete:timesheets.Para obtener más información sobre los alcances, consulte Scopes.Roles de OAuth
En cualquier flujo de OAuth 2.0, podemos identificar los siguientes roles:
- Propietario del recurso: la entidad que puede otorgar acceso a un recurso protegido. Normalmente, es el usuario final.
- Servidor de recursos: el servidor que aloja los recursos protegidos. Es la API a la que quieres acceder.
- Cliente: una aplicación que solicita acceso a un recurso protegido en nombre del propietario del recurso.
- Servidor de autorización: el servidor que autentica al propietario del recurso y emite Tokens de acceso después de obtener la autorización adecuada. En este caso, la Authentication API de Auth0.
Concesión implícita
authorization_code. Esto ocurre porque la aplicación, que normalmente es una aplicación JavaScript que se ejecuta en un navegador, es menos fiable que una aplicación web que se ejecuta en el servidor y, por lo tanto, no puede considerarse de confianza para manejar el client_secret (que es obligatorio en la Concesión de código de autorización).
Una vez que el usuario se autentica, la aplicación recibe el y el Token de acceso en el fragmento hash de la URI. La aplicación ya puede usar el ID Token para obtener información sobre el usuario y el Token de acceso para llamar a la API en nombre del usuario.
- La aplicación inicia el flujo y redirige el navegador a Auth0 (concretamente al endpoint /authorize), para que el usuario pueda autenticarse.
- Auth0 autentica al usuario. La primera vez que el usuario complete este flujo, y si la aplicación es de terceros, se mostrará una página de consentimiento en la que se enumeran los permisos que se otorgarán al cliente (por ejemplo, publicar mensajes, listar contactos, etc.).
- Auth0 redirige al usuario a la aplicación con un Token de acceso (y, opcionalmente, un ID Token) en el fragmento hash de la URI. La aplicación ya puede extraer los tokens del fragmento hash.
- La aplicación puede usar el Token de acceso para llamar a la API en nombre del usuario.
- Los Permissions son acciones que alguien puede realizar. Para las necesidades de negocio de ExampleCo, configuraremos cuatro Permissions: leer, crear, eliminar y aprobar registros de horas.
- Los Roles son conjuntos de Permissions. La aplicación de registros de horas de ExampleCo será utilizada por dos tipos de usuarios (empleados y gerentes), cada uno con permisos diferentes, por lo que configuraremos dos Roles: empleado y gerente.