Jakarta EE 安全 - 使用多个身份存储/传递请求的角色

Jakarta EE Security - Using Multiple Identity Stores / Passing Requested Role

我有一个具有多种用户类型(角色)的应用程序,每种类型都存储在同一个 SQL 数据库中的不同 table 中,并且每个都有自己的登录页面。要使用 Jakarta EE 8 安全性 API 实现此目的,我知道我有两个选择:

  1. 定义多个IdentityStore,每个角色一个

  2. 通过 securityContext.authenticate(...) 方法将请求的角色传递给并有一个身份存储选择要查询的数据库 table。

问题是 1) 我不知道如何 'select' IdentityStore,似乎我只能设置优先级,这意味着循环遍历它们直到一个成功,这不是很有效,它也不允许我有不同角色的重复用户名。

对于 2) 我能看到的唯一方法是将用户名与角色连接起来,以便将其包含在 UsernamePasswordCredential 中(例如 adminRole:john.doe@hotmail.com) 但这似乎也是错误的。

我是不是漏掉了什么技巧?

最后我通过在传递给 IdentityStore 的请求对象上设置属性来实现这一点