【发布时间】:2018-09-14 08:27:14
【问题描述】:
我正在使用 Shiro Security 来保护 JSF 项目。
它按预期工作,包括对远程 EJB(不安全)的调用。但是,当调用不安全的 EJB 时,我会收到以下警告,但该方法的执行没有问题:
IIOP1002: Principal propagation: Cannot find principal information in subject
这到底是什么意思?我应该怎么做才能解决这个问题?我需要从安全的应用程序在远程 EJB 中执行该方法,并且每次调用 EJB 时都会将这个警告转储到日志中(这种情况会发生多次)。
编辑:
当我将项目部署在与 EJB 相同的 Glassfish 服务器中时,不会出现警告。
编辑 2:
在调用 EJB 之前,我曾考虑在 InitialContext 中插入主体信息,如下所示:
Hashtable env = new Hashtable();
env.put(Context.SECURITY_PRINCIPAL, SecurityUtils.getSubject().getPrincipal());
ctx = new InitialContext(env);
还是没有运气。
SecurityUtils 来自org.apache.shiro.SecurityUtils 库。
【问题讨论】:
-
我猜这是 Glassfish 配置问题。您的实例是如何配置的?
-
我不知道这是否是 Glassfish 配置问题,因为所有实例都具有相同的配置。当我尝试从另一个 glassfish 实例访问 EJB 时会发生这种情况。例如:我正在使用 Shiro Security 运行本地应用程序,然后尝试访问远程 EJB(在另一个 glassfish 实例中),它给了我错误。但是,如果我在同一个实例中运行,我不会收到错误/警告。
标签: java jsf glassfish ejb shiro