经过广泛搜索,我没有找到解决此问题的方法。我正在尝试将 EJB 层移动到远程应用服务器。
Web 层:部署在 .ear 中的 JSF webapp。身份验证是通过 JDBC 领域进行容器管理的。
业务层:一个 .ear 文件,其中包含一个 EJB 模块,该模块利用角色声明性安全性。
当两者驻留在同一个应用服务器上时,即同一个 JVM,主体和角色是透明传递的。
但是,当我将业务层 .ear 部署到不同 JVM 上的远程应用程序服务器时,调用显然停止工作,因为用户没有足够的权限。
主要问题是,是否可以只传递主体和角色,而无需再次向应用服务器重新验证用户身份?
我已经阅读了Propagating a Security Identity,这给我带来了更多的困惑,尤其是在“容器之间的信任”这一段中:
当企业 bean 被设计为使用原始调用者身份或指定身份来调用目标 bean 时,目标 bean 将仅接收传播的身份。目标 bean 将不会收到任何身份验证数据。