У меня есть клиентское веб-приложение, созданное с использованием Angular 7, которое использует Auth0 (auth0-js v9.8.2
) для аутентификации.Мы требуем, чтобы пользователи входили в систему, используя имя пользователя / пароль, а затем многофакторный, используя Guardian / text / phone call.Все это прекрасно работает.Проблема в том, что мы видим, что иногда пользователям необходимо во второй раз проходить проверку подлинности / многофакторность сразу после того, как они перенаправлены в приложение со страницы входа Auth0.Я видел это один или два раза сам, но теперь, когда я пытаюсь отладить эту проблему, я не могу повторить проблему.Тем не менее, я вижу в журналах, что несколько пользователей в день испытывают это неудобство.
Вот некоторые фрагменты из моего кода.Если бы я знал, как копировать, я бы попытался отладить, но я не могу даже сделать это сейчас, хотя это все еще происходит в настоящее время с другими.
Первое, что я делаю в app.component.ts
, вызывает handleAuthentication()
и требует от пользователей аутентификации, если они этого еще не сделали.
constructor(private auth: Auth, private dataService: DataService) {
this.auth.handleAuthentication().then((res: any) => {
if (this.auth.isAuthenticated()) {
this.authenticated = true;
} else {
this.auth.auth0.authorize();
}
});
}
Вот функция handleAuthentication()
, который разрешается только после вызова parseHash () и установки сеанса.
public handleAuthentication(): Promise<any> {
return new Promise((resolve, reject) => {
this.auth0.parseHash({ _idTokenVerification: false }, (err, authResult) => {
if (authResult && authResult.accessToken && authResult.idToken) {
window.location.hash = '';
this.setSession(authResult);
} else if (err) {
console.log(err);
}
resolve();
});
});
}
Вот мои auth0
настройки на случай, если это будет полезно
auth0 = new auth0.WebAuth({
domain: '<domain>',
clientID: '<clientID>',
redirectUri: environment.callbackURL,
audience: '<audience>',
responseType: 'token id_token',
scope: 'openid'
});
Мой толькоПредполагается, что это как-то связано с ошибкой parseHash ().Есть несколько других вещей, которые мне кажутся интересными.
- В других примерах я не вижу, чтобы
{ _idTokenVerification: false }
передавался в parseHash()
, но в какой-то момент он был добавлен по какой-то причине - Я видел, как другие говорили о проблемах с передачей
id_token
в responseType
, но мы используем этот токен для проверки срока действия.Если это может быть причиной проблемы, я могу найти обходной путь
Я не могу просто предположить, что это проблемы, потому что я не могу воспроизвести основную проблему с этими изменениями или без них.
Любая помощь или совет?