public static String perConnectionProxyAuthorizationHeader(Request request, Realm proxyRealm) { String proxyAuthorization = null; if (proxyRealm != null && proxyRealm.isUsePreemptiveAuth()) { switch (proxyRealm.getScheme()) { case NTLM: case KERBEROS: case SPNEGO: List<String> auth = request.getHeaders().getAll(PROXY_AUTHORIZATION); if (getHeaderWithPrefix(auth, "NTLM") == null) { String msg = NtlmEngine.INSTANCE.generateType1Msg(); proxyAuthorization = "NTLM " + msg; } break; default: } } return proxyAuthorization; }
private HttpHeaders propagatedHeaders(Request request, Realm realm, boolean keepBody) { HttpHeaders headers = request.getHeaders() .remove(HOST) .remove(CONTENT_LENGTH); if (!keepBody) { headers.remove(CONTENT_TYPE); } if (realm != null && realm.getScheme() == AuthScheme.NTLM) { headers.remove(AUTHORIZATION) .remove(PROXY_AUTHORIZATION); } return headers; } }
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 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()); }
switch (realm.getScheme()) { case BASIC: authorizationHeader = computeBasicAuthentication(realm);
requestFactory.setProxyAuthorizationHeader(headers, perConnectionProxyAuthorizationHeader(request, proxyRealm)); future.setInAuth(realm != null && realm.isUsePreemptiveAuth() && realm.getScheme() != AuthScheme.NTLM); future.setInProxyAuth( proxyRealm != null && proxyRealm.isUsePreemptiveAuth() && proxyRealm.getScheme() != AuthScheme.NTLM);
switch (realm.getScheme()) { case NTLM: String msg = NtlmEngine.INSTANCE.generateType1Msg();
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()); }
public static String perRequestAuthorizationHeader(Request request, Realm realm) { String authorizationHeader = null; if (realm != null && realm.getUsePreemptiveAuth()) { switch (realm.getScheme()) { case BASIC: authorizationHeader = computeBasicAuthentication(realm); break; case DIGEST: if (isNonEmpty(realm.getNonce())) authorizationHeader = computeDigestAuthentication(realm); break; case NTLM: case KERBEROS: case SPNEGO: // NTLM, KERBEROS and SPNEGO are only set on the first request, // see firstRequestOnlyAuthorizationHeader case NONE: break; default: throw new IllegalStateException("Invalid Authentication " + realm); } } return authorizationHeader; } }
private FluentCaseInsensitiveStringsMap propagatedHeaders(Request request, Realm realm, boolean switchToGet) { FluentCaseInsensitiveStringsMap headers = request.getHeaders()// .delete(HttpHeaders.Names.HOST)// .delete(HttpHeaders.Names.CONTENT_LENGTH)// .delete(HttpHeaders.Names.CONTENT_TYPE); if (realm != null && realm.getScheme() == AuthScheme.NTLM) { headers.delete(AUTHORIZATION)// .delete(PROXY_AUTHORIZATION); } return headers; }
private FluentCaseInsensitiveStringsMap propagatedHeaders(Request request, Realm realm, boolean switchToGet) { FluentCaseInsensitiveStringsMap headers = request.getHeaders()// .delete(HttpHeaders.Names.HOST)// .delete(HttpHeaders.Names.CONTENT_LENGTH)// .delete(HttpHeaders.Names.CONTENT_TYPE); if (realm != null && realm.getScheme() == AuthScheme.NTLM) { headers.delete(AUTHORIZATION)// .delete(PROXY_AUTHORIZATION); } return headers; }
private FluentCaseInsensitiveStringsMap propagatedHeaders(Request request, Realm realm, boolean switchToGet) { FluentCaseInsensitiveStringsMap headers = request.getHeaders()// .delete(HttpHeaders.Names.HOST)// .delete(HttpHeaders.Names.CONTENT_LENGTH)// .delete(HttpHeaders.Names.CONTENT_TYPE); if (realm != null && realm.getScheme() == AuthScheme.NTLM) { headers.delete(AUTHORIZATION)// .delete(PROXY_AUTHORIZATION); } return headers; }
private FluentCaseInsensitiveStringsMap propagatedHeaders(Request request, Realm realm, boolean switchToGet) { FluentCaseInsensitiveStringsMap headers = request.getHeaders()// .delete(HttpHeaders.Names.HOST)// .delete(HttpHeaders.Names.CONTENT_LENGTH)// .delete(HttpHeaders.Names.CONTENT_TYPE); if (realm != null && realm.getScheme() == AuthScheme.NTLM) { headers.delete(AUTHORIZATION)// .delete(PROXY_AUTHORIZATION); } return headers; }
public static String perRequestProxyAuthorizationHeader(Request request, ProxyServer proxyServer, Realm realm, boolean connect) { String proxyAuthorization = null; if (!connect && proxyServer != null && proxyServer.getScheme() == AuthScheme.BASIC) { proxyAuthorization = computeBasicAuthentication(proxyServer); } else if (realm != null && realm.getUsePreemptiveAuth() && realm.isTargetProxy()) { switch (realm.getScheme()) { case BASIC: proxyAuthorization = computeBasicAuthentication(realm); break; case DIGEST: if (isNonEmpty(realm.getNonce())) proxyAuthorization = computeDigestAuthentication(realm); break; case NTLM: case KERBEROS: case SPNEGO: // NTLM, KERBEROS and SPNEGO are only set on the first request, // see firstRequestOnlyAuthorizationHeader case NONE: break; default: throw new IllegalStateException("Invalid Authentication " + realm); } } return proxyAuthorization; }
public static String perConnectionAuthorizationHeader(Request request, ProxyServer proxyServer, Realm realm) { String authorizationHeader = null; if (realm != null && realm.getUsePreemptiveAuth()) { switch (realm.getScheme()) { case NTLM: String msg = NtlmEngine.INSTANCE.generateType1Msg(); authorizationHeader = "NTLM " + msg; break; case KERBEROS: case SPNEGO: String host; if (proxyServer != null) host = proxyServer.getHost(); else if (request.getVirtualHost() != null) host = request.getVirtualHost(); else host = request.getUri().getHost(); authorizationHeader = "Negotiate " + SpnegoEngine.instance().generateToken(host); break; default: break; } } return authorizationHeader; }
public RealmBuilder clone(Realm clone) { return setRealmName(clone.getRealmName())// .setAlgorithm(clone.getAlgorithm())// .setMethodName(clone.getMethodName())// .setNc(clone.getNc())// .setNonce(clone.getNonce())// .setPassword(clone.getPassword())// .setPrincipal(clone.getPrincipal())// .setCharset(clone.getCharset())// .setOpaque(clone.getOpaque())// .setQop(clone.getQop())// .setScheme(clone.getScheme())// .setUri(clone.getUri())// .setUsePreemptiveAuth(clone.getUsePreemptiveAuth())// .setNtlmDomain(clone.getNtlmDomain())// .setNtlmHost(clone.getNtlmHost())// .setUseAbsoluteURI(clone.isUseAbsoluteURI())// .setOmitQuery(clone.isOmitQuery())// .setTargetProxy(clone.isTargetProxy()); }