我开始使用调用JBoss Wildfly(RestEasy)上的EJB层的REST api的应用程序。将用户主体从REST传播到EJB层
REST服务在战争中,然后调用ejb图层。 我知道如何实现对REST authenthication与RestEasy的拦截,检查等头基本上 喜欢这里描述的BASIC或任何自定义表单:http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/
现在的问题是 - 这只是对REST门面进行检查。在EJB层内,我不知道针对REST服务进行身份验证的用户。
要清除此 - 使用RMI和身份验证的远程EJB调用时,用户名存储在会话背景:
@Stateless
public class LoginService {
@Resource
private SessionContext sessionContext;
public String getCurrentUser() {
Principal principal = sessionContext.getCallerPrincipal();
return principal.getName(); //I need this to be the username from REST auth
//Currently it's anonymous
}
}
有没有办法传播在一些标准方式的用户名?例如。将自定义主体放到SessionContext中?
这不是工作在Wildlfly 9.0.2。试过“无状态休息”调用“无状态会话Bean”。试过“Pojo Rest”调用“无状态会话Bean”。没有用户主体传播。 W/@SecurityContext设置,带Resteasy特定安全配置(resteasy.role.based.security)。 –