【问题标题】:Is getAccount() enough to securing a React SPA with Azure AD B2C using MSALgetAccount() 是否足以使用 MSAL 通过 Azure AD B2C 保护 React SPA
【发布时间】:2023-04-02 17:10:01
【问题描述】:

我正在保护一个 React SPA。该应用程序在专用网络上使用,并且只会访问专用网络内的端点。我不需要进一步调用来保护 JWT,因此我计划在用户导航到页面时调用 getAccount() 以及简单的时间检查。我找不到函数 getAccount() 的 MSAL 文档,但它几乎用于所有 MSAL 示例。 getAccount() 是用于确定用户是否已登录的安全布尔值吗?

【问题讨论】:

标签: reactjs security azure-active-directory msal


【解决方案1】:

假设 getAccount 读取 id_token 而不是某处的信息副本,那么它应该足够安全,因为 id_token 保证不会被篡改(jwt 规范)

但是,SPA 绝不应包含安全数据,因为根据定义,它们是不安全的客户端。如果端点不安全,组织内部的任何人都可能能够访问已知的内部端点。 正确的做法是使用 azure ad 保护端点,将这些端点的 api 公开给 spa 应用注册,并让端点使用令牌进行身份验证。

【讨论】:

  • MSAL getAccount() 上没有文档,但是当会话缓存中没有任何内容时,它似乎返回 null,并且它返回 tokenID、到期日期(unix 时间戳)、颁发者等。如果会话缓存。但是,我有责任检查到期日期,因为我将我的 AD B2C 用户流设置为在 1 天后到期,并且在我测试时,getAccount() 返回了旧的会话数据。因此,除非会话数据是不可变的,否则我不能信任 getAccount() 来确认我的应用程序仍处于登录状态。此外,我同意保护端点,但我担心的是信任缓存的登录 tokenID 及其有效性。
猜你喜欢
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多