【发布时间】:2021-09-11 15:33:10
【问题描述】:
我想为我的 Angular 应用程序设置一些端到端测试,这需要使用 MSAL 库对一些下游服务进行身份验证。当我尝试在本地运行我的 e2e 测试时,MSAL 库强制我使用用户名/密码进行身份验证。
这是一个问题,因为我们的 CI/CD e2e 测试不应该有任何人为干预;因此,我正在寻找一种绕过 MSAL 身份验证或设置服务帐户登录的方法。不幸的是,关于 Angular 的 MSAL 的文档并不多(尤其是在 e2e 测试方面),但这似乎是其他人可能遇到的常见问题。
我尝试从我们的 app.module.ts 文件中禁用 MsalModule,但当我尝试运行应用程序时,仍然提示我登录。我还看到一些文章试图以编程方式登录,但这对我们不起作用,因为 MSAL 在技术上不是我们能够接触到的 Angular 组件。
app.module.ts:
@NgModule({
...
imports: [
...
MsalModule.forRoot({
clientID: '<client_id>',
authority: <microsoft_authority_url>,
validateAuthority: true,
redirectUri: "http://localhost:4200/",
cacheLocation : "localStorage",
postLogoutRedirectUri: "http://localhost:4200/",
navigateToLoginRequestUrl: true,
popUp: true,
consentScopes: [ "user.read"],
unprotectedResources: ["https://www.microsoft.com/en-us/"],
protectedResourceMap: protectedResourceMap,
logger: loggerCallback,
correlationId: '1234',
level: LogLevel.Info,
piiLoggingEnabled: true
})
],
entryComponents: [SaveDialogComponent,
GenericDialog, MassChangeDialogComponent],
providers: [TitleCasePipe,
{provide: HTTP_INTERCEPTORS, useClass: MsalInterceptor, multi: true}],
bootstrap: [AppComponent]
})
export class AppModule { }
预期结果:删除 MSAL 身份验证模块应该允许我们的应用程序无需登录即可运行。
实际结果:应用程序仍在提示登录,或未正确呈现。
【问题讨论】:
-
感谢您提出这个问题......我遇到了同样的问题。您想出解决问题的方法了吗?
-
@westonplatter 我们确实想出了一个解决方案,我相信我们能够禁用 msal 功能,但不记得具体细节了。我会联系我的同事,看看他是否记得他是如何解决这个问题的
标签: angular angular-cli e2e-testing msal angular-e2e