Автоматическое обновление токена службы идентификации 4

Я использую сервер идентификации 4 с библиотекой oidc-client на веб-странице angular 2. Вызовы входа в систему, выхода из системы и вызовы API работают правильно без каких-либо проблем. Недавно я начал пытаться заставить функцию автоматического обновления токена работать и на веб-странице. Я вижу, что веб-страница, определенная в режиме silent-redirect, создается в iFrame, и я вижу вызовы службы id4, но всегда получаю ошибку тайм-аута в iframe и новый токен не получен. Будем очень признательны за любую помощь или предложения о том, что мне не хватает или что я делаю неправильно. Ниже я привел соответствующий код на стороне клиента. Я вижу, что срабатывает событие истечения срока действия токена. Заранее большое спасибо.

angular2 сервис

import { UserManager, Log, MetadataService, User, WebStorageStateStore } from 'oidc-client';


export const settings: any = {
  authority: 'http://10.3.30.215:8885',
  client_id: 'tps',
  redirect_uri: 'http://10.3.30.215:4201/auth.html', 
  response_type: 'id_token token',
  automaticSilentRenew: true,
  monitorSession: true,
  scope: 'openid scope1 scope2 offline_access',
  post_logout_redirect_uri: 'http://10.3.30.215:4201', 
  silent_redirect_uri: 'http://10.3.30.215:4201/silent_renew.html',
  loadUserInfo: true

};


  public mgr: UserManager = new UserManager(settings);
constructor(private http: Http) {

    Log.logger = console;
    Log.level = Log.DEBUG;
  }

login() {
       this.mgr.clearStaleState().then(() => {       
        this.mgr.signinRedirect();
        });

}

silent_renew.html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <script src="oidc-client.js"></script>
    <script>
        new Oidc.UserManager().signinSilentCallback();
    </script>
</body>
</html>

person macawman    schedule 17.08.2017    source источник


Ответы (1)


Предполагая, что ваш сайт защищен с помощью https и вы владеете интерфейсом, вы могли бы реализовать реализацию предоставления пароля владельца ресурса с токенами обновления и использовать встроенные функции аутентификации angular.

На этом сайте есть полезная информация о том, как реализовать http-перехватчик. https://ryanchenkie.com/angular-authentication-using-the-http-client-and-http-interceptors.

Ваш вариант использования может не допускать такой подход, но это вариант. Надеюсь, это поможет.

person DJDJ    schedule 18.08.2017