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

851
Vistas
keycloak-connect: type=PERMISSION_TOKEN_ERROR, userId=null, ipAddress=, error=invalid_client_credentials

Contexto

Hola a todos, estoy trabajando en una aplicación de 3 partes:

  • Servidor Keycloak para autenticación
  • Aplicación angular para la interfaz (con cliente dedicado, público)
  • enrutador express para el backend (con cliente dedicado, solo portador)

Las dos primeras partes funcionan a la perfección, puedo autenticarme en mi servidor KC con mi aplicación Angular, obtener los roles, etc.

Esta semana, comencé a trabajar con el backend, instalé keycloak-connect siguiendo la documentación oficial y otros, para solucionar mi problema actual.

Este es el código condensado que estoy intentando:

 var express = require('express'); var session = require('express-session'); var Keycloak = require('keycloak-connect'); var memoryStore = new session.MemoryStore(); var keycloak = new Keycloak({ store: memoryStore }); var app = express(); //session app.use(session({ secret:'thisShouldBeLongAndSecret', resave: false, saveUninitialized: true, store: memoryStore })); app.use( keycloak.middleware() ); app.get('/check', keycloak.checksso('user'), function(req, res){ console.log(req.headers); res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify({ 'this': 'works!' }, null, 3)); }); app.get('/check', keycloak.enforce('user'), function(req, res){ console.log(req.headers); res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify({ 'this': 'does not work' }, null, 3)); }); app.listen(8000, function () { console.log('Listening at http://localhost:8000'); });

Además, tengo un archivo .json proporcionado por mi servidor KC después de configurar el cliente de solo portador, por lo que este debería estar bien.

La cuestión

Tenga en cuenta que el uso de .checkSSO() funciona como se esperaba, mientras que el uso de protect('my-role') o enforce('my-role') no lo hace.

Mi backend expreso obtuvo el token Angular correctamente, y verifiqué el rol my-role usando el servicio https://www.jstoolset.com/jwt , y todo está bien.

Habilité LOGLEVEL en mi servidor KC, no obtuve nada usando protect(), pero recibí un mensaje usando enforce():

 keycloak-connect : type=PERMISSION_TOKEN_ERROR, userId=null, ipAddress=, error=invalid_client_credentials

Esto es extraño para mí, ya que el cliente dedicado que estoy usando para mi back-end, está configurado solo como portador, y no hay lugar para tal secreto dentro del archivo de configuración que me proporciona mi servidor KC...

Creo que no avanzaré más sin su ayuda, estuve navegando toda la semana, probé muchas pistas, sin suerte hasta ahora...

Gracias por su ayuda si la hay, amables extraños...

over 4 years ago · Santiago Trujillo
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