我有Angular js应用程序的spring boot后端应用程序。登录过程和初始后端通信成功。在一些空闲时间之后,前端将显示403禁止,后端控制台上的令牌未激活。
下面的代码包含刷新令牌,但它似乎无效。
// 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;
}]);
后端出错
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
答案 0 :(得分:0)
Keycloak Server上的某些内容必定是错误的,令牌未激活表示令牌已过期或在有效之前使用。可能是你的KC服务器上的时间/日期错了吗?
答案 1 :(得分:0)
答案 2 :(得分:0)
在您的代码中:
var token = keycloak.token;
你定义一次令牌的价值。更新后,您必须再次设置它:
// 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;
}]);