msal和angular 4重定向网址

时间:2017-10-09 10:19:16

标签: angular msal

我正在使用msal.js来验证用户身份。我成功获得了令牌。在azure portal的redirectURl中,我已将路径指定为" http://localhost:44340"。

我的app.routing模块如下所示:

 const routes: Routes = [
  { path: 'authentication', component: LoginComponent },
  { path: '', redirectTo: '/lists', pathMatch: 'full' , canActivate: [AuthenticationGuard] },
  { path: 'lists', component: ApplicationContainer ,  canActivate: [AuthenticationGuard]}
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

我的问题是,当用户登录时,我确实获得了令牌,并且当redirecturi到达' / lists'时。我有一个gaurd。在gaurd的一侧,由于页面未重定向,因此尚未设置标记值。这就是为什么它一直都是假的,我被重定向回登录页面。

2 个答案:

答案 0 :(得分:0)

推荐使用GitHub上的angular MSAL库示例实现:

npm install @azure/msal-angular --save

答案 1 :(得分:0)

这可能与哈希片段有关。

尽管不是Angular 4,但在我的情况下(旧的Angular JS-1.6应用程序),我不得不更改$locationProvider并将哈希值设置为空字符串,因为#片段正在干扰{ {1}}由Azure B2C AD返回。

如果使用Angular JS,请确保您使用的是#id_token软件包。

https://www.npmjs.com/package/@azure/msal-angularjs

那里有一个注释:

  

注意:如果未配置HTML5模式,请确保将$ locationProvider hashPrefix设置为空字符串

msal-angularjs
  

在没有上述设置的情况下,AAD登录将无限期循环,因为来自AAD的回调URL(以{yourBaseUrl} /#{AADTokenAndState}的形式)将被重写以删除“#”,从而导致令牌解析失败并登录顺序再次发生。