首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HQ119031:无法验证用户: null

HQ119031:无法验证用户: null
EN

Stack Overflow用户
提问于 2014-10-17 07:59:46
回答 2查看 7.7K关注 0票数 5

错误HQ224018:创建会话失败: HornetQExceptionerrorType=SECURITY_EXCEPTION message=HQ119031:无法验证用户: null

当JBossEAP6.3服务器即将接收JMS消息时。我已经通过remoting子系统成功地对用户进行了身份验证,那么为什么用户是null呢?如何克服这个错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-17 07:59:46

EAP文档将您预订到:

(...)将allowClientLogin设置为true (.)如果希望HornetQ使用传播的安全性进行身份验证,那么也可以将authoriseOnClientLogin设置为true。

但是由于HORNETQ-883 bug,您必须关闭消息传递的安全性:

代码语言:javascript
运行
复制
<hornetq-server>
  <!-- … -->
  <security-enabled>false</security-enabled>
  <!-- … -->
</hornetq-server>
票数 12
EN

Stack Overflow用户

发布于 2017-07-27 19:04:20

简而言之,如果客户机从JEE容器中连接,并且不需要提供连接到的凭据(当调用factory.createConnection()时),则使用InVM连接器获取连接。JMS在打开到InVM的连接时不需要凭据(因为调用者在JVM实例中,因此具有名称),但仍然为远程JMS客户端提供安全性。连接器和ConnectionFactories配置在standalone.xmlurn:jboss:domain:messaging子系统中。

否则,如果不使用启用安全性的InVM连接器,则可能需要在[jboss-home]/bin中运行add-user脚本,以便将客户端凭据添加到appilcation-users.properties文件,并在通过远程可用工厂连接的远程和InVM客户端调用factory.createConnection(username, pwd)时提供这些凭据。

血淋淋的细节

在我们的JBoss EAP6.4实例中,远程连接(JVM之外)需要保持安全,以便适当地指定<security-settings> for HornetQ。因此,JMS指示使用它配置连接器的安全性级别。

代码语言:javascript
运行
复制
<hornetq-server>
  <connectors>
    <!-- additional connectors here -->
    ...
    <in-vm-connector name="in-vm" server-id="0"/>
  </connectors>
  <jms-connection-factories>
    <connection-factory name="InVmConnectionFactory">
      <connectors>
        <connector-ref connector-name="in-vm"/>
      </connectors>
      <entries>
        <!-- JNDI bindings here -->
        <entry name="java:/ConnectionFactory" />
      </entries>
    </connection-factory>
    ...
  </jms-connection-factories>

因此,在JMS客户机中应用标准连接锅炉板:

代码语言:javascript
运行
复制
InitialContext context = new InitialContext();
javax.jms.ConnectionFactory factory = (ConnectionFactory) context.lookup("java:/ConnectionFactory");

在创建连接时:

代码语言:javascript
运行
复制
javax.jms.Connection connection = factory.createConnection();

事务JMS

对于连接到JMS的容器中的事务连接,我们的InVM ConnectionFactory配置如下:

代码语言:javascript
运行
复制
<jms-connection-factories>
  ...
  <pooled-connection-factory name="hornetq-ra">
    <transaction mode="xa"/>
    <connectors>
      <connector-ref connector-name="in-vm"/>
    </connectors>
    <entries>
      <entry name="java:/JmsXA"/>
    </entries>
  </pooled-connection-factory>
</jms-connection-factories>

获取事务处理的JMS ConnectionFactory,如下所示:

代码语言:javascript
运行
复制
InitialContext context = new InitialContext();
javax.jms.ConnectionFactory factory = (ConnectionFactory) context.lookup("java:/JmsXA");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26420490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档