Как разрешить бесконечный цикл adal-angular4 при перенаправлении после аутентификации

Я создаю приложение Angular 8, которое проверяет подлинность пользователя по Microsoft Azure Active Directory с использованием adal-angular4. У меня есть ASP.NET Core API, настроенный и связанный с клиентским приложением в Azure.

Я следовал следующей документации для настройки Active Directory:

https://azure.microsoft.com/en-gb/resources/samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore/

и следующее для настройки моего приложения 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. Теперь логин и редирект работает нормально.

Другие вопросы по тегам