Wildfly 中的 JASPIC 客户端登录
JASPIC client login in Wildfly
我有一个 Java EE Web 应用程序,它使用我的 EJB 上的 JASPIC 和 @RolesAllowed 注释进行保护。我使用托管执行程序服务来 运行 一些任务。
但是,这些任务并非 运行 任何用户,因此我在尝试访问我的 EJB 时遇到权限被拒绝的错误。我试过使用 @RunAs 注释,但这似乎不起作用。
如何以编程方式进行身份验证?
我有摘要class
public abstract class AbstractTask implements Runnable...
和具体的class,然后我将任务提交给托管执行程序服务
mes_.submit(task);
我试过将@RunAs 放在两个 class 上,但都不起作用。
不幸的是,Java EE 中没有用于在 Web 上下文之外以编程方式登录的工具。
JASPIC 应该提供这一点,但它不知何故被遗忘了,或者他们脑子里有其他事情。 JASPIC 规范文档在最后的某个地方提到了它,他们稍后会调查它,但它从未发生过。
@RunAs
有点受限,但在这种情况下应该可以正常工作。您可能需要提供一些代码,而 WildFly 可能需要为此进行一些自定义配置。
您的 @RolesAllowed
带注释的 EJB 方法是否仅从托管执行程序服务调用?在 WildFly 8 中,当从 Servlet 调用 EJB 时,@RolesAllowed
被破坏,但这应该在 WildFly 9 中被修复。
您应该显示更多代码。现在您的问题中的内容并不是很有用,因为它基本上是通过使用执行程序服务来暗示的。可以肯定的是,在您放置 @RunAs
的位置显示确切的 classes。
我觉得问题出在哪里,那就是您不能将 @RunAs
放在任何普通的 class 上,而是需要使用中间的不安全 EJB。 '@RunAs` 可能有点令人困惑,因为它没有为用它注释的方法设置角色,而是为传出调用设置角色。
因此顺序是
执行器服务 -> 任务 -> 使用@RunAs 方法的中间 EJB bean -> 使用@RolesAllowed 的安全 bean
我有一个 Java EE Web 应用程序,它使用我的 EJB 上的 JASPIC 和 @RolesAllowed 注释进行保护。我使用托管执行程序服务来 运行 一些任务。
但是,这些任务并非 运行 任何用户,因此我在尝试访问我的 EJB 时遇到权限被拒绝的错误。我试过使用 @RunAs 注释,但这似乎不起作用。
如何以编程方式进行身份验证?
我有摘要class
public abstract class AbstractTask implements Runnable...
和具体的class,然后我将任务提交给托管执行程序服务
mes_.submit(task);
我试过将@RunAs 放在两个 class 上,但都不起作用。
不幸的是,Java EE 中没有用于在 Web 上下文之外以编程方式登录的工具。
JASPIC 应该提供这一点,但它不知何故被遗忘了,或者他们脑子里有其他事情。 JASPIC 规范文档在最后的某个地方提到了它,他们稍后会调查它,但它从未发生过。
@RunAs
有点受限,但在这种情况下应该可以正常工作。您可能需要提供一些代码,而 WildFly 可能需要为此进行一些自定义配置。
您的 @RolesAllowed
带注释的 EJB 方法是否仅从托管执行程序服务调用?在 WildFly 8 中,当从 Servlet 调用 EJB 时,@RolesAllowed
被破坏,但这应该在 WildFly 9 中被修复。
您应该显示更多代码。现在您的问题中的内容并不是很有用,因为它基本上是通过使用执行程序服务来暗示的。可以肯定的是,在您放置 @RunAs
的位置显示确切的 classes。
我觉得问题出在哪里,那就是您不能将 @RunAs
放在任何普通的 class 上,而是需要使用中间的不安全 EJB。 '@RunAs` 可能有点令人困惑,因为它没有为用它注释的方法设置角色,而是为传出调用设置角色。
因此顺序是
执行器服务 -> 任务 -> 使用@RunAs 方法的中间 EJB bean -> 使用@RolesAllowed 的安全 bean