Saltar al contenido principal
Si tiene varias implementaciones de API distintas que, lógicamente, forman parte de la misma API, puede simplificar el proceso de autorización representándolas como una única API lógica en el . De este modo, puede implementar un solo y, al mismo tiempo, seguir controlando el acceso a las API individuales asignando los alcances adecuados. Las siguientes secciones describen cómo usar y representar varias API como un único en Auth0. En los ejemplos, usaremos la siguiente aplicación de ejemplo. La aplicación usa una arquitectura de microservicios y contiene:
  • 2 API de Node.js: contacts y calendar (puede considerarlas microservicios)
  • 1 servidor de recursos que representa las 2 API
  • 2 alcances con espacio de nombres: read:contacts y read:calendar
  • El flujo de concesión implícita para obtener un access_token que funcione para ambas API
Representaremos las dos API con una sola API de Auth0 llamada Organizer Service. Después, crearemos dos alcances para demostrar cómo puede usar el Flujo implícito para acceder a las API calendar y contacts desde la SPA. Debe completar los siguientes pasos:
  1. Habilitar una conexión para su aplicación
  2. Crear un usuario de prueba
  3. Registrar una API lógica en Auth0
  4. Configurar alcances para la API lógica
  5. Conceder acceso a la API lógica
  6. (Opcional) Implementar cierre de sesión único (SLO) o inicio de sesión único (SSO)

Requisitos previos

  • Registra tu aplicación.
    • Selecciona Application Type como Single-Page App.
    • Agrega Allowed Callback URLs: http://localhost:3000 y http://localhost:3000/callback.html.
  • Descarga la aplicación de ejemplo. Para obtener información sobre cómo configurar la aplicación de ejemplo, consulta el README.

Habilita una conexión para tu aplicación

Necesitarás un origen de usuarios para la aplicación que acabas de registrar, por lo que tendrás que configurar una conexión. Para este ejemplo, crearemos una Conexión de base de datos sencilla que solicite solo el correo electrónico del usuario y una contraseña. Para obtener más información, consulta Configurar conexiones de base de datos.

Crear un usuario de prueba

Como está trabajando con una conexión recién creada, no habrá ningún usuario asociado a ella. Antes de poder probar el proceso de Login de la aplicación de ejemplo, deberá crear y asociar un usuario con la conexión, así que asegúrese de seleccionar la Conexión que acaba de crear al crear el usuario. Para obtener más información, consulte Create Users.

Registrar una API lógica en Auth0

Registre una sola API lógica que usará para representar las múltiples API incluidas en la aplicación de ejemplo. Para este ejemplo, llame a la API Organizer Service y establezca su identificador único en organize. De forma predeterminada, el de los tokens obtenidos para esta API es RS256, que debe dejar tal cual. Para obtener más información, consulte Registrar APIs.

Configure los permisos de la API lógica

Para permitir que la API lógica represente las API incluidas en la aplicación de ejemplo, deberá crear los permisos (alcances) adecuados. Los alcances le permiten definir a qué acciones de la API podrán acceder las aplicaciones cliente. Un scope representa una combinación de API/acción. En este ejemplo, quiere que las aplicaciones cliente puedan leer (read) desde una API llamada calendar y otra llamada contacts, por lo que deberá crear los siguientes permisos:
  • read:calendar
  • read:contacts
Puede pensar en cada una como un microservicio. Para obtener más información, consulte Agregar permisos de API y Alcances de API.

Conceder acceso a la API lógica

Ahora ya puede proporcionar acceso a sus API al permitir que la API lógica obtenga . Al incluir los alcances necesarios, puede controlar el acceso de una aplicación a las API representadas por la API lógica. Los siguientes pasos usan el Flujo implícito para seguir el ejemplo. Sin embargo, puede usar el flujo que mejor se adapte a sus necesidades. Por ejemplo: Para obtener más información sobre los flujos de autorización, consulte Flujos de autenticación y autorización.
  1. El usuario hace clic en Login dentro de la SPA y la aplicación redirige al usuario al Servidor de autorización de Auth0 (endpoint /authorize). Para obtener más información sobre los parámetros de la llamada, consulte nuestro tutorial: Llame a su API mediante el Flujo de código de autorización con PKCE.
    Página de inicio de sesión de la aplicación de ejemplo
  2. El Servidor de autorización de Auth0 redirige al usuario a la página de inicio de sesión, donde se autentica mediante una de las opciones de inicio de sesión configuradas.
    Página de inicio de sesión de Lock
  3. Si es la primera vez que el usuario pasa por este flujo, verá una pantalla de consentimiento que enumera los permisos que Auth0 otorgará a la SPA. En este caso, se le pide al usuario que dé su consentimiento para que la aplicación lea sus contactos y su calendario.
    Pantalla de consentimiento de Lock de la aplicación de ejemplo
  4. Si el usuario da su consentimiento, Auth0 lo redirige de vuelta a la SPA con tokens en el fragmento hash del URI. La SPA ahora puede extraer los tokens del fragmento hash mediante JavaScript y usar el Token de acceso para llamar a sus API en nombre del usuario.
    function getParameterByName(name) {
      var match = RegExp('[#&]' + name + '=([^&]*)').exec(window.location.hash);
      return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
    }
    
    function getAccessToken() {
      return getParameterByName('access_token');
    }
    
    En nuestro ejemplo, después de iniciar sesión correctamente, verá botones que le permiten llamar a cualquiera de sus API con el Token de acceso obtenido de la API lógica.
    Pantalla de usuario autorizado de la aplicación de ejemplo

Implementar cierre de sesión único (SLO) o inicio de sesión único (SSO)

En algunos escenarios con varias aplicaciones, en los que se requiere el cierre de sesión único (cuando un usuario cierra sesión en una aplicación, también debe cerrarse en las demás), una aplicación puede configurarse para consultar periódicamente a Auth0 mediante checkSession() y comprobar si existe una sesión. Si la sesión no existe, puede cerrar la sesión del usuario en la aplicación. El mismo método de sondeo puede usarse para implementar autenticación silenciosa en un escenario de (SSO). El intervalo entre comprobaciones con checkSession() debe ser de al menos 15 minutos entre llamadas para evitar posibles problemas futuros con el límite de tasa de esta llamada.

Más información