Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

857
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!