Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
Keycloak-js: Adaptador configurando tokens manualmente

viniendo aquí por una ayuda muy necesaria. Tenemos un escenario bastante único con la autenticación mediante keycloak. Nuestro requerimiento es el siguiente:

  • Flujo autenticado "parital", donde el backend crea un usuario keycloak y devuelve access_token / refresh_token para ese usuario respetado a nuestro front-end de reacción (usa keycloak-js )
  • Flujo autenticado de keycloak estándar donde el usuario se autentica a través de la página de inicio de sesión de keycloak y regresa a nuestra aplicación felizmente autenticado (¡esto funciona bien y como se esperaba!)

Como puedes imaginar, el punto 1 es donde están nuestros problemas. Cada vez que trato de configurar los tokens manualmente para nuestra instancia de keycloak y actualizo el token, la llamada falla debido a una 400 bad request , esto se debe a que la carga útil de la solicitud no está definida, aunque las propiedades de la instancia ( keycloak.accessToken , keycloak.refreshToken están poblados):

 grant_type: refresh_token refresh_token: undefined client_id: frontend

Para las imágenes de implementación, he usado la implementación de @dasniko Niko Köbler como punto de partida, pero simplemente agregué un setter para los tokens:

 import kc from 'keycloak'; const doLogin = kc.login; const initKeycloak = (onAuthenticatedCallback: () => void) => { kc.init({ onLoad: 'check-sso', pkceMethod: 'S256', enableLogging: true, }).then((authenticated: boolean) => { if (!authenticated) { console.log('user is not authenticated..!'); } onAuthenticatedCallback(); }); }; const setTokens = (access: string, refresh: string): void => { kc.token = access; kc.refreshToken = refresh; }; const doLogout = kc.logout; const getToken = () => kc.token; const isLoggedIn = () => !!kc.token; const updateToken = (successCallback: () => void) => kc.updateToken(5) .then(successCallback) .catch(doLogin);

También configuré la implementación de actualización de token de manera similar:

 axios.interceptors.request.use((config: any) => { if (AuthService.isLoggedIn()) { const cb = () => { config.headers.Authorization = `Bearer ${AuthService.getToken()}`; return Promise.resolve(config); }; return AuthService.updateToken(cb); } return config; });

¿Alguien ha tenido éxito al intentar lo anterior? ¿Configurar los tokens de keycloak manualmente y no hacer que el usuario inicie sesión primero a través de keycloak?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda