0

Angular アプリでの MSAL 実装の POC を行っています。

要件: ユーザーは 1 日に 1 回ログインする必要があります。彼が複数回訪問すると、ログイン操作なしで直接アプリに移動します。認証フローは認証にのみ必要であり、承認には必要ありません (アクセス トークンは必要ありません)。

テスト Azure AD アカウントをセットアップし、angular アプリを追加しました。@azure/msal-angular をインストールし、アプリ モジュールで以下のように構成しました。

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 で有効期限を構成します。しかし、トークンの有効期限が切れたら、ローカル ストレージをクリアする方法を理解する必要があります。誰か助けてくれませんか?

4

1 に答える 1