Paso 1. Configuration
AuthConfig que contenga varios valores de configuración. Coloque esta interfaz en un archivo llamado auth0-variables.ts.
WebAuth de auth0.js.
- login: llama a
authorizede auth0.js, que inicia - handleAuthentication: busca un resultado de autenticación en el hash de la URL y lo procesa con el método
parseHashde auth0.js - setSession: establece el del usuario, el y el momento en que expirará el Token de acceso
- logout: elimina del almacenamiento del navegador los tokens del usuario isAuthenticated: comprueba si ya pasó el tiempo de expiración del Token de acceso
Procesar el resultado de la autenticación
handleAuthentication de AuthService se encarga de procesar el hash.
Llama a handleAuthentication en el componente raíz de tu aplicación para que el fragmento hash de autenticación se procese cuando la aplicación se cargue por primera vez después de que el usuario sea redirigido de nuevo a ella.
Agregue el componente Callback
- Evita la necesidad de incluir en la lista de permitidos varias URL de devolución de llamada (y, en ocasiones, desconocidas)
- Sirve como lugar para mostrar un indicador de carga mientras su aplicación establece la sesión del lado del cliente del usuario
CallbackComponent y añádale un indicador de carga.
assets. Consulta el ejemplo descargable para ver una demostración.
Después de la autenticación, se llevará a los usuarios temporalmente a la ruta /callback, donde se les mostrará un indicador de carga. Durante ese tiempo, se establecerá su sesión del lado del cliente y, a continuación, se les redirigirá a la ruta /home.
Paso 3. Obtener el perfil de usuario
Extraer información del token
En esta sección se muestra cómo recuperar la información del usuario mediante el token de acceso y el endpoint /userinfo. Como alternativa, puedes simplemente decodificar el ID Token con una biblioteca (asegúrate de validarlo primero). El resultado será el mismo. Si necesitas información adicional del usuario, considera usar nuestra Management API.
AuthService existente. Agrega una función getProfile que extraiga el token de acceso del usuario del almacenamiento local y luego pase esa llamada a la función userInfo para recuperar la información del usuario.
Paso 4. Mostrar elementos de la interfaz de usuario de forma condicional según el scope
scope devuelto en authResult no está vacío, significa que al usuario se le asignó un conjunto de alcances diferente del solicitado inicialmente y, por lo tanto, debemos usar authResult.scope para determinar los alcances concedidos al usuario.
Si el scope devuelto en authResult está vacío, significa que al usuario se le concedieron todos los alcances solicitados y, por lo tanto, podemos usar esos alcances solicitados para determinar los alcances concedidos al usuario.
Aquí está el código que escribimos antes para la función setSession que realiza esa comprobación:
AuthService que podamos llamar para determinar si se concedió a un usuario un scope específico:
approve:timesheets. Tenga en cuenta que, en el código siguiente, agregamos una llamada a la función userHasScopes para determinar si ese enlace debe mostrarse.
Proteja una ruta
ScopeGuardService:
ScopeGuardService en la definición de la ruta approval a continuación:
Paso 5. Llama a la API
AuthHttp que actúa como envoltorio de la clase Http de Angular.
Instala angular2-jwt:
angular2-jwt y agréguela al arreglo providers en el @NgModule de su aplicación. La función de fábrica debe incluir una función tokenGetter que obtenga el access_token del almacenamiento local.
angular2-jwt, puede usar la clase AuthHttp para hacer llamadas seguras a su API desde cualquier parte de la aplicación. Para ello, inyecte AuthHttp en cualquier componente o servicio donde sea necesario y úsela igual que la clase Http normal de Angular.
Paso 6. Renueva el token de acceso
AuthService que llame al método checkSession de auth0.js. Si la renovación se realiza correctamente, usa el método setSession existente para guardar los nuevos tokens en el almacenamiento local.
AuthService, agregue un método llamado scheduleRenewal para programar el momento en que la autenticación debe renovarse silenciosamente. En el ejemplo siguiente, se configura para que esto ocurra 30 segundos antes de que el token expire realmente. Agregue también un método llamado unscheduleRenewal que cancelará la suscripción al Observable.
scheduleRenewal dentro de tu AppComponent cuando se cargue la página. Esto ocurrirá después de cada flujo de autenticación, ya sea cuando el usuario inicie sesión explícitamente o cuando se produzca la autenticación silenciosa.