Hola, estoy tratando de recuperar id_token después de una autenticación exitosa usando oidc y la biblioteca oidc-client. A continuación puede inspeccionar mi definición de servicio:
import Oidc from "oidc-client"; const config = { authority: process.env.VUE_APP_API_URL, client_id: process.env.VUE_APP_OAUTH_CLIENT_ID, redirect_uri: process.env.VUE_APP_OAUTH_REDIRECTION_URL, response_type: process.env.VUE_APP_OAUTH_RESPONSE_TYPE, scope: process.env.VUE_APP_OAUTH_SCOPE, post_logout_redirect_uri: process.env.VUE_APP_OAUTH_REDIRECTION_URL }; const userManager = new Oidc.UserManager(config); const service = { signIn() { userManager.signinRedirect(); }, signOut() { userManager.signoutRedirect(); }, }; export default service;Después del proceso de autenticación, estoy siendo redirigido desde Google a esta URL:
http://localhost:8080/#id_token=mytoken&scope=openid&state=mystate&session_state=mysessionstateMe gustaría conservar el token recuperado en el almacenamiento local. Mi primera preocupación es saber de qué lugar debo obtener el token. Puedo obtenerlo directamente de la URL, o tal vez usar Oidc.UserManager. La intuición dice que debería obtenerlo de UserManager, pero tengo curiosidad por saber cuáles son los pros y los contras de las dos soluciones. La segunda pregunta es ¿cómo puedo atrapar un gancho que se activa después de la redirección? Quiero decir que quiero ejecutar algo de lógica si la redirección está completa al 100%. Traté de usar la función "esperar" y "luego", sin embargo, signinRedirect parece estar terminado antes de que se complete la redirección. Sé que hay una función llamada signinRedirectCallback, sin embargo, no sé cómo usarla para estar 100% seguro de que se está ejecutando después de completar la redirección. Gracias de antemano por cualquier ayuda. Saludos.
Debe usar UserManager como en este código mío .
Un punto clave que debe comprender es que debe verificar las respuestas de OIDC cada vez que se carga el SPA. Pero solo llame a signInRedirectCallback cuando detecte que tiene uno.
Creo que el almacenamiento local se usa de forma predeterminada, pero hay opciones para anular esto como en esta otra configuración .