如何获得MsalGuard使用我的客户ID?

时间:2019-03-27 23:21:55

标签: angular msal msal.js

我正在尝试将我的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中。控制台日志会成功打印出我的客户端ID。

然后在我的app.routing.ts中,我在需要身份验证的路由上添加了MsalGuard。

我看到的是:这些路由正按预期方式重定向到登录屏幕,但是在您进行身份验证时,它要求授予“ myTrialApp”权限,这不是我的应用程序名称。

仔细查看调试器中的MsalGuard,我可以看到它使用的客户端ID是未定义的。我试图了解我需要更改的内容,以确保登录页面使用正确的客户端ID。

1 个答案:

答案 0 :(得分:0)

由于AoT,此方法不起作用。一个不错的解决方法是能够注入MsalConfig,但是今天似乎在库中不支持该方法。现在,我通过在environment.ts中定义我的clientId来解决此问题,该参数在编译时可用。