我正在构建一个Angular 8应用程序,该应用程序使用adal-angular4针对Microsoft Azure Active Directory对用户进行身份验证。我已经设置了ASP.NET Core API,并与Azure上的客户端应用程序关联。
我已遵循以下文档来设置Active Directory:-
以及以下用于使用adal-angular4设置Angular应用和.NET Core API的内容:-
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”有效,但随后无限循环开始。
谢谢!
答案 0 :(得分:0)
解决了问题。我在路由器中使用了[RouterModule.forRoot(routes,{useHash:false})],还从app.component的ngOnInit()中删除了this.adal.login()-我猜想它正试图重新登录每次重定向,然后由于url中的哈希删除了id_token而失败。现在登录和重定向可以正常工作。