Как мне заставить MsalGuard использовать мой идентификатор клиента? - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь настроить приложение Angular на использование @ azure / msal-angular. Я настроил MsalModule так:

import { NgModule } from "@angular/core";
import { MsalModule, MsalInterceptor } from "@azure/msal-angular";
import { HTTP_INTERCEPTORS } from "@angular/common/http";

console.log(`window populated: ${(window as any).APP_SETTINGS.aadAppClientId}`);
export const msalModuleForRoot = MsalModule.forRoot({
  clientID: (<any>window).APP_SETTINGS.aadAppClientId,
});

@NgModule({
  imports: [
    msalModuleForRoot,
  ],
  exports: [
    MsalModule
  ],
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: MsalInterceptor,
      multi: true
    },
  ],
})
export class AppMsalModule { }

Этот модуль импортирован в мой app.module.browser.ts. Журнал консоли выводит мой идентификатор клиента успешно.

Затем в своем app.routing.ts я добавил MsalGuard на маршруты, требующие авторизации.

То, что я вижу: эти маршруты перенаправляются на экран входа в систему, как и ожидалось, но когда вы аутентифицируетесь, он просит дать разрешение «myTrialApp», которое не является именем моего приложения.

При ближайшем рассмотрении MsalGuard в отладчике я вижу, что идентификатор клиента, который он использует, не определен. Я пытаюсь понять, что мне нужно изменить, чтобы убедиться, что на странице входа используется правильный идентификатор клиента.

1 Ответ

0 голосов
/ 29 марта 2019

Это не работает из-за AoT.Хорошим обходным решением было бы иметь возможность внедрить MsalConfig, но, похоже, сегодня это не поддерживается в библиотеке.Сейчас я решил эту проблему, определив свой clientId в environment.ts, который доступен во время компиляции.

...