我正在尝试使用SimpleToken准备一个安全的Infinispan集群,如JGroup所述。虽然我提供了所需的配置,但即使新节点具有不同的'auth_value'值,它们也能够加入群集。
以下是我对第一个节点的配置:
<config xmlns="urn:org:jgroups"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.6.xsd">
....
....
<AUTH auth_class="org.jgroups.auth.SimpleToken" auth_value="cluster1"/>
</config>
对于第二个节点,我使用相同的配置和不同的auth_value:
<AUTH auth_class="org.jgroups.auth.SimpleToken" auth_value="cluster2"/>
答案 0 :(得分:1)
JGroup xml文件中的配置节点顺序很重要。基于一个RedHat支持团队here
对于非对称加密(不需要共享密钥库): 1)配置jgroups子系统:
- 应在NAKACK之前立即配置ASYM_ENCRYPT,AUTH应紧接在GMS之前。
- 请注意,此处显示的上下文其他协议会略有不同,具体取决于JGroups版本。
醇>
这意味着我的JGroup文件应如下所示:
<AUTH auth_class="org.jgroups.auth.SimpleToken" auth_value="cluster1"/>
<pbcast.GMS print_local_addr="false"join_timeout="15000"/>
现在,当我启动第二个具有auth_value =“cluster2”的节点时,我收到以下警告和错误:
节点1:
[WARN] AUTH: failed to validate AuthHeader token from xxxx, token: auth_value=cluster1
节点2:
引起:java.lang.SecurityException:身份验证失败 在org.jgroups.protocols.pbcast.ClientGmsImpl.isJoinResponseValid(ClientGmsImpl.java:188) 在
答案 1 :(得分:0)
请注意,最新版本的ASYM_ENCRYPT不再需要AUTH;如果您使用基于证书的密钥交换,例如SSL_KEY_EXCHANGE。详情请见[1]。
之前的答案是正确的:协议的顺序很重要。