public void initiateSASL() { SaslMechanisms mechanisms = new SaslMechanisms(); final Enumeration<SaslServerFactory> saslServerFactories = Sasl.getSaslServerFactories(); SaslServerFactory f; ArrayList<Symbol> mechanismsList = new ArrayList<Symbol>(); while (saslServerFactories.hasMoreElements()) { f = saslServerFactories.nextElement(); final String[] mechanismNames = f.getMechanismNames(null); for (String name : mechanismNames) { mechanismsList.add(Symbol.valueOf(name)); } } mechanisms.setSaslServerMechanisms(mechanismsList.toArray(new Symbol[mechanismsList.size()])); _saslFrameOutput.send(new SASLFrame(mechanisms), null); }
public void receiveSaslMechanisms(final SaslMechanisms saslMechanisms) { if (Arrays.asList(saslMechanisms.getSaslServerMechanisms()).contains(Symbol.valueOf("PLAIN"))) { SaslInit init = new SaslInit(); init.setMechanism(Symbol.valueOf("PLAIN")); init.setHostname(_remoteHostname); byte[] usernameBytes = _user.getName().getBytes(Charset.forName("UTF-8")); byte[] passwordBytes = _password.getBytes(Charset.forName("UTF-8")); byte[] initResponse = new byte[usernameBytes.length + passwordBytes.length + 2]; System.arraycopy(usernameBytes, 0, initResponse, 1, usernameBytes.length); System.arraycopy( passwordBytes, 0, initResponse, usernameBytes.length + 2, passwordBytes.length); init.setInitialResponse(new Binary(initResponse)); _saslFrameOutput.send(new SASLFrame(init), null); } }