.setUsePreemptiveAuth(true) .build(); future.setProxyRealm(newBasicRealm); break; .setUri(request.getUri()) .setMethodName(request.getMethod()) .setUsePreemptiveAuth(true) .parseProxyAuthenticateHeader(digestHeader) .build(); future.setProxyRealm(newDigestRealm); break; .setUsePreemptiveAuth(true) .build(); future.setProxyRealm(newNtlmRealm); break; ntlmProxyChallenge(ntlmHeader2, requestHeaders, proxyRealm, future); Realm newNtlmRealm2 = realm(proxyRealm) .setScheme(AuthScheme.NTLM) .setUsePreemptiveAuth(true) .build(); future.setProxyRealm(newNtlmRealm2); } else {
@Test public void testClone() { Realm orig = basicAuthRealm("user", "pass").setCharset(UTF_16) .setUsePreemptiveAuth(true) .setRealmName("realm") .setAlgorithm("algo").build(); Realm clone = realm(orig).build(); assertEquals(clone.getPrincipal(), orig.getPrincipal()); assertEquals(clone.getPassword(), orig.getPassword()); assertEquals(clone.getCharset(), orig.getCharset()); assertEquals(clone.isUsePreemptiveAuth(), orig.isUsePreemptiveAuth()); assertEquals(clone.getRealmName(), orig.getRealmName()); assertEquals(clone.getAlgorithm(), orig.getAlgorithm()); assertEquals(clone.getScheme(), orig.getScheme()); }
private synchronized AsyncHttpClient getAsyncHttpClient(Message message) { if (ahcclient == null) { DefaultAsyncHttpClientConfig.Builder builder = new DefaultAsyncHttpClientConfig.Builder(); AuthorizationPolicy ap = getEffectiveAuthPolicy(message); if (ap != null && (!StringUtils.isEmpty(ap.getAuthorizationType()) || !StringUtils.isEmpty(ap.getUserName()))) { Realm.Builder rb = new Realm.Builder(ap.getUserName(), ap.getPassword()); if (ap.getAuthorizationType() == null) { rb.setScheme(AuthScheme.BASIC); } else { rb.setScheme(AuthScheme.valueOf(ap.getAuthorizationType().toUpperCase())); } rb.setUsePreemptiveAuth(true); builder.setRealm(rb.build()); } AsyncHttpClientConfig config = builder.build(); ahcclient = new DefaultAsyncHttpClient(config); } return ahcclient; }
private synchronized AsyncHttpClient getAsyncHttpClient(Message message) { if (ahcclient == null) { DefaultAsyncHttpClientConfig.Builder builder = new DefaultAsyncHttpClientConfig.Builder(); AuthorizationPolicy ap = getEffectiveAuthPolicy(message); if (ap != null && (!StringUtils.isEmpty(ap.getAuthorizationType()) || !StringUtils.isEmpty(ap.getUserName()))) { Realm.Builder rb = new Realm.Builder(ap.getUserName(), ap.getPassword()); if (ap.getAuthorizationType() == null) { rb.setScheme(AuthScheme.BASIC); } else { rb.setScheme(AuthScheme.valueOf(ap.getAuthorizationType().toUpperCase())); } rb.setUsePreemptiveAuth(true); builder.setRealm(rb.build()); } AsyncHttpClientConfig config = builder.build(); ahcclient = new DefaultAsyncHttpClient(config); } return ahcclient; }
private Zendesk(AsyncHttpClient client, String url, String username, String password) { this.logger = LoggerFactory.getLogger(Zendesk.class); this.closeClient = client == null; this.oauthToken = null; this.client = client == null ? new DefaultAsyncHttpClient() : client; this.url = url.endsWith("/") ? url + "api/v2" : url + "/api/v2"; if (username != null) { this.realm = new Realm.Builder(username, password) .setScheme(Realm.AuthScheme.BASIC) .setUsePreemptiveAuth(true) .build(); } else { if (password != null) { throw new IllegalStateException("Cannot specify token or password without specifying username"); } this.realm = null; } this.mapper = createMapper(); }
private void addAuth(BoundRequestBuilder requestBuilder) { if (credentials != null && credentials.getLogin() != null) { String password = Optional.ofNullable(credentials.getPassword()).orElse(""); Realm realm = new Realm.Builder(credentials.getLogin(), password).setUsePreemptiveAuth(true) .setScheme(Realm.AuthScheme.BASIC).build(); requestBuilder.setRealm(realm); } }
Realm auth(String username, String password, WSAuthScheme scheme) { Realm.AuthScheme authScheme = Realm.AuthScheme.valueOf(scheme.name()); return (new Realm.Builder(username, password)) .setScheme(authScheme) .setUsePreemptiveAuth(true) .build(); } }
.setUsePreemptiveAuth(true) .build(); future.setRealm(newBasicRealm); break; .setUri(request.getUri()) .setMethodName(request.getMethod()) .setUsePreemptiveAuth(true) .parseWWWAuthenticateHeader(digestHeader) .build(); future.setRealm(newDigestRealm); break; .setUsePreemptiveAuth(true) .build(); future.setRealm(newNtlmRealm); break; ntlmChallenge(ntlmHeader2, requestHeaders, realm, future); Realm newNtlmRealm2 = realm(realm) .setScheme(AuthScheme.NTLM) .setUsePreemptiveAuth(true) .build(); future.setRealm(newNtlmRealm2); } else {
BoundRequestBuilder r = client.prepareGet(getTargetUrl()) .setHeader("X-401", "401") .setRealm(basicAuthRealm(USER, ADMIN).build());
realm = basicAuthRealm(principal, password).build();
.setUri(request.getUri()) .setMethodName(request.getMethod()) .build(); authorizationHeader = computeDigestAuthentication(realm);
public static String perRequestProxyAuthorizationHeader(Request request, Realm proxyRealm) { String proxyAuthorization = null; if (proxyRealm != null && proxyRealm.isUsePreemptiveAuth()) { switch (proxyRealm.getScheme()) { case BASIC: proxyAuthorization = computeBasicAuthentication(proxyRealm); break; case DIGEST: if (isNonEmpty(proxyRealm.getNonce())) { // update realm with request information proxyRealm = realm(proxyRealm) .setUri(request.getUri()) .setMethodName(request.getMethod()) .build(); proxyAuthorization = computeDigestAuthentication(proxyRealm); } break; case NTLM: case KERBEROS: case SPNEGO: // NTLM, KERBEROS and SPNEGO are only set on the first request with a connection, // see perConnectionProxyAuthorizationHeader break; default: throw new IllegalStateException("Invalid Authentication scheme " + proxyRealm.getScheme()); } } return proxyAuthorization; }
@Test public void testStrongDigest() throws Exception { String user = "user"; String pass = "pass"; String realm = "realm"; String nonce = "nonce"; String method = "GET"; Uri uri = Uri.create("http://ahc.io/foo"); String qop = "auth"; Realm orig = digestAuthRealm(user, pass) .setNonce(nonce) .setUri(uri) .setMethodName(method) .setRealmName(realm) .setQop(qop) .build(); String nc = orig.getNc(); String cnonce = orig.getCnonce(); String ha1 = getMd5(user + ":" + realm + ":" + pass); String ha2 = getMd5(method + ":" + uri.getPath()); String expectedResponse = getMd5(ha1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" + qop + ":" + ha2); assertEquals(orig.getResponse(), expectedResponse); }
public SimpleAsyncHttpClient build() { if (realmBuilder != null) { configBuilder.setRealm(realmBuilder.build()); } if (proxyHost != null) { Realm realm = null; if (proxyPrincipal != null) { AuthScheme proxyAuthScheme = withDefault(this.proxyAuthScheme, AuthScheme.BASIC); realm = realm(proxyAuthScheme, proxyPrincipal, proxyPassword).build(); } configBuilder.setProxyServer(proxyServer(proxyHost, proxyPort).setRealm(realm).build()); } configBuilder.addIOExceptionFilter(new ResumableIOExceptionFilter()); SimpleAsyncHttpClient sc = new SimpleAsyncHttpClient(configBuilder.build(), requestBuilder, defaultThrowableHandler, errorDocumentBehaviour, enableResumableDownload, ahc, listener); return sc; } }
public static Realm.Builder realm(Realm prototype) { return new Realm.Builder(prototype.getPrincipal(), prototype.getPassword()) .setRealmName(prototype.getRealmName()) .setAlgorithm(prototype.getAlgorithm()) .setNc(prototype.getNc()) .setNonce(prototype.getNonce()) .setCharset(prototype.getCharset()) .setOpaque(prototype.getOpaque()) .setQop(prototype.getQop()) .setScheme(prototype.getScheme()) .setUri(prototype.getUri()) .setUsePreemptiveAuth(prototype.isUsePreemptiveAuth()) .setNtlmDomain(prototype.getNtlmDomain()) .setNtlmHost(prototype.getNtlmHost()) .setUseAbsoluteURI(prototype.isUseAbsoluteURI()) .setOmitQuery(prototype.isOmitQuery()) .setServicePrincipalName(prototype.getServicePrincipalName()) .setUseCanonicalHostname(prototype.isUseCanonicalHostname()) .setCustomLoginConfig(prototype.getCustomLoginConfig()) .setLoginContextName(prototype.getLoginContextName()); }
protected Future<Response> execute(AsyncHttpClient client, boolean basic, boolean preemptive) { Realm.Builder realm; String url; if (basic) { realm = basicAuthRealm(USER, ADMIN); url = getTargetUrl(); } else { realm = digestAuthRealm(USER, ADMIN); url = getTargetUrl2(); if (preemptive) { realm.setRealmName("MyRealm"); realm.setAlgorithm("MD5"); realm.setQop("auth"); realm.setNonce("fFDVc60re9zt8fFDvht0tNrYuvqrcchN"); } } return client.prepareGet(url).setRealm(realm.setUsePreemptiveAuth(preemptive).build()).execute(); }
private void testOldDigest(String qop) throws Exception { String user = "user"; String pass = "pass"; String realm = "realm"; String nonce = "nonce"; String method = "GET"; Uri uri = Uri.create("http://ahc.io/foo"); Realm orig = digestAuthRealm(user, pass) .setNonce(nonce) .setUri(uri) .setMethodName(method) .setRealmName(realm) .setQop(qop) .build(); String ha1 = getMd5(user + ":" + realm + ":" + pass); String ha2 = getMd5(method + ":" + uri.getPath()); String expectedResponse = getMd5(ha1 + ":" + nonce + ":" + ha2); assertEquals(orig.getResponse(), expectedResponse); }
@Test public void basicAuthFileNoKeepAliveTest() throws Exception { try (AsyncHttpClient client = asyncHttpClient(config().setKeepAlive(false))) { Future<Response> f = client.preparePost(getTargetUrl()) .setBody(SIMPLE_TEXT_FILE) .setRealm(basicAuthRealm(USER, ADMIN).build()) .execute(); Response resp = f.get(3, TimeUnit.SECONDS); assertNotNull(resp); assertNotNull(resp.getHeader("X-Auth")); assertEquals(resp.getStatusCode(), HttpServletResponse.SC_OK); assertEquals(resp.getResponseBody(), SIMPLE_TEXT_FILE_STRING); } }
public Builder parseWWWAuthenticateHeader(String headerLine) { setRealmName(match(headerLine, "realm")) .setNonce(match(headerLine, "nonce")) .setOpaque(match(headerLine, "opaque")) .setScheme(isNonEmpty(nonce) ? AuthScheme.DIGEST : AuthScheme.BASIC); String algorithm = match(headerLine, "algorithm"); if (isNonEmpty(algorithm)) { setAlgorithm(algorithm); } // FIXME qop is different with proxy? String rawQop = match(headerLine, "qop"); if (rawQop != null) { setQop(parseRawQop(rawQop)); } return this; }
@Test public void basicAuthTestPreemtiveTest() throws IOException, ExecutionException, TimeoutException, InterruptedException { try (AsyncHttpClient client = asyncHttpClient()) { // send the request to the no-auth endpoint to be able to verify the // auth header is really sent preemptively for the initial call. Future<Response> f = client.prepareGet(getTargetUrlNoAuth()) .setRealm(basicAuthRealm(USER, ADMIN).setUsePreemptiveAuth(true).build()) .execute(); Response resp = f.get(3, TimeUnit.SECONDS); assertNotNull(resp); assertNotNull(resp.getHeader("X-Auth")); assertEquals(resp.getStatusCode(), HttpServletResponse.SC_OK); } }