@Override public void evaluateRequest(final HttpServerRequest request) throws HttpAuthenticationException { List<String> authorizationValues = request.getRequestHeaderValues(AUTHORIZATION); if (authorizationValues != null) { for (String current : authorizationValues) { if (current.startsWith(CHALLENGE_PREFIX)) { byte[] rawHeader = current.substring(CHALLENGE_PREFIX.length()).getBytes(UTF_8); try { HashMap<String, byte[]> responseTokens = parseResponse(rawHeader, UTF_8, false, httpDigest); validateResponse(responseTokens, request); return; } catch (AuthenticationMechanismException e) { httpDigest.trace("Failed to parse or validate the response", e); request.badRequest(e.toHttpAuthenticationException(), response -> prepareResponse(selectRealm(), response, false)); return; } } } } request.noAuthenticationInProgress(response -> prepareResponse(selectRealm(), response, false)); }
@Override protected byte[] evaluateMessage(int state, final byte[] message) throws SaslException { HashMap<String, byte[]> parsedChallenge; try { parsedChallenge = parseResponse(message, charset, true, saslDigest); } catch (AuthenticationMechanismException e) { throw e.toSaslException(); } while(true) { switch (state) { case STEP_TWO: noteChallengeData(parsedChallenge); setNegotiationState(STEP_FOUR); return createResponse(parsedChallenge); case STEP_FOUR: if (parsedChallenge.containsKey("nonce")) { saslDigest.trace("Server requested re-authentication"); state = STEP_TWO; continue; } checkResponseAuth(parsedChallenge); negotiationComplete(); return null; } throw Assert.impossibleSwitchCase(state); } } }
@Override protected byte[] evaluateMessage(int state, final byte[] message) throws SaslException { switch (state) { case STEP_ONE: if (message != null && message.length != 0) { throw saslDigest.mechInitialChallengeMustBeEmpty().toSaslException(); } setNegotiationState(STEP_THREE); return generateChallenge(); case STEP_THREE: if (message == null || message.length == 0) { throw saslDigest.mechClientRefusesToInitiateAuthentication().toSaslException(); } // parse digest response HashMap<String, byte[]> parsedDigestResponse; try { parsedDigestResponse = parseResponse(message, charset, false, saslDigest); } catch (AuthenticationMechanismException e) { throw e.toSaslException(); } noteDigestResponseData(parsedDigestResponse); // validate byte[] response = validateDigestResponse(parsedDigestResponse); negotiationComplete(); return response; } throw Assert.impossibleSwitchCase(state); }
@Override public void evaluateRequest(final HttpServerRequest request) throws HttpAuthenticationException { List<String> authorizationValues = request.getRequestHeaderValues(AUTHORIZATION); if (authorizationValues != null) { for (String current : authorizationValues) { if (current.startsWith(CHALLENGE_PREFIX)) { byte[] rawHeader = current.substring(CHALLENGE_PREFIX.length()).getBytes(UTF_8); try { HashMap<String, byte[]> responseTokens = parseResponse(rawHeader, UTF_8, false, httpDigest); validateResponse(responseTokens, request); return; } catch (AuthenticationMechanismException e) { httpDigest.trace("Failed to parse or validate the response", e); request.badRequest(e.toHttpAuthenticationException(), response -> prepareResponse(selectRealm(), response, false)); return; } } } } request.noAuthenticationInProgress(response -> prepareResponse(selectRealm(), response, false)); }
@Override public void evaluateRequest(final HttpServerRequest request) throws HttpAuthenticationException { List<String> authorizationValues = request.getRequestHeaderValues(AUTHORIZATION); if (authorizationValues != null) { for (String current : authorizationValues) { if (current.startsWith(CHALLENGE_PREFIX)) { byte[] rawHeader = current.substring(CHALLENGE_PREFIX.length()).getBytes(UTF_8); try { HashMap<String, byte[]> responseTokens = parseResponse(rawHeader, UTF_8, false, httpDigest); validateResponse(responseTokens, request); return; } catch (AuthenticationMechanismException e) { httpDigest.trace("Failed to parse or validate the response", e); request.badRequest(e.toHttpAuthenticationException(), response -> prepareResponse(selectRealm(), response, false)); return; } } } } request.noAuthenticationInProgress(response -> prepareResponse(selectRealm(), response, false)); }
@Override public void evaluateRequest(final HttpServerRequest request) throws HttpAuthenticationException { List<String> authorizationValues = request.getRequestHeaderValues(AUTHORIZATION); if (authorizationValues != null) { for (String current : authorizationValues) { if (current.startsWith(CHALLENGE_PREFIX)) { byte[] rawHeader = current.substring(CHALLENGE_PREFIX.length()).getBytes(UTF_8); try { HashMap<String, byte[]> responseTokens = parseResponse(rawHeader, UTF_8, false, httpDigest); validateResponse(responseTokens, request); return; } catch (AuthenticationMechanismException e) { httpDigest.trace("Failed to parse or validate the response", e); request.badRequest(e.toHttpAuthenticationException(), response -> prepareResponse(selectRealm(), response, false)); return; } } } } request.noAuthenticationInProgress(response -> prepareResponse(selectRealm(), response, false)); }
@Override protected byte[] evaluateMessage(int state, final byte[] message) throws SaslException { HashMap<String, byte[]> parsedChallenge; try { parsedChallenge = parseResponse(message, charset, true, saslDigest); } catch (AuthenticationMechanismException e) { throw e.toSaslException(); } while(true) { switch (state) { case STEP_TWO: noteChallengeData(parsedChallenge); setNegotiationState(STEP_FOUR); return createResponse(parsedChallenge); case STEP_FOUR: if (parsedChallenge.containsKey("nonce")) { saslDigest.trace("Server requested re-authentication"); state = STEP_TWO; continue; } checkResponseAuth(parsedChallenge); negotiationComplete(); return null; } throw Assert.impossibleSwitchCase(state); } } }
@Override protected byte[] evaluateMessage(int state, final byte[] message) throws SaslException { HashMap<String, byte[]> parsedChallenge; try { parsedChallenge = parseResponse(message, charset, true, saslDigest); } catch (AuthenticationMechanismException e) { throw e.toSaslException(); } while(true) { switch (state) { case STEP_TWO: noteChallengeData(parsedChallenge); setNegotiationState(STEP_FOUR); return createResponse(parsedChallenge); case STEP_FOUR: if (parsedChallenge.containsKey("nonce")) { saslDigest.trace("Server requested re-authentication"); state = STEP_TWO; continue; } checkResponseAuth(parsedChallenge); negotiationComplete(); return null; } throw Assert.impossibleSwitchCase(state); } } }
@Override protected byte[] evaluateMessage(int state, final byte[] message) throws SaslException { HashMap<String, byte[]> parsedChallenge; try { parsedChallenge = parseResponse(message, charset, true, saslDigest); } catch (AuthenticationMechanismException e) { throw e.toSaslException(); } while(true) { switch (state) { case STEP_TWO: noteChallengeData(parsedChallenge); setNegotiationState(STEP_FOUR); return createResponse(parsedChallenge); case STEP_FOUR: if (parsedChallenge.containsKey("nonce")) { saslDigest.trace("Server requested re-authentication"); state = STEP_TWO; continue; } checkResponseAuth(parsedChallenge); negotiationComplete(); return null; } throw Assert.impossibleSwitchCase(state); } } }
@Override protected byte[] evaluateMessage(int state, final byte[] message) throws SaslException { switch (state) { case STEP_ONE: if (message != null && message.length != 0) { throw saslDigest.mechInitialChallengeMustBeEmpty().toSaslException(); } setNegotiationState(STEP_THREE); return generateChallenge(); case STEP_THREE: if (message == null || message.length == 0) { throw saslDigest.mechClientRefusesToInitiateAuthentication().toSaslException(); } // parse digest response HashMap<String, byte[]> parsedDigestResponse; try { parsedDigestResponse = parseResponse(message, charset, false, saslDigest); } catch (AuthenticationMechanismException e) { throw e.toSaslException(); } noteDigestResponseData(parsedDigestResponse); // validate byte[] response = validateDigestResponse(parsedDigestResponse); negotiationComplete(); return response; } throw Assert.impossibleSwitchCase(state); }
@Override protected byte[] evaluateMessage(int state, final byte[] message) throws SaslException { switch (state) { case STEP_ONE: if (message != null && message.length != 0) { throw saslDigest.mechInitialChallengeMustBeEmpty().toSaslException(); } setNegotiationState(STEP_THREE); return generateChallenge(); case STEP_THREE: if (message == null || message.length == 0) { throw saslDigest.mechClientRefusesToInitiateAuthentication().toSaslException(); } // parse digest response HashMap<String, byte[]> parsedDigestResponse; try { parsedDigestResponse = parseResponse(message, charset, false, saslDigest); } catch (AuthenticationMechanismException e) { throw e.toSaslException(); } noteDigestResponseData(parsedDigestResponse); // validate byte[] response = validateDigestResponse(parsedDigestResponse); negotiationComplete(); return response; } throw Assert.impossibleSwitchCase(state); }
@Override protected byte[] evaluateMessage(int state, final byte[] message) throws SaslException { switch (state) { case STEP_ONE: if (message != null && message.length != 0) { throw saslDigest.mechInitialChallengeMustBeEmpty().toSaslException(); } setNegotiationState(STEP_THREE); return generateChallenge(); case STEP_THREE: if (message == null || message.length == 0) { throw saslDigest.mechClientRefusesToInitiateAuthentication().toSaslException(); } // parse digest response HashMap<String, byte[]> parsedDigestResponse; try { parsedDigestResponse = parseResponse(message, charset, false, saslDigest); } catch (AuthenticationMechanismException e) { throw e.toSaslException(); } noteDigestResponseData(parsedDigestResponse); // validate byte[] response = validateDigestResponse(parsedDigestResponse); negotiationComplete(); return response; } throw Assert.impossibleSwitchCase(state); }