0

我正在为我的一个使用 IdentityServer4、ASP.NET Core 和 Angular 的 Web 应用程序开发安全解决方案,并且想知道我认为的方法是否正确。

该应用程序具有可以加载多个 SPA(微前端)的 Shell 接口(在 Angular 中作为单页应用程序开发的客户端)。此 App Shell 负责与 IdentityServer4 通信的身份验证。用户可以选择将作为子应用加载到 App Shell 中的微前端 (MFE) 之一。App Shell 和 MFE 都是 IdentityServer4 中的客户端。步骤顺序如下:

  1. 用户将获得一个登录页面以登录到 App Shell 界面。
  2. 一旦用户登录,IdentityServer4 就会提供一个 ID 令牌和一个访问令牌(仅适用于 App Shell)。在这个阶段,我们不知道用户会预先将哪个微前端加载到 App Shell 中。
  3. 然后 App Shell 将加载所有可供用户选择的 MFE。
  4. 这些 MFE 中的每一个都有其相关的微服务。
  5. 每个用户都将拥有与该 MFE 相关的特定权限集。例如:一。对于微前端“A”,用户“X”可以拥有“项目经理”角色相关权限 b.对于微前端“B”,同一个用户“X”可以拥有“Guest User”角色相关权限。
  6. 由于这些 MFE 中的任何一个都可以根据用户选择按需加载,并且根据“最小权限原则”,我们不想在登录时生成的访问令牌中添加所有 MFE 相关范围(来自第2步)。
  7. 当 MFE 加载到 App Shell 中时,使用来自令牌端点的“自定义授权”请求新的访问令牌。
  8. 与该 MFE 及其相关微服务的进一步交互将使用上述访问令牌(在步骤#7 中生成)进行控制。
  9. 如果用户卸载 MFE,则与其关联的访问令牌将被丢弃。
  10. 如果用户选择另一个 MFE,则从步骤#7 开始重复该过程。基本上,在任何时候,我们都会有两个访问令牌,一个用于 App Shell,另一个用于加载的 MFE。我们想知道我们在第 6 步中实施的方法是否符合安全最佳实践。

感谢有关上述方法的任何建议或解决我们问题的任何其他替代方案。

4

0 回答 0