【问题标题】:JNDI lookup on remote JBoss server using authenticated user on another JBoss server使用另一个 JBoss 服务器上的已验证用户在远程 JBoss 服务器上查找 JNDI
【发布时间】:2020-01-21 02:49:46
【问题描述】:

我正在开发一个简单的 JMS 队列管理 Web 应用程序,该应用程序正在从 WebLogic 迁移到 JBoss EAP 7.1。该应用程序用于搜索/删除/移动各种队列上的消息。以前,管理应用程序和它管理的队列(我称之为“队列服务器”)都在同一个 WebLogic 服务器上。现在,管理应用程序和队列服务器将位于不同的容器中,每个容器都在 JBoss 服务器中运行。管理应用程序和队列服务器均使用 LDAPExtended 登录模块进行保护。

管理应用程序获取对队列服务器的 InitialContext 的引用,并使用 JNDI 获取 QueueConnectionFactory,使用以下(编辑的)代码:

Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
env.put(Context.PROVIDER_URL, "remote://pams-pams-dev.ocpdev.aipo.gov.au:30746");
env.put(Context.URL_PKG_PREFIXES, "org.jboss.as.naming.interfaces");
env.put(Context.SECURITY_PRINCIPAL, "username");
env.put(Context.SECURITY_CREDENTIALS, "password");
InitialContext context = new InitialContext(env);
QueueConnectionFactory connectionFactory = (QueueConnectionFactory) context.lookup("ConnectionFactory");

已登录用户在 SessionContext 的管理应用程序中可用,但我不知道如何将用户详细信息传递给队列服务器。这可能吗,还是我需要其他一些方法来设置它?

【问题讨论】:

    标签: java jboss jms jndi


    【解决方案1】:

    据我所知,您无法将用户凭据从 SessionContext 传递(隐式或以其他方式)到 InitialContext 以进行 JNDI 查找。此外,即使您可以将凭据传递给InitialContext,您仍然可能需要将它们传递给您查找的javax.jms.QueueConnectionFactory 上的createConnection 方法(因为JNDI 和JMS 安全性相互独立)和我也不相信这是可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-05
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多