public static Realm.Builder ntlmAuthRealm(String principal, String password) { return realm(AuthScheme.NTLM, principal, password); } }
public static Realm.Builder digestAuthRealm(String principal, String password) { return realm(AuthScheme.DIGEST, principal, password); }
public static Realm.Builder basicAuthRealm(String principal, String password) { return realm(AuthScheme.BASIC, principal, password); }
@Test public void nonPreemptiveProxyAuthWithPlainHttpTarget() throws IOException, InterruptedException, ExecutionException { try (AsyncHttpClient client = asyncHttpClient()) { String targetUrl = "http://localhost:" + httpPort + "/foo/bar"; Request request = get(targetUrl) .setProxyServer(proxyServer("127.0.0.1", proxyPort).setRealm(realm(AuthScheme.BASIC, "johndoe", "pass"))) // .setRealm(realm(AuthScheme.BASIC, "user", "passwd")) .build(); Future<Response> responseFuture = client.executeRequest(request); Response response = responseFuture.get(); Assert.assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK); Assert.assertEquals("/foo/bar", response.getHeader("X-pathInfo")); } }
@Test public void nonPreemptiveProxyAuthWithHttpsTarget() throws IOException, InterruptedException, ExecutionException { try (AsyncHttpClient client = asyncHttpClient(config().setUseInsecureTrustManager(true))) { String targetUrl = "https://localhost:" + httpPort + "/foo/bar"; Request request = get(targetUrl) .setProxyServer(proxyServer("127.0.0.1", proxyPort).setRealm(realm(AuthScheme.BASIC, "johndoe", "pass"))) // .setRealm(realm(AuthScheme.BASIC, "user", "passwd")) .build(); Future<Response> responseFuture = client.executeRequest(request); Response response = responseFuture.get(); Assert.assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK); Assert.assertEquals("/foo/bar", response.getHeader("X-pathInfo")); } } }
if (isNonEmpty(realm.getNonce())) { realm = realm(realm) .setUri(request.getUri()) .setMethodName(request.getMethod())
@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()); }
Realm newBasicRealm = realm(realm) .setUsePreemptiveAuth(true) .build(); return false; Realm newDigestRealm = realm(realm) .setUri(request.getUri()) .setMethodName(request.getMethod()) Realm newNtlmRealm = realm(realm) .setUsePreemptiveAuth(true) .build(); LOGGER.warn("Kerberos/Spnego auth failed, proceeding with NTLM"); ntlmChallenge(ntlmHeader2, requestHeaders, realm, future); Realm newNtlmRealm2 = realm(realm) .setScheme(AuthScheme.NTLM) .setUsePreemptiveAuth(true)
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; }
Realm newBasicRealm = realm(proxyRealm) .setUsePreemptiveAuth(true) .build(); return false; Realm newDigestRealm = realm(proxyRealm) .setUri(request.getUri()) .setMethodName(request.getMethod()) Realm newNtlmRealm = realm(proxyRealm) .setUsePreemptiveAuth(true) .build(); LOGGER.warn("Kerberos/Spnego proxy auth failed, proceeding with NTLM"); ntlmProxyChallenge(ntlmHeader2, requestHeaders, proxyRealm, future); Realm newNtlmRealm2 = realm(proxyRealm) .setScheme(AuthScheme.NTLM) .setUsePreemptiveAuth(true)
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; } }