客户端之间的JMS/MQ机密性

客户端之间的JMS/MQ机密性,jms,activemq,privacy,confidentiality,Jms,Activemq,Privacy,Confidentiality,我正在设计一个系统,其中一台服务器必须向许多独立的客户端发送消息。客户不了解彼此,不应该能够消费、偷看或以任何其他方式获取关于彼此的信息 因此,我想知道JMS/ActiveMq是否能够控制哪些客户机获得哪些消息 我希望所有客户机都连接到同一个JSM提供程序(“目的地”),并且只使用针对它们的消息。从服务器的角度来看,这将是一个简单的设置 另一种方法是从所有客户端获取webservice端点,并在服务器每次收到客户端消息时执行ws调用。我认为这个替代方案听起来“错误”,因为我认为ws调用过于臃肿。

我正在设计一个系统,其中一台服务器必须向许多独立的客户端发送消息。客户不了解彼此,不应该能够消费、偷看或以任何其他方式获取关于彼此的信息

因此,我想知道JMS/ActiveMq是否能够控制哪些客户机获得哪些消息

我希望所有客户机都连接到同一个JSM提供程序(“目的地”),并且只使用针对它们的消息。从服务器的角度来看,这将是一个简单的设置

另一种方法是从所有客户端获取webservice端点,并在服务器每次收到客户端消息时执行ws调用。我认为这个替代方案听起来“错误”,因为我认为ws调用过于臃肿。每个ws-call都有很大的开销,这个服务器每天必须进行1000次调用。在我看来,这将是次优的服务器

简短回答:使用

详细答复: 这个问题没有提到对话是如何开始的。这是我对这两种情况的回答

a)如果客户端发起对话(即客户端向服务器发送消息并等待回复)

这是一个请求/应答场景。消息传递/JMS是一个解耦的通信系统。但这是JMS中的常见模式。它可以使用相关模式来实现

  • 请求消息的一部分发送一个唯一标识符(相关id)
  • 服务器接收消息并在回复消息中设置相关id
  • 客户端使用消息选择器接收具有正确关联id的消息
b)如果服务器启动对话(即服务器向客户端发送消息,而无需客户端请求)

在这种情况下,可以使用类似的方法

  • 为每个客户机分配一个固定的客户机id
  • 服务器维护所有客户端id,并将收件人的客户端id设置为邮件的关联id
  • 客户端使用消息选择器接收相关id等于其客户端id的消息
关于保密性的更新。

以下从中提取的信息有助于您理解

JMS不指定安全性 用于控制的合同或API 消息的机密性和完整性。 安全被认为是一个重要问题 JMS提供程序特定的功能。它是 由系统管理员控制 而不是实施 通过编程或J2EE服务器 运行时

JMS安全性的两个主要特性是身份验证和授权。据我所知,用于客户端访问的JMS安全性关注于保护JMS目的地(而不是单个消息)。只要客户机可以访问目标,分配给客户机的安全角色就适用于属于该目标的所有消息

基于此,

解决方案1:如果客户端代码由受信任方控制

按照我原始答案中的解决方案进行操作。 这将确保信息传递给正确的人。但如果故意修改客户端代码以接收所有消息,则不会保护任何内容

解决方案2:为每个客户端分配私有目的地和用户帐户,并配置安全性,以便客户端的用户帐户只能访问其目的地

注意:找到了关于的链接。但我认为这是一个特定于供应商的定制功能

希望这会有所帮助。

简短回答:使用

详细答复: 这个问题没有提到对话是如何开始的。这是我对这两种情况的回答

a)如果客户端发起对话(即客户端向服务器发送消息并等待回复)

这是一个请求/应答场景。消息传递/JMS是一个解耦的通信系统。但这是JMS中的常见模式。它可以使用相关模式来实现

  • 请求消息的一部分发送一个唯一标识符(相关id)
  • 服务器接收消息并在回复消息中设置相关id
  • 客户端使用消息选择器接收具有正确关联id的消息
b)如果服务器启动对话(即服务器向客户端发送消息,而无需客户端请求)

在这种情况下,可以使用类似的方法

  • 为每个客户机分配一个固定的客户机id
  • 服务器维护所有客户端id,并将收件人的客户端id设置为邮件的关联id
  • 客户端使用消息选择器接收相关id等于其客户端id的消息
关于保密性的更新。

以下从中提取的信息有助于您理解

JMS不指定安全性 用于控制的合同或API 消息的机密性和完整性。 安全被认为是一个重要问题 JMS提供程序特定的功能。它是 由系统管理员控制 而不是实施 通过编程或J2EE服务器 运行时

JMS安全性的两个主要特性是身份验证和授权。据我所知,用于客户端访问的JMS安全性关注于保护JMS目的地(而不是单个消息)。只要客户机可以访问目标,分配给客户机的安全角色就适用于属于该目标的所有消息

基于此,

解决方案1:如果客户端代码由受信任方控制

按照我原始答案中的解决方案进行操作。 这将确保信息传递给正确的人。但如果故意修改客户端代码以接收所有消息,则不会保护任何内容

解决方案2:为每个客户端分配私有目的地和用户帐户,并配置安全性,以便