2014-11-06 85 views
0

@RunAs注释允许通过仅指定角色的名称来访问bean。这意味着任何能够轻松访问我的bean的外部客户端只是指向角色名称,不是吗?EJB3 @RunAs注释和安全

我想调用者和bean位于不同的服务器上。

那么@RunAs需要什么,如果它很容易伪造客户端? 或者如何正确使用它,如果我错了?

回答

1

它有点不同。有关更多详细信息和示例,请参见WebSphere Application Server V7.0 Security Guide中的第9.6章。

当一个bean调用另一个bean中的方法时,默认情况下调用者 的标识传播到下一个。通过这种方式,调用链中的所有EJB方法 在调用getCallerPrincipal()方法时都会看到相同的主体。

然而,有时候,一个EJB需要以先前定义的标识调用另一个EJB ,例如,某个特定角色的成员是 。

@RunAs注解定义将用于委托的作用。您仍然可以使用@RolesAllowed

保护第一个bean。在应用程序部署期间,必须将此runAsRole映射到来自用户注册表的实际用户。