Para simplificar, mantendremos la implementación centrada exclusivamente en la autenticación y la autorización. Como verá en los ejemplos, el registro de horas de entrada estará definido de forma fija en el código, y la API no persistirá ese registro. En su lugar, simplemente devolverá parte de la información.
Definir los endpoints de la API
¿Qué es un endpoint de API?
Un endpoint de API es una URL única que representa un objeto. Para interactuar con este objeto, la aplicación debe apuntar a su URL. Por ejemplo, si tuviera una API que pudiera devolver pedidos o clientes, podría configurar dos endpoints:
/orders y /customers. La aplicación interactuaría con estos endpoints mediante distintos métodos HTTP; por ejemplo, POST /orders podría crear un pedido nuevo o GET /orders podría recuperar el conjunto de datos de uno o más pedidos.HTTP GET al endpoint /timesheets permitirá que un usuario recupere sus registros de horas, y una solicitud HTTP POST al endpoint /timesheets permitirá que un usuario agregue un nuevo registro de horas.
Consulte la implementación en Node.js
Proteger los endpoints
Missing or invalid token para la aplicación que realiza la llamada.
Las validaciones que debe realizar la API son:
- Verificar que el tenga un formato válido
- Verificar la firma
- Validar los claims estándar
JWT.io proporciona una lista de bibliotecas que pueden hacer la mayor parte del trabajo por usted: analizar el JWT y verificar la firma y los claims.
Comprobar los permisos del cliente
Determinar la identidad del usuario
sub, que identifica al principal que es el sujeto de la claim. En el caso del flujo Implicit Grant, esta claim contendrá la identidad del usuario, que será el identificador único del usuario de Auth0. Puede usarla para asociar cualquier información en sistemas externos con un usuario concreto.
También puede usar una claim personalizada para agregar otro atributo del usuario, como su correo electrónico, al Token de acceso y usarlo para identificar de forma única al usuario.
Consulte la implementación en Node.js
Implementa la aplicación móvil
code_challenge y el método utilizado para generarlo:
La solicitud GET a la URL de autorización debe incluir los siguientes valores:
Consulta la implementación en Android.
Obtener las credenciales
authorization_code de la respuesta por un Token de acceso que puedes usar para llamar a tu API. Realiza una solicitud POST a la URL del token e incluye los siguientes datos:
La respuesta de la URL de token contendrá:
- access_token: Un Token de acceso para la API, especificado por
audience. - refresh_token: Un Token de actualización solo estará presente si incluyó el scope
offline_accessy habilitó Permitir acceso sin conexión para su API en el Dashboard. - id_token: Un JWT que contiene información del perfil del usuario.
- token_type: Una cadena que contiene el tipo de token; siempre será un token Bearer.
- expires_in: La cantidad de segundos hasta que expire el Token de acceso.
Obtener el perfil del usuario
Mostrar elementos de la IU de forma condicional según el scope
scope del usuario, es posible que quiera mostrar u ocultar determinados elementos de la IU. Para determinar el scope emitido para un usuario, deberá inspeccionar el scope que se concedió cuando el usuario se autenticó. Será una cadena que contiene todos los alcances, por lo que deberá comprobar si esa cadena contiene el scope requerido y, en función de ello, decidir si mostrar un elemento concreto de la IU.
Consulte la implementación en Android
Llamar a la API
Authorization mediante el esquema Bearer.
Consulta la implementación en Android.
Renovar el token
POST al endpoint /oauth/token con el de su resultado de autorización.
Un Token de actualización solo estará presente si incluyó el scope offline_access en la solicitud de autorización anterior y habilitó Allow Offline Access para su API en el Dashboard.
Su solicitud debe incluir:
La respuesta incluirá el nuevo Token de acceso: