public Object down(Message msg) { GmsHeader hdr =msg.getHeader(GMS_ID); Address remoteAddress = msg.getDest(); if (needsAuthentication(hdr, remoteAddress)) { // We are a client who needs to authenticate SaslClientContext ctx = null; try { ctx = new SaslClientContext(saslClientFactory, mech, server_name != null ? server_name : remoteAddress.toString(), client_callback_handler, sasl_props, client_subject); sasl_context.put(remoteAddress, ctx); ctx.addHeader(msg, null); } catch (Exception e) { if (ctx != null) { disposeContext(remoteAddress); } throw new SecurityException(e); } } return down_prot.down(msg); }
@Override public void up(MessageBatch batch) { for (Message msg : batch) { // If we have a join or merge request --> authenticate, else pass up GmsHeader gmsHeader =msg.getHeader(GMS_ID); Address remoteAddress = msg.getSrc(); if (needsAuthentication(gmsHeader, remoteAddress)) { SaslHeader saslHeader =msg.getHeader(id); if (saslHeader == null) { log.warn("Found GMS join or merge request but no SASL header"); sendRejectionMessage(gmsHeader.getType(), batch.sender(), "join or merge without an SASL header"); batch.remove(msg); } else if (!serverChallenge(gmsHeader, saslHeader, msg)) // authentication failed batch.remove(msg); // don't pass up } } if (!batch.isEmpty()) up_prot.up(batch); }
GmsHeader gmsHeader =msg.getHeader(GMS_ID); Address remoteAddress = msg.getSrc(); if (needsAuthentication(gmsHeader, remoteAddress)) { if (saslHeader == null) throw new IllegalStateException("Found GMS join or merge request but no SASL header");
public Object down(Message msg) { GmsHeader hdr =msg.getHeader(GMS_ID); Address remoteAddress = msg.getDest(); if (needsAuthentication(hdr, remoteAddress)) { // We are a client who needs to authenticate SaslClientContext ctx = null; try { ctx = new SaslClientContext(saslClientFactory, mech, server_name != null ? server_name : remoteAddress.toString(), client_callback_handler, sasl_props, client_subject); sasl_context.put(remoteAddress, ctx); ctx.addHeader(msg, null); } catch (Exception e) { if (ctx != null) { disposeContext(remoteAddress); } throw new SecurityException(e); } } return down_prot.down(msg); }
@Override public void up(MessageBatch batch) { for (Message msg : batch) { // If we have a join or merge request --> authenticate, else pass up GmsHeader gmsHeader =msg.getHeader(GMS_ID); Address remoteAddress = msg.getSrc(); if (needsAuthentication(gmsHeader, remoteAddress)) { SaslHeader saslHeader =msg.getHeader(id); if (saslHeader == null) { log.warn("Found GMS join or merge request but no SASL header"); sendRejectionMessage(gmsHeader.getType(), batch.sender(), "join or merge without an SASL header"); batch.remove(msg); } else if (!serverChallenge(gmsHeader, saslHeader, msg)) // authentication failed batch.remove(msg); // don't pass up } } if (!batch.isEmpty()) up_prot.up(batch); }
GmsHeader gmsHeader =msg.getHeader(GMS_ID); Address remoteAddress = msg.getSrc(); if (needsAuthentication(gmsHeader, remoteAddress)) { if (saslHeader == null) throw new IllegalStateException("Found GMS join or merge request but no SASL header");