Как разрешить бесконечный цикл adal-angular4 при перенаправлении после аутентификации
Я создаю приложение Angular 8, которое проверяет подлинность пользователя по Microsoft Azure Active Directory с использованием adal-angular4. У меня есть ASP.NET Core API, настроенный и связанный с клиентским приложением в Azure.
Я следовал следующей документации для настройки Active Directory:
и следующее для настройки моего приложения Angular и моего.NET Core API с использованием adal-angular4: -
https://www.digital-moves.eu/2018/07/19/authentication-with-azure-ad-angular-6-client-web-api/
URL переадресации, кажется, работает, в этом случае правильный компонент обратного вызова в моем приложении поражен. Однако в этот момент приложение попадает в бесконечный цикл повторных попыток входа в систему и перенаправления. В конце концов, попытка входа в систему приводит к исключению "мы не можем войти в систему. Пожалуйста, повторите попытку", возможно, из-за блокировки.
В моем app.module.ts: -
providers: [
AdalService, { provide: HTTP_INTERCEPTORS, useClass: AdalInterceptor, multi: true },
RefreshTokenService
Мой конфигурационный файл adal: -
private adalConfig = {
tenant: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
clientId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
redirectUri: 'http://localhost:4200/auth-callback',
postLogoutRedirectUri: "http://localhost:4200/end-session",
endpoints: { "https://visionapi2019.azurewebsites.net": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" },
cacheLocation: 'localStorage'
};
constructor(private adal: AdalService){
this.adal.init(this.adalConfig);
}
ngOnInit() {
this.adal.login();
}
В моем компоненте обратного вызова у меня есть следующее:
ngOnInit() {
this.adal.handleWindowCallback();
this.router.navigate(['test-api']);
}
Навигация к компоненту 'test-api' работает, но затем начинается бесконечный цикл.
Спасибо!
1 ответ
Решил проблему. Я использовал [RouterModule.forRoot(маршруты, { useHash: false })] в своем маршрутизаторе, а также удалил this.adal.login() из ngOnInit() в app.component - я полагаю, он повторно пытался войти в систему для каждое перенаправление, а затем сбой из-за хэша в URL, удаляющего id_token. Теперь логин и редирект работает нормально.