@Override public boolean configure(FeatureContext context) { context.register(new HttpAuthenticationFilter(mode, basicCredentials, digestCredentials, context.getConfiguration())); return true; } }
/** * Get credentials actual for the current request. Priorities in credentials selection are the following: * <ol> * <li>Basic/digest specific credentials defined in the request properties</li> * <li>Common credentials defined in the request properties</li> * <li>{@code defaultCredentials}</li> * </ol> * * @param request Request from which credentials should be extracted. * @param defaultCredentials Default credentials (can be {@code null}). * @param type Type of requested credentials. * @return Credentials or {@code null} if no credentials are found and {@code defaultCredentials} are {@code null}. * @throws RequestAuthenticationException in case the {@code username} or {@code password} is invalid. */ static Credentials getCredentials(ClientRequestContext request, Credentials defaultCredentials, Type type) { Credentials commonCredentials = extractCredentials(request, type); if (commonCredentials != null) { return commonCredentials; } else { Credentials specificCredentials = extractCredentials(request, null); return specificCredentials != null ? specificCredentials : defaultCredentials; } } }
private void updateCache(ClientRequestContext request, boolean success, Type operation) { String cacheKey = getCacheKey(request); if (success) { this.uriCache.put(cacheKey, operation); } else { this.uriCache.remove(cacheKey); } }
/** * Checks the response and if basic authentication is required then performs a new request * with basic authentication. * * @param request Request context. * @param response Response context (will be updated with newest response data if the request was repeated). * @return {@code true} if response does not require authentication or if authentication is required, * new request was done with digest authentication information and authentication was successful. * @throws ResponseAuthenticationException in case that basic credentials missing or are in invalid format */ public boolean filterResponseAndAuthenticate(ClientRequestContext request, ClientResponseContext response) { final String authenticate = response.getHeaders().getFirst(HttpHeaders.WWW_AUTHENTICATE); if (authenticate != null && authenticate.trim().toUpperCase().startsWith("BASIC")) { HttpAuthenticationFilter.Credentials credentials = HttpAuthenticationFilter .getCredentials(request, defaultCredentials, HttpAuthenticationFilter.Type.BASIC); if (credentials == null) { throw new ResponseAuthenticationException(null, LocalizationMessages.AUTHENTICATION_CREDENTIALS_MISSING_BASIC()); } return HttpAuthenticationFilter.repeatRequest(request, response, calculateAuthentication(credentials)); } return false; } }
/** * Process request and add authentication information if possible. * * @param request Request context. * @return {@code true} if authentication information was added. * @throws IOException When error with encryption occurs. */ boolean filterRequest(final ClientRequestContext request) throws IOException { final DigestScheme digestScheme = digestCache.get(request.getUri()); if (digestScheme != null) { final HttpAuthenticationFilter.Credentials cred = HttpAuthenticationFilter.getCredentials(request, this.credentials, HttpAuthenticationFilter.Type.DIGEST); if (cred != null) { request.getHeaders().add(HttpHeaders.AUTHORIZATION, createNextAuthToken(digestScheme, request, cred)); return true; } } return false; }
int limit = getMaximumCacheLimit(configuration);
Type operation = (Type) request.getProperty(REQUEST_PROPERTY_OPERATION); if (operation != null) { updateCache(request, !authenticate, operation); success = digestAuth.filterResponse(request, response); updateCache(request, success, result);
/** * Checks the response and if basic authentication is required then performs a new request * with basic authentication. * * @param request Request context. * @param response Response context (will be updated with newest response data if the request was repeated). * @return {@code true} if response does not require authentication or if authentication is required, * new request was done with digest authentication information and authentication was successful. * @throws ResponseAuthenticationException in case that basic credentials missing or are in invalid format */ public boolean filterResponseAndAuthenticate(ClientRequestContext request, ClientResponseContext response) { final String authenticate = response.getHeaders().getFirst(HttpHeaders.WWW_AUTHENTICATE); if (authenticate != null && authenticate.trim().toUpperCase().startsWith("BASIC")) { HttpAuthenticationFilter.Credentials credentials = HttpAuthenticationFilter .getCredentials(request, defaultCredentials, HttpAuthenticationFilter.Type.BASIC); if (credentials == null) { throw new ResponseAuthenticationException(null, LocalizationMessages.AUTHENTICATION_CREDENTIALS_MISSING_BASIC()); } return HttpAuthenticationFilter.repeatRequest(request, response, calculateAuthentication(credentials)); } return false; } }
/** * Process request and add authentication information if possible. * * @param request Request context. * @return {@code true} if authentication information was added. * @throws IOException When error with encryption occurs. */ boolean filterRequest(final ClientRequestContext request) throws IOException { final DigestScheme digestScheme = digestCache.get(request.getUri()); if (digestScheme != null) { final HttpAuthenticationFilter.Credentials cred = HttpAuthenticationFilter.getCredentials(request, this.credentials, HttpAuthenticationFilter.Type.DIGEST); if (cred != null) { request.getHeaders().add(HttpHeaders.AUTHORIZATION, createNextAuthToken(digestScheme, request, cred)); return true; } } return false; }
int limit = getMaximumCacheLimit(configuration);
Type operation = (Type) request.getProperty(REQUEST_PROPERTY_OPERATION); if (operation != null) { updateCache(request, !authenticate, operation); success = digestAuth.filterResponse(request, response); updateCache(request, success, result);
/** * Checks the response and if basic authentication is required then performs a new request * with basic authentication. * * @param request Request context. * @param response Response context (will be updated with newest response data if the request was repeated). * @return {@code true} if response does not require authentication or if authentication is required, * new request was done with digest authentication information and authentication was successful. * @throws ResponseAuthenticationException in case that basic credentials missing or are in invalid format */ public boolean filterResponseAndAuthenticate(ClientRequestContext request, ClientResponseContext response) { final String authenticate = response.getHeaders().getFirst(HttpHeaders.WWW_AUTHENTICATE); if (authenticate != null && authenticate.trim().toUpperCase().startsWith("BASIC")) { HttpAuthenticationFilter.Credentials credentials = HttpAuthenticationFilter .getCredentials(request, defaultCredentials, HttpAuthenticationFilter.Type.BASIC); if (credentials == null) { throw new ResponseAuthenticationException(null, LocalizationMessages.AUTHENTICATION_CREDENTIALS_MISSING_BASIC()); } return HttpAuthenticationFilter.repeatRequest(request, response, calculateAuthentication(credentials)); } return false; } }
private void updateCache(ClientRequestContext request, boolean success, Type operation) { String cacheKey = getCacheKey(request); if (success) { this.uriCache.put(cacheKey, operation); } else { this.uriCache.remove(cacheKey); } }
/** * Adds authentication information to the request. * * @param request Request context. * @throws RequestAuthenticationException in case that basic credentials missing or are in invalid format */ public void filterRequest(ClientRequestContext request) throws RequestAuthenticationException { HttpAuthenticationFilter.Credentials credentials = HttpAuthenticationFilter.getCredentials(request, defaultCredentials, HttpAuthenticationFilter.Type.BASIC); if (credentials == null) { throw new RequestAuthenticationException(LocalizationMessages.AUTHENTICATION_CREDENTIALS_MISSING_BASIC()); } request.getHeaders().add(HttpHeaders.AUTHORIZATION, calculateAuthentication(credentials)); }
@Override public boolean configure(FeatureContext context) { context.register(new HttpAuthenticationFilter(mode, basicCredentials, digestCredentials, context.getConfiguration())); return true; } }
/** * Get credentials actual for the current request. Priorities in credentials selection are the following: * <ol> * <li>Basic/digest specific credentials defined in the request properties</li> * <li>Common credentials defined in the request properties</li> * <li>{@code defaultCredentials}</li> * </ol> * * @param request Request from which credentials should be extracted. * @param defaultCredentials Default credentials (can be {@code null}). * @param type Type of requested credentials. * @return Credentials or {@code null} if no credentials are found and {@code defaultCredentials} are {@code null}. * @throws RequestAuthenticationException in case the {@code username} or {@code password} is invalid. */ static Credentials getCredentials(ClientRequestContext request, Credentials defaultCredentials, Type type) { Credentials commonCredentials = extractCredentials(request, type); if (commonCredentials != null) { return commonCredentials; } else { Credentials specificCredentials = extractCredentials(request, null); return specificCredentials != null ? specificCredentials : defaultCredentials; } } }
int limit = getMaximumCacheLimit(configuration);
Type operation = (Type) request.getProperty(REQUEST_PROPERTY_OPERATION); if (operation != null) { updateCache(request, !authenticate, operation); success = digestAuth.filterResponse(request, response); updateCache(request, success, result);
final HttpAuthenticationFilter.Credentials cred = HttpAuthenticationFilter.getCredentials(request, this.credentials, HttpAuthenticationFilter.Type.DIGEST); if (cred == null) { final boolean success = HttpAuthenticationFilter.repeatRequest(request, response, createNextAuthToken(digestScheme, request, cred)); if (success) {
private void updateCache(ClientRequestContext request, boolean success, Type operation) { String cacheKey = getCacheKey(request); if (success) { this.uriCache.put(cacheKey, operation); } else { this.uriCache.remove(cacheKey); } }