Re: [jgroups-users] last v3 -> v4 question: authentication
Questions/problems related to using JGroups <[email protected]> Thu, 9 Nov 2017 06:53:07 +0100
| Newsgroups | gmane.comp.java.javagroups.general |
|---|---|
| Message-ID | <mailman.27361.1510206799.12767.javagroups-users@lists.sourceforge.net> |
Use 4.0.8, you may have run into [1]
[1] https://issues.jboss.org/browse/JGRP-2227
On 08/11/17 22:08, Questions/problems related to using JGroups wrote:
> Hi again,
>
> Everything is working for me now except authentication. With v3, a node
> would try to join and my token.authenticate() method would be called on
> the coordinator only. If that returned true, great, if not, the new
> node's jChannel.connect() method would get an Exception wrapped around a
> SecurityException.
>
> Am now trying the same thing with v4, and I see token.authenticate()
> called on both the coordinator *and* the new node, and I can't find any
> documentation to say that's now the proper case. In my success case, it
> returns true for coordinator and false for the new node (because it
> hasn't joined the cluster yet and doesn't have the info it needs to do
> this). After a pause I see authenticate() called on the coordinator
> again 11 times, returning true each time.
>
> On the new node, it returns false 10 times, forms its own 1-node
> cluster, then the 2 nodes merge again and this time both accept each
> other. The authenticate method is still called several times.
>
> In the negative case -- both nodes return false from authenticate -- I
> see authenticate() called a bunch again and get two 1-node clusters.
> After a pause they go through it all again, etc, never stopping. The new
> node never stops trying to connect.
>
> Msgs on coordinator:
> 11/8/17 3:58:40 PM org.jgroups.protocols.AUTH handleAuthHeader WARNING:
> localhost-58518: failed to validate AuthHeader (token:
> DynamicMembershipToken) from localhost-57655; dropping message and
> sending rejection message
> 11/8/17 3:58:40 PM <my auth method returns false>
>
> On new node:
> 11/8/17 3:58:40 PM org.jgroups.protocols.pbcast.ClientGmsImpl
> joinInternal WARNING: localhost-57655: JOIN(localhost-57655) sent to
> localhost-58518 timed out (after 3000 ms), on try 6
> 11/8/17 3:58:40 PM <my auth method returns false>
> 11/8/17 3:58:40 PM org.jgroups.protocols.AUTH handleAuthHeader WARNING:
> localhost-57655: failed to validate AuthHeader (token:
> DynamicMembershipToken) from localhost-58518; dropping message and
> sending rejection message
>
> How can I get back to the original behavior: only the coordinator
> authenticates, and it only happens once and the new node does not
> connect to the channel?
>
> Trying to make this short, but here's my protocol stack:
>
> Protocol[] stack = {
> new TCP()
> .setValue("bind_addr",
> InetAddress.getByName(getBindingAddress()))
> .setValue("bind_port", bindingPort)
> .setValue("thread_pool_min_threads", 1)
> .setValue("thread_pool_keep_alive_time", 5000)
> .setValue("send_buf_size", 640000)
> .setValue("sock_conn_timeout", 300)
> .setValue("recv_buf_size", 5000000),
> new TCPPING()
> .setValue("initial_hosts", parseHostList())
> .setValue("send_cache_on_join", true)
> .setValue("port_range", 0),
> new MERGE3()
> .setValue("min_interval", 10000)
> .setValue("max_interval", 30000),
> new FD_ALL()
> .setValue("timeout", getJGroupsTotalTimeout() * 1000L),
> new VERIFY_SUSPECT()
> .setValue("timeout", 1500),
> new BARRIER(),
> new NAKACK2()
> .setValue("use_mcast_xmit", false),
> new UNICAST3(),
> new STABLE()
> .setValue("desired_avg_gossip", 50000)
> .setValue("max_bytes", 4000000),
> createAuthProtocol(<some ob>),
> new GMS()
> .setValue("join_timeout", 3000),
> new MFC()
> .setValue("max_credits", 2000000)
> .setValue("min_credits", 800000),
> new FRAG2(),
> new STATE_TRANSFER()};
>
> Auth protocol method:
>
> private Protocol createAuthProtocol(<some ob>) throws
> UnknownHostException {
> DynamicMembershipToken dmt = new DynamicMembershipToken();
> dmt.setFixedMembersSeparator(AUTH_SEP);
> dmt.setMemberList(""); // will be overwritten
>
> AUTH auth = new AUTH();
> auth.setAuthToken(dmt);
> dmt.setAuth(auth);
> dmt.setNode(<some ob>);
> return auth;
> }
>
> And DynamicMembershipToken simply extends FixedMembershipToken. When
> authenticate() is called, it creates the proper list of allowed
> addresses and does (simplified):
>
> setMemberList(sb.toString()); <-- in superclass
> return super.authenticate(token, msg);
>
> Thanks again,
> Bobby
>
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>
>
>
> _______________________________________________
> javagroups-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/javagroups-users
>
--
Bela Ban | http://www.jgroups.org
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
javagroups-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/javagroups-users