2017-05-29 3 views
1

Ich habe Spring Boot Backend App mit Angular js App. Der Login-Prozess und die initiale Backend-Kommunikation sind erfolgreich. Nach einiger Leerlaufzeit zeigt das Frontend 403 verboten mit Token an, die auf der Backend-Konsole nicht aktiv sind.Keycloak Token nicht aktiv mit angularjs

Der folgende Code enthält Refresh-Token, aber es scheint nicht zu funktionieren.

// use bearer token when calling backend 
themesApp.config(['$httpProvider', function($httpProvider) { 
    var isExpired = keycloak.isTokenExpired(); 
    var token = keycloak.token; 

    if (isExpired) { 
    keycloak.updateToken(5) 
    .success(function() { 
     $httpProvider.defaults.headers.common['Authorization'] = 'BEARER ' + token; 
    }) 
    .error(function() { 
     console.error('Failed to refresh token'); 
    }); 
    } 

    $httpProvider.defaults.headers.common['Authorization'] = 'BEARER ' + token; 
}]); 

Fehler im Backend

2017-05-29 10:08:23.715 ERROR 5072 --- [nio-8080-exec-3] o.k.a.BearerTokenRequestAuthenticator : Failed to verify token 

org.keycloak.common.VerificationException: Token is not active 

Antwort

0

Es muss etwas auf dem Keycloak Server falsch sein, Token nicht aktiv bedeutet Token Sein abgelaufen ist oder verwendet wird, bevor es gültig wird. Könnte es sein, dass die Uhrzeit/das Datum auf Ihrem KC-Server falsch ist?

+0

Ja, ich habe sowohl Schlüsselcloak-Server und Client überprüft. Sie scheinen in der richtigen Zeitzone zu sein. – boycod3

0

können Sie Config die 'Session Idle Time' hier:

enter image description here

ich hatte das gleiche Problem und es mit einem automatischen Logout behandeln. Der Benutzer muss sich also erneut anmelden.

0

In Ihrem Code:

var token = keycloak.token; 

Sie den Wert des Token definieren einmal. Nach dem Update müssen Sie es erneut einstellen:

// use bearer token when calling backend 
themesApp.config(['$httpProvider', function($httpProvider) { 
    var isExpired = keycloak.isTokenExpired(); 
    var token = keycloak.token; 

    if (isExpired) { 
    keycloak.updateToken(5) 
    .success(function() { 

    // UPDATE THE TOKEN 
    token = keycloak.token; 

    $httpProvider.defaults.headers.common['Authorization'] = 'BEARER ' +  token; 
    }) 
.error(function() { 
    console.error('Failed to refresh token'); 
}); 
} 

$httpProvider.defaults.headers.common['Authorization'] = 'BEARER ' + token; 
}]); 
Verwandte Themen