我正在对我们的 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 中配置到期时间以满足他们的需求。但是我需要弄清楚令牌过期后如何清除本地存储。有人可以帮忙吗?