Как сделать Silent Refre sh вручную в неявном потоке, используя iFrame (используя Identity Server 4, Angular 2+) - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь сделать молчаливый refre sh, используя iFrame с Implicit Flow. Я не хочу использовать automaticSilentRenew , поскольку это неэффективно. Я использую библиотеку oid c -client в Angular 8 на стороне клиента. Итак, происходят две вещи:

1.) Я использую auth-guard для защиты важных компонентов. В auth-guard я проверяю, является ли токен действительным, в противном случае я вызываю signinRedirect класса auth-service, чтобы получить новый токен.

2.) Я не защищаю вызывающий компонент защищенного API с помощью auth-guard, чтобы я мог получить ошибку 401 неавторизованный для недействительного токена. Но если я защищаю его с помощью auth-guard, он направляет меня к auth-callback после получения нового набора токенов, и исходный запрос теряется.

Я как-то хочу автоматизировать этот процесс. Как, например, защита компонента, вызывающего API, с помощью auth-guard, и когда я пытаюсь поразить API с помощью токена с истекшим сроком действия, auth-guard входит в игру, обновляет текущий запрос действующим токеном за кулисами, чтобы обеспечить беспроблемное взаимодействие с пользователем ,

export class AuthService {

private manager = new UserManager(getClientSettings());
private user: User = null;


constructor() {
this.manager.getUser().then(user => {
  this.user = user;
});

this.manager.events.addAccessTokenExpiring(async function(){
  await this.manager.signinSilent().then(user => {   
      });  
});
}}

Я пытаюсь перехватить addAccessTokenExpiring событие в конструкторе моего класса обслуживания auth и вызываю signinSilent , чтобы получить новый access_token. Событие начинается до истечения срока действия токена, но я получаю this.manager undefined внутри этого события.

Пожалуйста, поделитесь своими ценными данными для достижения этого. Любой существующий пример был бы весьма заметен.

Благодарю вас!

Тарун Охри

1 Ответ

0 голосов
/ 28 февраля 2020

Я предпочитаю придерживаться аналогичного подхода, но не полагаться на истечение срока действия токена на стороне клиента, позволяя 401 произойти, а затем обновляя токен и повторяя запрос API с новым токеном.

Если это помогает, вот 2 ключевых класса:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...