2017-09-07 2 views
1

So habe ich einige Probleme damit, mein Keycloak-Connect-Sample zum Laufen zu bringen. GrundsätzlichKeycloak - Grant Validierung fehlgeschlagen. Grund: ungültiges Token (falsche ISS)

Ich habe eine einfache Prüfung mit Keycloak auf einer Schnellstraße auf meinem VM

(10.10.10.54:8081) wie folgt.

app.get('/api*', keycloak.protect(), (req, res) => res.status(200).send({ 
    message: 'Hit API Backend!', 
})); 

Mein Keycloak Server ist auf einer separaten VM (für dieses Beispiel http://keycloak.myexternaldomain.ca/auth/)

die Rufe ich diese heraus zu testen, habe machen sind.

RESULT=`curl --data "grant_type=password&client_secret=mysecret&client_id=account&username=myusername&password=mypassword" http://keycloak.myexternaldomain.ca/auth/realms/TEST/protocol/openid-connect/token` 

Dies gibt den richtigen Zugriffstoken jedes Mal,

TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'` 

zu analysieren, um in eine variable Token.

curl http://10.10.10.54:8081/api -H "Authorization: bearer $TOKEN" 

die noch ständig zurückgibt Zugriff verweigert, habe ich versucht, dies in einem ähnlichen Beispiel mit den Keycloak-Quickstart Node Service zu sehen, ob ein ausführlichere Fehler, dass es war. Was ich würde erhalten war zurück

Validate grant failed 
Grant validation failed. Reason: invalid token (wrong ISS) 

Obwohl, wenn ich ein wenig gewartet, es sei mir einen abgelaufenen Token Fehler so fühle ich mich, wie ich auf dem richtigen Weg bin.

so offensichtlich ist etwas nicht in Ordnung, wo ich das Token aus nicht übereinstimmen, wo es erwartet wird? Ich kann einen Anruf tätigen, die Benutzer-Anmeldeinformationen aus dem keycloak-Server zu beziehen sich durch Einrollen zu

curl --data "grant_type=password&token=$TOKEN&client_secret=secret&client_id=account&username=myaccount&password=mypassword" http://keycloak.myexternaldomain.ca/auth/realms/TEST/protocol/openid-connect/token/introspect 

bin falsch interpretiert ich, wie soll ich werden Keycloak, oder ist dies ein Einstellungsproblem?

Vielen Dank im Voraus

Antwort

1

Mein Problem in meinem keycloak.json war ... ich hatte ein anderes Reich gegen das, was ich für die Authentifizierung wurde.

Wenn Sie jemals dieses Problem haben, empfehle ich, keycloak-auth-utils zu ändern, um Ihnen eine ausführlichere Fehlerprotokollierung auf dem Grant-Manager zu geben.

Ändern Insbesondere

else if (token.content.iss !== this.realmUrl) { 
     reject(new Error('invalid token (wrong ISS)')); 
} 

zu

else if (token.content.iss !== this.realmUrl) { 
     reject(new Error('invalid token (wrong ISS) Expecting: '+this.realmUrl+' Got: '+token.content.iss); 
} 

hat mir geholfen, dieses Thema selbst aufzuspüren.

+1

Ich habe die Pull-Anfrage hier erstellt: https://github.com/keycloak/keycloak-nodejs-auth-utils/pull/80 – cdupont

Verwandte Themen