Java 类javax.security.sasl.SaslException 实例源码

项目:hadoop-oss    文件:Server.java   
private void saslReadAndProcess(DataInputStream dis) throws
WrappedRpcServerException, IOException, InterruptedException {
  final RpcSaslProto saslMessage =
      decodeProtobufFromStream(RpcSaslProto.newBuilder(), dis);
  switch (saslMessage.getState()) {
    case WRAP: {
      if (!saslContextEstablished || !useWrap) {
        throw new WrappedRpcServerException(
            RpcErrorCodeProto.FATAL_INVALID_RPC_HEADER,
            new SaslException("Server is not wrapping data"));
      }
      // loops over decoded data and calls processOneRpc
      unwrapPacketAndProcessRpcs(saslMessage.getToken().toByteArray());
      break;
    }
    default:
      saslProcess(saslMessage);
  }
}
项目:hadoop-oss    文件:SaslRpcClient.java   
/**
 * Evaluate the server provided challenge.  The server must send a token
 * if it's not done.  If the server is done, the challenge token is
 * optional because not all mechanisms send a final token for the client to
 * update its internal state.  The client must also be done after
 * evaluating the optional token to ensure a malicious server doesn't
 * prematurely end the negotiation with a phony success.
 *  
 * @param saslResponse - client response to challenge
 * @param serverIsDone - server negotiation state
 * @throws SaslException - any problems with negotiation
 */
private byte[] saslEvaluateToken(RpcSaslProto saslResponse,
    boolean serverIsDone) throws SaslException {
  byte[] saslToken = null;
  if (saslResponse.hasToken()) {
    saslToken = saslResponse.getToken().toByteArray();
    saslToken = saslClient.evaluateChallenge(saslToken);
  } else if (!serverIsDone) {
    // the server may only omit a token when it's done
    throw new SaslException("Server challenge contains no token");
  }
  if (serverIsDone) {
    // server tried to report success before our client completed
    if (!saslClient.isComplete()) {
      throw new SaslException("Client is out of sync with server");
    }
    // a client cannot generate a response to a success message
    if (saslToken != null) {
      throw new SaslException("Client generated spurious response");        
    }
  }
  return saslToken;
}
项目:hadoop-oss    文件:Server.java   
/**
 * Process the Sasl's Negotiate request, including the optimization of 
 * accelerating token negotiation.
 * @return the response to Negotiate request - the list of enabled 
 *         authMethods and challenge if the TOKENS are supported. 
 * @throws SaslException - if attempt to generate challenge fails.
 * @throws IOException - if it fails to create the SASL server for Tokens
 */
private RpcSaslProto buildSaslNegotiateResponse()
    throws InterruptedException, SaslException, IOException {
  RpcSaslProto negotiateMessage = negotiateResponse;
  // accelerate token negotiation by sending initial challenge
  // in the negotiation response
  if (enabledAuthMethods.contains(AuthMethod.TOKEN)) {
    saslServer = createSaslServer(AuthMethod.TOKEN);
    byte[] challenge = saslServer.evaluateResponse(new byte[0]);
    RpcSaslProto.Builder negotiateBuilder =
        RpcSaslProto.newBuilder(negotiateResponse);
    negotiateBuilder.getAuthsBuilder(0)  // TOKEN is always first
        .setChallenge(ByteString.copyFrom(challenge));
    negotiateMessage = negotiateBuilder.build();
  }
  sentNegotiate = true;
  return negotiateMessage;
}
项目:ZooKeeper    文件:QuorumPeer.java   
public void initialize() throws SaslException {
    // init quorum auth server & learner
    if (isQuorumSaslAuthEnabled()) {
        Set<String> authzHosts = new HashSet<String>();
        for (QuorumServer qs : getView().values()) {
            authzHosts.add(qs.hostname);
        }
        authServer = new SaslQuorumAuthServer(isQuorumServerSaslAuthRequired(),
                quorumServerLoginContext, authzHosts);
        authLearner = new SaslQuorumAuthLearner(isQuorumLearnerSaslAuthRequired(),
                quorumServicePrincipal, quorumLearnerLoginContext);
        authInitialized = true;
    } else {
        authServer = new NullQuorumAuthServer();
        authLearner = new NullQuorumAuthLearner();
    }
}
项目:fuck_zookeeper    文件:ZooKeeperSaslClient.java   
private void sendSaslPacket(byte[] saslToken, ClientCnxn cnxn)
  throws SaslException{
    if (LOG.isDebugEnabled()) {
        LOG.debug("ClientCnxn:sendSaslPacket:length="+saslToken.length);
    }

    GetSASLRequest request = new GetSASLRequest();
    request.setToken(saslToken);
    SetSASLResponse response = new SetSASLResponse();
    ServerSaslResponseCallback cb = new ServerSaslResponseCallback();

    try {
        cnxn.sendPacket(request,response,cb, ZooDefs.OpCode.sasl);
    } catch (IOException e) {
        throw new SaslException("Failed to send SASL packet to server.",
            e);
    }
}
项目:kafka-0.11.0.0-src-with-comment    文件:ScramSaslClient.java   
@Override
public SaslClient createSaslClient(String[] mechanisms,
        String authorizationId,
        String protocol,
        String serverName,
        Map<String, ?> props,
        CallbackHandler cbh) throws SaslException {

    ScramMechanism mechanism = null;
    for (String mech : mechanisms) {
        mechanism = ScramMechanism.forMechanismName(mech);
        if (mechanism != null)
            break;
    }
    if (mechanism == null)
        throw new SaslException(String.format("Requested mechanisms '%s' not supported. Supported mechanisms are '%s'.",
                Arrays.asList(mechanisms), ScramMechanism.mechanismNames()));

    try {
        return new ScramSaslClient(mechanism, cbh);
    } catch (NoSuchAlgorithmException e) {
        throw new SaslException("Hash algorithm not supported for mechanism " + mechanism, e);
    }
}
项目:ZooKeeper    文件:ZooKeeperSaslClient.java   
private void sendSaslPacket(byte[] saslToken, ClientCnxn cnxn)
  throws SaslException{
    if (LOG.isDebugEnabled()) {
        LOG.debug("ClientCnxn:sendSaslPacket:length="+saslToken.length);
    }

    GetSASLRequest request = new GetSASLRequest();
    request.setToken(saslToken);
    SetSASLResponse response = new SetSASLResponse();
    ServerSaslResponseCallback cb = new ServerSaslResponseCallback();

    try {
        cnxn.sendPacket(request,response,cb, ZooDefs.OpCode.sasl);
    } catch (IOException e) {
        throw new SaslException("Failed to send SASL packet to server.",
            e);
    }
}
项目:jdk8u-jdk    文件:ClientServerTest.java   
private void processConnection(SaslEndpoint endpoint)
        throws SaslException, IOException, ClassNotFoundException {
    System.out.println("process connection");
    endpoint.send(SUPPORT_MECHS);
    Object o = endpoint.receive();
    if (!(o instanceof String)) {
        throw new RuntimeException("Received unexpected object: " + o);
    }
    String mech = (String) o;
    SaslServer saslServer = createSaslServer(mech);
    Message msg = getMessage(endpoint.receive());
    while (!saslServer.isComplete()) {
        byte[] data = processData(msg.getData(), endpoint,
                saslServer);
        if (saslServer.isComplete()) {
            System.out.println("server is complete");
            endpoint.send(new Message(SaslStatus.SUCCESS, data));
        } else {
            System.out.println("server continues");
            endpoint.send(new Message(SaslStatus.CONTINUE, data));
            msg = getMessage(endpoint.receive());
        }
    }
}
项目:https-github.com-apache-zookeeper    文件:ZooKeeperSaslClient.java   
private void sendSaslPacket(byte[] saslToken, ClientCnxn cnxn)
  throws SaslException{
    if (LOG.isDebugEnabled()) {
        LOG.debug("ClientCnxn:sendSaslPacket:length="+saslToken.length);
    }

    GetSASLRequest request = new GetSASLRequest();
    request.setToken(saslToken);
    SetSASLResponse response = new SetSASLResponse();
    ServerSaslResponseCallback cb = new ServerSaslResponseCallback();

    try {
        cnxn.sendPacket(request,response,cb, ZooDefs.OpCode.sasl);
    } catch (IOException e) {
        throw new SaslException("Failed to send SASL packet to server.",
            e);
    }
}
项目:ZooKeeper    文件:SaslQuorumAuthServer.java   
public SaslQuorumAuthServer(boolean quorumRequireSasl, String loginContext, Set<String> authzHosts)
        throws SaslException {
    this.quorumRequireSasl = quorumRequireSasl;
    try {
        AppConfigurationEntry entries[] = Configuration.getConfiguration()
                .getAppConfigurationEntry(loginContext);
        if (entries == null || entries.length == 0) {
            throw new LoginException("SASL-authentication failed"
                    + " because the specified JAAS configuration "
                    + "section '" + loginContext + "' could not be found.");
        }
        SaslQuorumServerCallbackHandler saslServerCallbackHandler = new SaslQuorumServerCallbackHandler(
                Configuration.getConfiguration(), loginContext, authzHosts);
        serverLogin = new Login(loginContext, saslServerCallbackHandler);
        serverLogin.startThreadIfNeeded();
    } catch (Throwable e) {
        throw new SaslException(
                "Failed to initialize authentication mechanism using SASL",
                e);
    }
}
项目:OpenJSharp    文件:SaslInputStream.java   
SaslInputStream(SaslClient sc, InputStream in) throws SaslException {
    super();
    this.in = in;
    this.sc = sc;

    String str = (String) sc.getNegotiatedProperty(Sasl.MAX_BUFFER);
    if (str != null) {
        try {
            recvMaxBufSize = Integer.parseInt(str);
        } catch (NumberFormatException e) {
            throw new SaslException(Sasl.MAX_BUFFER +
                " property must be numeric string: " + str);
        }
    }
    saslBuffer = new byte[recvMaxBufSize];
}
项目:hadoop    文件:SaslRpcClient.java   
/**
 * Evaluate the server provided challenge.  The server must send a token
 * if it's not done.  If the server is done, the challenge token is
 * optional because not all mechanisms send a final token for the client to
 * update its internal state.  The client must also be done after
 * evaluating the optional token to ensure a malicious server doesn't
 * prematurely end the negotiation with a phony success.
 *  
 * @param saslResponse - client response to challenge
 * @param serverIsDone - server negotiation state
 * @throws SaslException - any problems with negotiation
 */
private byte[] saslEvaluateToken(RpcSaslProto saslResponse,
    boolean serverIsDone) throws SaslException {
  byte[] saslToken = null;
  if (saslResponse.hasToken()) {
    saslToken = saslResponse.getToken().toByteArray();
    saslToken = saslClient.evaluateChallenge(saslToken);
  } else if (!serverIsDone) {
    // the server may only omit a token when it's done
    throw new SaslException("Server challenge contains no token");
  }
  if (serverIsDone) {
    // server tried to report success before our client completed
    if (!saslClient.isComplete()) {
      throw new SaslException("Client is out of sync with server");
    }
    // a client cannot generate a response to a success message
    if (saslToken != null) {
      throw new SaslException("Client generated spurious response");        
    }
  }
  return saslToken;
}
项目:ZooKeeper    文件:QuorumCnxManagerTest.java   
/**
 * SaslQuorumAuthServer throws exception on receiving an invalid quorum
 * auth packet.
 */
@Test(timeout = 30000)
public void testSaslQuorumAuthServerWithInvalidQuorumAuthPacket()
        throws Exception {
    Socket socket = getSocketPair();
    DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
    BufferedOutputStream bufferedOutput = new BufferedOutputStream(dout);
    BinaryOutputArchive boa = BinaryOutputArchive
            .getArchive(bufferedOutput);
    QuorumAuthPacket authPacket = QuorumAuth
            .createPacket(QuorumAuth.Status.IN_PROGRESS, null);
    authPacket.setMagic(Long.MAX_VALUE); // invalid magic number
    boa.writeRecord(authPacket, null);
    bufferedOutput.flush();
    QuorumAuthServer authServer = new SaslQuorumAuthServer(true,
            "QuorumServer", authzHosts);
    BufferedInputStream is = new BufferedInputStream(
            socket.getInputStream());
    try {
        authServer.authenticate(socket, new DataInputStream(is));
        Assert.fail("Must throw exception as QuorumAuthPacket is invalid");
    } catch (SaslException e) {
        // expected
    }
}
项目:ZooKeeper    文件:ZooKeeperSaslClient.java   
public void initialize(ClientCnxn cnxn) throws SaslException {
    if (saslClient == null) {
        saslState = SaslState.FAILED;
        throw new SaslException("saslClient failed to initialize properly: it's null.");
    }
    if (saslState == SaslState.INITIAL) {
        if (saslClient.hasInitialResponse()) {
            sendSaslPacket(cnxn);
        }
        else {
            byte[] emptyToken = new byte[0];
            sendSaslPacket(emptyToken, cnxn);
        }
        saslState = SaslState.INTERMEDIATE;
    }
}
项目:openjdk-jdk10    文件:CheckNegotiatedQOPs.java   
public SampleServer(String supportedQOPs) throws SaslException {

        Map<String,String> properties = new HashMap<String,String>();

        if (supportedQOPs != null) {
            properties.put(Sasl.QOP, supportedQOPs);
        }
        saslServer = Sasl.createSaslServer(DIGEST_MD5, "local", "127.0.0.1",
            properties, new SampleCallbackHandler());
    }
项目:hadoop-oss    文件:SaslRpcClient.java   
/** Release resources used by wrapped saslClient */
public void dispose() throws SaslException {
  if (saslClient != null) {
    saslClient.dispose();
    saslClient = null;
  }
}
项目:hadoop-oss    文件:SaslOutputStream.java   
/**
 * Disposes of any system resources or security-sensitive information Sasl
 * might be using.
 * 
 * @exception SaslException
 *              if a SASL error occurs.
 */
private void disposeSasl() throws SaslException {
  if (saslClient != null) {
    saslClient.dispose();
  }
  if (saslServer != null) {
    saslServer.dispose();
  }
}
项目:hadoop-oss    文件:SaslOutputStream.java   
/**
 * Writes <code>len</code> bytes from the specified byte array starting at
 * offset <code>off</code> to this output stream.
 * 
 * @param inBuf
 *          the data.
 * @param off
 *          the start offset in the data.
 * @param len
 *          the number of bytes to write.
 * @exception IOException
 *              if an I/O error occurs.
 */
@Override
public void write(byte[] inBuf, int off, int len) throws IOException {
  if (!useWrap) {
    outStream.write(inBuf, off, len);
    return;
  }
  try {
    if (saslServer != null) { // using saslServer
      saslToken = saslServer.wrap(inBuf, off, len);
    } else { // using saslClient
      saslToken = saslClient.wrap(inBuf, off, len);
    }
  } catch (SaslException se) {
    try {
      disposeSasl();
    } catch (SaslException ignored) {
    }
    throw se;
  }
  if (saslToken != null) {
    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
    DataOutputStream dout = new DataOutputStream(byteOut);
    dout.writeInt(saslToken.length);
    outStream.write(byteOut.toByteArray());
    outStream.write(saslToken, 0, saslToken.length);
    saslToken = null;
  }
}
项目:openjdk-jdk10    文件:CheckNegotiatedQOPs.java   
public void negotiate(SampleServer server) throws SaslException {

        byte[] challenge;
        byte[] response;

        response = (saslClient.hasInitialResponse () ?
                  saslClient.evaluateChallenge (new byte [0]) : new byte [0]);

        while (! saslClient.isComplete()) {
            challenge = server.evaluate(response);
            response = saslClient.evaluateChallenge(challenge);
        }
   }
项目:hadoop-oss    文件:SaslInputStream.java   
/**
 * Read more data and get them processed <br>
 * Entry condition: ostart = ofinish <br>
 * Exit condition: ostart <= ofinish <br>
 * 
 * return (ofinish-ostart) (we have this many bytes for you), 0 (no data now,
 * but could have more later), or -1 (absolutely no more data)
 */
private int readMoreData() throws IOException {
  try {
    inStream.readFully(lengthBuf);
    int length = unsignedBytesToInt(lengthBuf);
    if (LOG.isDebugEnabled())
      LOG.debug("Actual length is " + length);
    saslToken = new byte[length];
    inStream.readFully(saslToken);
  } catch (EOFException e) {
    return -1;
  }
  try {
    if (saslServer != null) { // using saslServer
      obuffer = saslServer.unwrap(saslToken, 0, saslToken.length);
    } else { // using saslClient
      obuffer = saslClient.unwrap(saslToken, 0, saslToken.length);
    }
  } catch (SaslException se) {
    try {
      disposeSasl();
    } catch (SaslException ignored) {
    }
    throw se;
  }
  ostart = 0;
  if (obuffer == null)
    ofinish = 0;
  else
    ofinish = obuffer.length;
  return ofinish;
}
项目:ZooKeeper    文件:SaslQuorumAuthLearner.java   
private void checkAuthStatus(Socket sock, QuorumAuth.Status qpStatus)
        throws SaslException {
    if (qpStatus == QuorumAuth.Status.SUCCESS) {
        LOG.info("Successfully completed the authentication using SASL. server addr: {}, status: {}",
                sock.getRemoteSocketAddress(), qpStatus);
    } else {
        throw new SaslException("Authentication failed against server addr: "
                        + sock.getRemoteSocketAddress() + ", qpStatus: "
                        + qpStatus);
    }
}
项目:jdk8u-jdk    文件:SaslInputStream.java   
public void close() throws IOException {
    SaslException save = null;
    try {
        sc.dispose(); // Dispose of SaslClient's state
    } catch (SaslException e) {
        // Save exception for throwing after closing 'in'
        save = e;
    }

    in.close();  // Close underlying input stream

    if (save != null) {
        throw save;
    }
}
项目:openjdk-jdk10    文件:CramMD5Base.java   
/**
  * Wraps the outgoing buffer. CRAM-MD5 supports no security layer.
  *
  * @throws SaslException If attempt to use this method.
  */
public byte[] wrap(byte[] outgoing, int offset, int len) throws SaslException {
    if (completed) {
        throw new IllegalStateException(
            "CRAM-MD5 supports neither integrity nor privacy");
    } else {
        throw new IllegalStateException(
            "CRAM-MD5 authentication not completed");
    }
}
项目:openjdk-jdk10    文件:CramMD5Base.java   
/**
  * Unwraps the incoming buffer. CRAM-MD5 supports no security layer.
  *
  * @throws SaslException If attempt to use this method.
  */
public byte[] unwrap(byte[] incoming, int offset, int len)
    throws SaslException {
    if (completed) {
        throw new IllegalStateException(
            "CRAM-MD5 supports neither integrity nor privacy");
    } else {
        throw new IllegalStateException(
            "CRAM-MD5 authentication not completed");
    }
}
项目:hadoop-oss    文件:Server.java   
private void disposeSasl() {
  if (saslServer != null) {
    try {
      saslServer.dispose();
    } catch (SaslException ignored) {
    }
  }
}
项目:jdk8u-jdk    文件:CheckNegotiatedQOPs.java   
public void negotiate(SampleServer server) throws SaslException {

        byte[] challenge;
        byte[] response;

        response = (saslClient.hasInitialResponse () ?
                  saslClient.evaluateChallenge (new byte [0]) : new byte [0]);

        while (! saslClient.isComplete()) {
            challenge = server.evaluate(response);
            response = saslClient.evaluateChallenge(challenge);
        }
   }
项目:kafka-0.11.0.0-src-with-comment    文件:ScramMessagesTest.java   
private <T extends AbstractScramMessage> void checkInvalidScramMessage(Class<T> clazz, String message) {
    try {
        createScramMessage(clazz, message);
        fail("Exception not throws for invalid message of type " + clazz + " : " + message);
    } catch (SaslException e) {
        // Expected exception
    }
}
项目:message-broker    文件:PlainSaslServerTest.java   
@Test(expectedExceptions = SaslException.class,
      expectedExceptionsMessageRegExp = ".*Error while authenticate user with login module.*")
public void testEvaluateInvalidPassword() throws Exception {
    plainSaslServer.evaluateResponse(new byte[] {
            (byte) 'a', (byte) 0, (byte) 'u', (byte) 's', (byte) 'e', (byte) 'r', (byte) 0, (byte) 'P', (byte) 'a',
            (byte) 's', (byte) 's'
    });
    Assert.assertEquals(plainSaslServer.isComplete(), false,
            "Sasl mechanism should not be completed for invalid " + "password.");

}
项目:message-broker    文件:PlainSaslServerTest.java   
@Test(expectedExceptions = SaslException.class,
      expectedExceptionsMessageRegExp = ".*Error while authenticate user with login module.*")
public void testInvalidCallbackHandler() throws Exception {
    final PlainSaslCallbackHandler handler = Mockito.mock(PlainSaslCallbackHandler.class);
    Mockito.doThrow(UnsupportedCallbackException.class).when(handler).handle(Mockito.any());
    plainSaslServer = new PlainSaslServer(handler);
    plainSaslServer.evaluateResponse(new byte[] {
            (byte) 'a', (byte) 0, (byte) 'u', (byte) 's', (byte) 'e', (byte) 'r', (byte) 0, (byte) 'P', (byte) 'a',
            (byte) 's', (byte) 's'
    });
    Assert.assertEquals(plainSaslServer.isComplete(), false,
            "Sasl mechanism should not be completed for invalid " + "password.");

}
项目:message-broker    文件:ConnectionStartOk.java   
@Override
public void handle(ChannelHandlerContext ctx, AmqpConnectionHandler connectionHandler) {
    ctx.fireChannelRead((BlockingTask) () -> {
        Broker broker = connectionHandler.getBroker();
        SaslServer saslServer;
        SaslServerBuilder saslServerBuilder = broker.getAuthenticationManager().getSaslMechanisms()
                .get(mechanism.toString());
        try {
            if (saslServerBuilder != null) {
                saslServer = Sasl.createSaslServer(mechanism.toString(), AmqConstant.AMQP_PROTOCOL_IDENTIFIER,
                        connectionHandler.getConfiguration().getHostName(),
                        saslServerBuilder.getProperties(), saslServerBuilder.getCallbackHandler());
                connectionHandler.setSaslServer(saslServer);
            } else {
                throw new SaslException("Server does not support for mechanism: " + mechanism);
            }
            if (saslServer != null) {
                byte[] challenge = saslServer.evaluateResponse(response.getBytes());
                if (saslServer.isComplete()) {
                    ctx.writeAndFlush(new ConnectionTune(256, 65535, 0));
                } else {
                    ctx.writeAndFlush(new ConnectionSecure(getChannel(), LongString.parse(challenge)));
                }
            } else {
                throw new SaslException("Sasl server cannot be found for mechanism: " + mechanism);
            }
        } catch (SaslException e) {
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("Exception occurred while authenticating incoming connection ", e);
            }
            String replyText = "Authentication Failed";
            ctx.writeAndFlush(new ConnectionClose(403, ShortString.parseString(replyText), 10, 11));
        }
    });
}
项目:openjdk-jdk10    文件:SaslOutputStream.java   
public void close() throws IOException {
    SaslException save = null;
    try {
        sc.dispose();  // Dispose of SaslClient's state
    } catch (SaslException e) {
        // Save exception for throwing after closing 'in'
        save = e;
    }
    super.close();  // Close underlying output stream

    if (save != null) {
        throw save;
    }
}
项目:jdk8u-jdk    文件:CheckNegotiatedQOPs.java   
public SampleClient(String requestedQOPs) throws SaslException {

        Map<String,String> properties = new HashMap<String,String>();

        if (requestedQOPs != null) {
            properties.put(Sasl.QOP, requestedQOPs);
        }
        saslClient = Sasl.createSaslClient(new String[]{ DIGEST_MD5 }, null,
            "local", "127.0.0.1", properties, new SampleCallbackHandler());
    }
项目:fuck_zookeeper    文件:ZooKeeperSaslClient.java   
private void sendSaslPacket(ClientCnxn cnxn) throws SaslException {
    if (LOG.isDebugEnabled()) {
        LOG.debug("ClientCnxn:sendSaslPacket:length="+saslToken.length);
    }
    GetSASLRequest request = new GetSASLRequest();
    request.setToken(createSaslToken());
    SetSASLResponse response = new SetSASLResponse();
    ServerSaslResponseCallback cb = new ServerSaslResponseCallback();
    try {
        cnxn.sendPacket(request,response,cb, ZooDefs.OpCode.sasl);
    } catch (IOException e) {
        throw new SaslException("Failed to send SASL packet to server due " +
          "to IOException:", e);
    }
}
项目:hadoop    文件:Server.java   
private void disposeSasl() {
  if (saslServer != null) {
    try {
      saslServer.dispose();
    } catch (SaslException ignored) {
    }
  }
}
项目:mongosql-auth-java    文件:Gssapi.java   
static SaslClient createSaslClient(final String user, final String hostName) throws SaslException {
    Map<String, Object> saslClientProperties = new HashMap<String, Object>();
    saslClientProperties.put(Sasl.MAX_BUFFER, "0");
    saslClientProperties.put(Sasl.CREDENTIALS, getGSSCredential(user));

    return Sasl.createSaslClient(new String[]{"GSSAPI"}, user, SERVICE_NAME_DEFAULT_VALUE, hostName, saslClientProperties, null);
}
项目:mongosql-auth-java    文件:Gssapi.java   
private static GSSCredential getGSSCredential(final String userName) throws SaslException {
    try {
        Oid krb5Mechanism = new Oid(GSSAPI_OID);
        GSSManager manager = GSSManager.getInstance();
        GSSName name = manager.createName(userName, GSSName.NT_USER_NAME);
        return manager.createCredential(name, GSSCredential.INDEFINITE_LIFETIME, krb5Mechanism, GSSCredential.INITIATE_ONLY);
    } catch (GSSException e) {
        throw new SaslException("Unable to create GSSAPI credential", e);
    }
}
项目:openjdk-jdk10    文件:CheckNegotiatedQOPs.java   
private CheckNegotiatedQOPs(int caseNumber, String requestedQOPs,
    String supportedQOPs) throws SaslException {

  this.caseNumber = caseNumber;
  this.requestedQOPs = requestedQOPs;
  this.supportedQOPs = supportedQOPs;
  this.client = new SampleClient(requestedQOPs);
  this.server = new SampleServer(supportedQOPs);
}
项目:mongosql-auth-java    文件:ScramSha1.java   
private byte[] computeClientFirstMessage() throws SaslException {
    String userName = "n=" + prepUserName(user);
    this.rPrefix = randomStringGenerator.generate(RANDOM_LENGTH);

    String nonce = "r=" + this.rPrefix;

    this.clientFirstMessageBare = userName + "," + nonce;
    String clientFirstMessage = GS2_HEADER + this.clientFirstMessageBare;

    return decodeUTF8(clientFirstMessage);
}
项目:openjdk-jdk10    文件:ClientServerTest.java   
private static boolean runTest(String authId, String mech,
        String[] clientQops, String[] serverQops, boolean expectException)
        throws Exception {

    System.out.println("AuthId:" + authId
            + " mechanism:" + mech
            + " clientQops: " + Arrays.toString(clientQops)
            + " serverQops: " + Arrays.toString(serverQops)
            + " expect exception:" + expectException);

    try (Server server = Server.start(LOCALHOST, authId, serverQops)) {
        new Client(LOCALHOST, server.getPort(), mech, authId, clientQops)
                .run();
        if (expectException) {
            System.out.println("Expected exception not thrown");
            return false;
        }
    } catch (SaslException e) {
        if (!expectException) {
            System.out.println("Unexpected exception: " + e);
            return false;
        }
        System.out.println("Expected exception: " + e);
    }

    return true;
}
项目:mongosql-auth-java    文件:ScramSha1.java   
private String encodeUTF8(final byte[] bytes) throws SaslException {
    try {
        return new String(bytes, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        throw new SaslException("UTF-8 is not a supported encoding.", e);
    }
}