Java 管理会话bean中实体的公共和私有信息?

Java 管理会话bean中实体的公共和私有信息?,java,security,jakarta-ee,ejb,entity,Java,Security,Jakarta Ee,Ejb,Entity,我看到很多实例,其中实体对象在会话bean方法中返回或传递。但是会话bean的远程接口的概念让我认为这是一种糟糕的做法,因为实体可能持有私有数据。对会话bean进行远程调用的客户端不应该能够访问所有数据。我只是糊涂了?如果没有,我应该如何处理这个问题?我应该创建隐藏实体公共属性的类吗 假设我有一个用于用户的实体类,如下所示: @Entity public class User implements Serializable { private Integer id; priva

我看到很多实例,其中实体对象在会话bean方法中返回或传递。但是会话bean的远程接口的概念让我认为这是一种糟糕的做法,因为实体可能持有私有数据。对会话bean进行远程调用的客户端不应该能够访问所有数据。我只是糊涂了?如果没有,我应该如何处理这个问题?我应该创建隐藏实体公共属性的类吗

假设我有一个用于用户的实体类,如下所示:

@Entity
public class User implements Serializable {

    private Integer id;
    private String username;
    private String email;
    private String password;
    ...
}
对于使用java客户端通过会话bean访问该实体的访问者,我只希望id用户名对他们可见。经过身份验证的用户应该能够访问除密码以外的所有属性。拥有这样的会话bean不是不安全的:

@Stateless
public class UserManager {
      public User getUserById(Integer id) {
            ...
      }
      public List<User> findUsers(String searchKey) {
            ...
      }

}
@无状态
公共类用户管理器{
公共用户getUserById(整数id){
...
}
公共列表查找器(字符串搜索键){
...
}
}

如何遇到这样的安全问题?

如果会话bean是远程的,并且不受信任的客户端被允许访问它,那么是的,这是一个安全(或隐私)问题。但是大多数时候,会话bean不是远程的,即使它们是远程的,不受信任的客户端也无法访问它们。好的,谢谢,这就解决了问题。javaee中是否有某种机制,在使用远程时只允许来自受信任客户端的连接?或者它是应该在bean中实现的东西?这是应该在网络基础设施级别实现的东西。局域网中的机器不应暴露于外部世界。