protected void doError(Request request, Response response, OAuthProblemException exception) { if (OAuth2Utils.ParameterLocation.HTTP_HEADER.equals(parameterLocation)) { if (!isOptional()) { if (isRechallenging()) { boolean loggable = response.getRequest().isLoggable() && getLogger().isLoggable(Level.FINE); if (loggable) { getLogger().log(Level.FINE, "An authentication challenge was requested."); } response.setStatus(Status.CLIENT_ERROR_UNAUTHORIZED); response .getChallengeRequests() .add( getTokenVerifier() .getTokenExtractor() .createChallengeRequest(getRealm(), exception)); response.setEntity(new JacksonRepresentation<Map>(exception.getErrorMessage())); } else { forbid(response); } } } else { response.setStatus(exception.getStatus()); response.setEntity(new JacksonRepresentation<Map>(exception.getErrorMessage())); } }
@Override public void challenge(Response response, boolean stale) { // Load the FreeMarker template Representation ftl = new ClientResource( LocalReference.createClapReference(getClass().getPackage()) + "/Login.ftl") .get(); // Wraps the bean with a FreeMarker representation response.setEntity( new TemplateRepresentation( ftl, response.getRequest().getResourceRef(), MediaType.TEXT_HTML)); response.setStatus(Status.CLIENT_ERROR_UNAUTHORIZED); }
@Override public void onMessageCompleted(boolean endDetected) throws IOException { Response message = getMessage(); if (message != null) { Request request = message.getRequest(); if (request.getOnSent() != null) { request.getOnSent().handle(request, message); } } super.onMessageCompleted(endDetected); }
public boolean write(final Object result, final Response response) throws ResourceException { MediaType type = getVariant(response.getRequest(), ENGLISH, supportedMediaTypes).getMediaType(); if (MediaType.APPLICATION_JSON.equals(type)) { if (result instanceof String || result instanceof Number || result instanceof Boolean) { StringRepresentation representation = new StringRepresentation(result.toString(), MediaType.APPLICATION_JSON); response.setEntity(representation); return true; } } return false; }
@Override public void onHeadersCompleted() throws IOException { Response message = getMessage(); if (message != null) { Request request = message.getRequest(); if (request.isExpectingResponse()) { Queue<Response> inboundMessages = ((HttpClientInboundWay) getConnection().getInboundWay()).getMessages(); inboundMessages.add(message); getConnection().getInboundWay().setMessageState(MessageState.START); } } super.onHeadersCompleted(); }
private Request createChallengeResponse(Response resourceNeedsAuth) { ChallengeResponse cResponse = null; for (ChallengeRequest challengeRequest : resourceNeedsAuth.getChallengeRequests()) { ChallengeScheme cs = challengeRequest.getScheme(); if (ChallengeScheme.HTTP_BASIC.equals(cs)) { if (log.isLoggable(Level.INFO)) { log.info("Received 401 Error -> retrying request with HTTP_BASIC AUTH now!"); } cResponse = new ChallengeResponse(ChallengeScheme.HTTP_BASIC, getUsername(), getPassword()); break; } } if (cResponse != null) { Request authenticatedRequest = resourceNeedsAuth.getRequest(); authenticatedRequest.setChallengeResponse(cResponse); return authenticatedRequest; } throw new IllegalStateException( new AuthenticationException("Unable to determine required authentication scheme!")); }