java - 在 ejb 方法中访问客户端主体

标签 java security ejb-3.0

我需要在 ejb 方法中访问客户端主体(用户名)。我不想将它添加为参数。尝试将它们添加到 Context 对象中;

prop.add(Context.SECURITY_AUTHENTICATION,"user")
prop.add(Context.SECURITY_CREDENTIALS,"pass")

但尝试在方法内部访问它们; @资源 私有(private) SessionContext ctx;

public void someMethod() {
    Principal principal = ctx.getCallerPrincipal();
    //returns anonymous

仍然给我讨厌的用户。

在 weblogic 上工作,有什么建议吗?

谢谢

最佳答案

类似问题...我正在使用客户端证书和自定义 UserNameMapper 进行测试。我的 UserNameMapper 返回“steve”,但 EJB 中的主体返回 "<anonymous>"直到我通过控制台添加了一个“steve”用户。

Environment env = new Environment();
env.setInitialContextFactory(Environment.DEFAULT_INITIAL_CONTEXT_FACTORY);
//  env.setSecurityPrincipal("user");
//  env.setSecurityCredentials("pass");
env.setProviderUrl("t3s://localhost:7002");

InputStream key = new PEMInputStream(new FileInputStream(CERT_KEYFILE));
InputStream cert = new PEMInputStream(new FileInputStream(CERT_CERTFILE));
env.setSSLClientCertificate(new InputStream[] {key, cert});
env.setSSLClientKeyPassword(CERT_KEYPASSWORD);

将 JAAS 客户端与 UsernamePasswordLoginModule 一起使用时出现同样的问题。通过在 PrivilegedAction 的 InitialContext 查找中设置用户名/密码来修复。 EJB 引用后者作为主体,因为它可以是不同的用户名/密码。

关于java - 在 ejb 方法中访问客户端主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2363716/

相关文章:

java - 如何将文件加载到 session bean 中

java - 无法在 Jboss 6 上部署 Maven jar (MDB)

java - 使用 SQLite 数据库时我的 Activity 无法打开

Java:当该字段未公开时,如何模拟该字段的方法?

java - 使用 TabPanel 中的按钮更改选项卡

java - 同一台机器上的应用程序之间最安全的通信方法

security - 我在 Mac 上的哪里保存我的 amazon .pem 文件

iphone - 将密码存储在 NSString 中而不在内存中可读

java - 当我从第一类运行脚本测试用例运行两次时,我总共有 3 个测试用例,其中 2 个测试用例在父类中,1 个在子类中

java - 为什么以及何时使用基于 EJB 的 Web 服务?