Keyjloak令牌对于angularjs不起作用

时间:2017-05-29 07:26:25

标签: angularjs

我有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

3 个答案:

答案 0 :(得分:0)

Keycloak Server上的某些内容必定是错误的,令牌未激活表示令牌已过期或在有效之前使用。可能是你的KC服务器上的时间/日期错了吗?

答案 1 :(得分:0)

您可以在此处配置“会话空闲时间”:

enter image description here

我有同样的问题并通过自动注销处理它。因此用户必须再次登录。

答案 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;
}]);