微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MSAL Angular MsalGuard 配置本地存储在令牌到期时清除

如何解决MSAL Angular MsalGuard 配置本地存储在令牌到期时清除

我正在对我们的 Angular 应用上的 MSAL 实现进行 POC。

要求:用户必须每天登录一次。当他多次访问时,他将被直接带到应用程序,无需登录交互。身份验证流程仅用于身份验证而不是授权(无需访问令牌)。

我已经设置了一个测试 Azure AD 帐户,并向其中添加了 angular 应用程序。我已经安装了@azure/msal-angular 并在 app 模块中进行了相同的配置,如下所示:

export function MsalInstanceFactory(): IPublicclientApplication {
  return new PublicclientApplication({
    auth: {
      clientId: 'my clientId',redirectUri: '<domain>/azurePOC2/auth',authority: 'https://login.microsoftonline.com/common/',postlogoutRedirectUri: '<domain>//azurePOC2/logout'
    },cache: {
      cacheLocation: browserCacheLocation.LocalStorage,storeAuthStateInCookie: true
    },system: {
      loggerOptions: {
        loggerCallback: ()=>{}
      }
    }
  })
}

export function MsalGuardConfig(): MsalGuardConfiguration {
  return {
    interactionType: InteractionType.Redirect,loginFailedRoute: '<domain>/azurePOC2/error',authRequest: {
      scopes: ['openid']
    }
  }
}

@NgModule({
  declarations: [
    ...
  ],imports: [
    ...
    MsalModule
  ],providers: [
    ...
    {
      provide: MSAL_INSTANCE,useFactory: MsalInstanceFactory
    },{
      provide: MSAL_GUARD_CONfig,useFactory: MsalGuardConfig
    },MsalGuard,MsalService
  ],bootstrap: [AppComponent],})
export class AppModule { }

添加了 MsalGuard 来保护我的路线。该设置适用于登录和注销流程。我面临的问题是一天结束时的自动注销。

该包将客户端信息存储在本地存储的令牌中(这样公开信息是否安全?)。除非我明确调用 MsalService.logout(),否则本地存储永远不会过期或被清除。由于我使用的是测试帐户,因此令牌到期时间为1H。当实际开发开始时,客户将在 AD 中配置到期时间以满足他们的需求。但是我需要弄清楚令牌过期后如何清除本地存储。有人可以帮忙吗?

解决方法

您使用的是最新版本的 MSAL,因为您不需要手动清除本地存储,并且在令牌过期时库将处理该问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。