Search in sources :

Example 6 with Lookup

use of org.apache.http.config.Lookup in project ranger by apache.

the class ElasticSearchMgr method getRestClientBuilder.

public static RestClientBuilder getRestClientBuilder(String urls, String protocol, String user, String password, int port) {
    RestClientBuilder restClientBuilder = RestClient.builder(MiscUtil.toArray(urls, ",").stream().map(x -> new HttpHost(x, port, protocol)).<HttpHost>toArray(i -> new HttpHost[i]));
    if (StringUtils.isNotBlank(user) && StringUtils.isNotBlank(password) && !user.equalsIgnoreCase("NONE") && !password.equalsIgnoreCase("NONE")) {
        if (password.contains("keytab") && new File(password).exists()) {
            final KerberosCredentialsProvider credentialsProvider = CredentialsProviderUtil.getKerberosCredentials(user, password);
            Lookup<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create().register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory()).build();
            restClientBuilder.setHttpClientConfigCallback(clientBuilder -> {
                clientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                clientBuilder.setDefaultAuthSchemeRegistry(authSchemeRegistry);
                return clientBuilder;
            });
        } else {
            final CredentialsProvider credentialsProvider = CredentialsProviderUtil.getBasicCredentials(user, password);
            restClientBuilder.setHttpClientConfigCallback(clientBuilder -> clientBuilder.setDefaultCredentialsProvider(credentialsProvider));
        }
    } else {
        logger.error("ElasticSearch Credentials not provided!!");
        final CredentialsProvider credentialsProvider = null;
        restClientBuilder.setHttpClientConfigCallback(clientBuilder -> clientBuilder.setDefaultCredentialsProvider(credentialsProvider));
    }
    return restClientBuilder;
}
Also used : RestClient(org.elasticsearch.client.RestClient) AuthSchemeProvider(org.apache.http.auth.AuthSchemeProvider) StringUtils(org.apache.commons.lang.StringUtils) RegistryBuilder(org.apache.http.config.RegistryBuilder) RestClientBuilder(org.elasticsearch.client.RestClientBuilder) Date(java.util.Date) LoggerFactory(org.slf4j.LoggerFactory) ElasticSearchAuditDestination(org.apache.ranger.audit.destination.ElasticSearchAuditDestination) AuthSchemes(org.apache.http.client.config.AuthSchemes) KerberosCredentialsProvider(org.apache.ranger.authorization.credutils.kerberos.KerberosCredentialsProvider) Locale(java.util.Locale) Lookup(org.apache.http.config.Lookup) SPNegoSchemeFactory(org.apache.http.impl.auth.SPNegoSchemeFactory) PrivilegedActionException(java.security.PrivilegedActionException) Logger(org.slf4j.Logger) KerberosTicket(javax.security.auth.kerberos.KerberosTicket) RestHighLevelClient(org.elasticsearch.client.RestHighLevelClient) Subject(javax.security.auth.Subject) File(java.io.File) Component(org.springframework.stereotype.Component) MiscUtil(org.apache.ranger.audit.provider.MiscUtil) PropertiesUtil(org.apache.ranger.common.PropertiesUtil) CredentialsProviderUtil(org.apache.ranger.authorization.credutils.CredentialsProviderUtil) CredentialsProvider(org.apache.http.client.CredentialsProvider) HttpHost(org.apache.http.HttpHost) KerberosCredentialsProvider(org.apache.ranger.authorization.credutils.kerberos.KerberosCredentialsProvider) HttpHost(org.apache.http.HttpHost) RestClientBuilder(org.elasticsearch.client.RestClientBuilder) AuthSchemeProvider(org.apache.http.auth.AuthSchemeProvider) SPNegoSchemeFactory(org.apache.http.impl.auth.SPNegoSchemeFactory) KerberosCredentialsProvider(org.apache.ranger.authorization.credutils.kerberos.KerberosCredentialsProvider) CredentialsProvider(org.apache.http.client.CredentialsProvider) File(java.io.File)

Example 7 with Lookup

use of org.apache.http.config.Lookup in project lucene-solr by apache.

the class CloserThread method setupHttpClientForAuthPlugin.

private void setupHttpClientForAuthPlugin(Object authcPlugin) {
    if (authcPlugin instanceof HttpClientBuilderPlugin) {
        // Setup HttpClient for internode communication
        SolrHttpClientBuilder builder = ((HttpClientBuilderPlugin) authcPlugin).getHttpClientBuilder(HttpClientUtil.getHttpClientBuilder());
        // The default http client of the core container's shardHandlerFactory has already been created and
        // configured using the default httpclient configurer. We need to reconfigure it using the plugin's
        // http client configurer to set it up for internode communication.
        log.debug("Reconfiguring HttpClient settings.");
        SolrHttpClientContextBuilder httpClientBuilder = new SolrHttpClientContextBuilder();
        if (builder.getCredentialsProviderProvider() != null) {
            httpClientBuilder.setDefaultCredentialsProvider(new CredentialsProviderProvider() {

                @Override
                public CredentialsProvider getCredentialsProvider() {
                    return builder.getCredentialsProviderProvider().getCredentialsProvider();
                }
            });
        }
        if (builder.getAuthSchemeRegistryProvider() != null) {
            httpClientBuilder.setAuthSchemeRegistryProvider(new AuthSchemeRegistryProvider() {

                @Override
                public Lookup<AuthSchemeProvider> getAuthSchemeRegistry() {
                    return builder.getAuthSchemeRegistryProvider().getAuthSchemeRegistry();
                }
            });
        }
        HttpClientUtil.setHttpClientRequestContextBuilder(httpClientBuilder);
    } else {
        if (pkiAuthenticationPlugin != null) {
            //this happened due to an authc plugin reload. no need to register the pkiAuthc plugin again
            if (pkiAuthenticationPlugin.isInterceptorRegistered())
                return;
            log.info("PKIAuthenticationPlugin is managing internode requests");
            setupHttpClientForAuthPlugin(pkiAuthenticationPlugin);
            pkiAuthenticationPlugin.setInterceptorRegistered();
        }
    }
}
Also used : SolrHttpClientBuilder(org.apache.solr.client.solrj.impl.SolrHttpClientBuilder) CredentialsProviderProvider(org.apache.solr.client.solrj.impl.SolrHttpClientContextBuilder.CredentialsProviderProvider) HttpClientBuilderPlugin(org.apache.solr.security.HttpClientBuilderPlugin) Lookup(org.apache.http.config.Lookup) CredentialsProvider(org.apache.http.client.CredentialsProvider) AuthSchemeRegistryProvider(org.apache.solr.client.solrj.impl.SolrHttpClientContextBuilder.AuthSchemeRegistryProvider) SolrHttpClientContextBuilder(org.apache.solr.client.solrj.impl.SolrHttpClientContextBuilder)

Example 8 with Lookup

use of org.apache.http.config.Lookup in project hbase by apache.

the class TestSpnegoHttpServer method testAllowedClient.

@Test
public void testAllowedClient() throws Exception {
    // Create the subject for the client
    final Subject clientSubject = JaasKrbUtil.loginUsingKeytab(CLIENT_PRINCIPAL, clientKeytab);
    final Set<Principal> clientPrincipals = clientSubject.getPrincipals();
    // Make sure the subject has a principal
    assertFalse(clientPrincipals.isEmpty());
    // Get a TGT for the subject (might have many, different encryption types). The first should
    // be the default encryption type.
    Set<KerberosTicket> privateCredentials = clientSubject.getPrivateCredentials(KerberosTicket.class);
    assertFalse(privateCredentials.isEmpty());
    KerberosTicket tgt = privateCredentials.iterator().next();
    assertNotNull(tgt);
    // The name of the principal
    final String principalName = clientPrincipals.iterator().next().getName();
    // Run this code, logged in as the subject (the client)
    HttpResponse resp = Subject.doAs(clientSubject, new PrivilegedExceptionAction<HttpResponse>() {

        @Override
        public HttpResponse run() throws Exception {
            // Logs in with Kerberos via GSS
            GSSManager gssManager = GSSManager.getInstance();
            // jGSS Kerberos login constant
            Oid oid = new Oid("1.2.840.113554.1.2.2");
            GSSName gssClient = gssManager.createName(principalName, GSSName.NT_USER_NAME);
            GSSCredential credential = gssManager.createCredential(gssClient, GSSCredential.DEFAULT_LIFETIME, oid, GSSCredential.INITIATE_ONLY);
            HttpClientContext context = HttpClientContext.create();
            Lookup<AuthSchemeProvider> authRegistry = RegistryBuilder.<AuthSchemeProvider>create().register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory(true, true)).build();
            HttpClient client = HttpClients.custom().setDefaultAuthSchemeRegistry(authRegistry).build();
            BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY, new KerberosCredentials(credential));
            URL url = new URL(getServerURL(server), "/echo?a=b");
            context.setTargetHost(new HttpHost(url.getHost(), url.getPort()));
            context.setCredentialsProvider(credentialsProvider);
            context.setAuthSchemeRegistry(authRegistry);
            HttpGet get = new HttpGet(url.toURI());
            return client.execute(get, context);
        }
    });
    assertNotNull(resp);
    assertEquals(HttpURLConnection.HTTP_OK, resp.getStatusLine().getStatusCode());
    assertEquals("a:b", EntityUtils.toString(resp.getEntity()).trim());
}
Also used : GSSName(org.ietf.jgss.GSSName) BasicCredentialsProvider(org.apache.http.impl.client.BasicCredentialsProvider) KerberosTicket(javax.security.auth.kerberos.KerberosTicket) HttpGet(org.apache.http.client.methods.HttpGet) KerberosCredentials(org.apache.http.auth.KerberosCredentials) HttpResponse(org.apache.http.HttpResponse) HttpClientContext(org.apache.http.client.protocol.HttpClientContext) Oid(org.ietf.jgss.Oid) SPNegoSchemeFactory(org.apache.http.impl.auth.SPNegoSchemeFactory) Subject(javax.security.auth.Subject) KrbException(org.apache.kerby.kerberos.kerb.KrbException) IOException(java.io.IOException) URL(java.net.URL) GSSCredential(org.ietf.jgss.GSSCredential) HttpHost(org.apache.http.HttpHost) GSSManager(org.ietf.jgss.GSSManager) HttpClient(org.apache.http.client.HttpClient) Lookup(org.apache.http.config.Lookup) Principal(java.security.Principal) Test(org.junit.Test)

Example 9 with Lookup

use of org.apache.http.config.Lookup in project epp.mpc by eclipse.

the class TransportFactoryTest method testHttpClientTransportWin32Support.

@Test
public void testHttpClientTransportWin32Support() throws Exception {
    BundleContext bundleContext = FrameworkUtil.getBundle(TransportFactory.class).getBundleContext();
    Assume.assumeThat(bundleContext.getProperty("osgi.os"), is("win32"));
    HttpContext context = interceptRequest().getInterceptedContext();
    Lookup<?> authRegistry = (Lookup<?>) context.getAttribute(HttpClientContext.AUTHSCHEME_REGISTRY);
    CredentialsProvider credentialsProvider = (CredentialsProvider) context.getAttribute(HttpClientContext.CREDS_PROVIDER);
    assertNotNull(authRegistry);
    Object ntlmFactory = authRegistry.lookup(AuthSchemes.NTLM);
    assertNotNull(ntlmFactory);
    assertEquals("org.apache.http.impl.auth.win.WindowsNTLMSchemeFactory", ntlmFactory.getClass().getName());
    assertNotNull(credentialsProvider);
    List<CredentialsProvider> nestedProviders = listCredentialsProviders(credentialsProvider);
    assertThat(nestedProviders, hasItem(LambdaMatchers.map(x -> x.getClass().getName()).matches("org.apache.http.impl.auth.win.WindowsCredentialsProvider")));
}
Also used : TransportFactory(org.eclipse.epp.internal.mpc.core.util.TransportFactory) ITransportFactory(org.eclipse.epp.mpc.core.service.ITransportFactory) HttpClientTransportFactory(org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransportFactory) FallbackTransportFactory(org.eclipse.epp.internal.mpc.core.util.FallbackTransportFactory) CoreMatchers(org.hamcrest.CoreMatchers) HttpClientCustomizer(org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientCustomizer) HttpClientContext(org.apache.http.client.protocol.HttpClientContext) LambdaMatchers(org.eclipse.epp.mpc.tests.LambdaMatchers) Header(org.apache.http.Header) StatusLine(org.apache.http.StatusLine) Request(org.apache.http.client.fluent.Request) ByteArrayInputStream(java.io.ByteArrayInputStream) Lookup(org.apache.http.config.Lookup) URI(java.net.URI) ServiceUnavailableException(org.eclipse.epp.mpc.core.service.ServiceUnavailableException) HttpRequestInterceptor(org.apache.http.HttpRequestInterceptor) ServiceReference(org.osgi.framework.ServiceReference) ITransport(org.eclipse.epp.mpc.core.service.ITransport) Collection(java.util.Collection) HttpEntity(org.apache.http.HttpEntity) Set(java.util.Set) ServiceUtil(org.eclipse.epp.internal.mpc.core.util.ServiceUtil) HttpRequest(org.apache.http.HttpRequest) BundleContext(org.osgi.framework.BundleContext) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) TransportFactory(org.eclipse.epp.internal.mpc.core.util.TransportFactory) HttpException(org.apache.http.HttpException) ITransportFactory(org.eclipse.epp.mpc.core.service.ITransportFactory) List(java.util.List) HttpGet(org.apache.http.client.methods.HttpGet) BasicHttpContext(org.apache.http.protocol.BasicHttpContext) CredentialsProvider(org.apache.http.client.CredentialsProvider) Dictionary(java.util.Dictionary) ClientProtocolException(org.apache.http.client.ClientProtocolException) HttpClientTransportFactory(org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransportFactory) HttpClientTransport(org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransport) MarketplaceClientCorePlugin(org.eclipse.epp.internal.mpc.core.MarketplaceClientCorePlugin) Matchers(org.mockito.Matchers) ComponentConstants(org.osgi.service.component.ComponentConstants) ServiceHelper(org.eclipse.epp.mpc.core.service.ServiceHelper) FallbackTransportFactory(org.eclipse.epp.internal.mpc.core.util.FallbackTransportFactory) Constructor(java.lang.reflect.Constructor) AuthSchemes(org.apache.http.client.config.AuthSchemes) ArrayList(java.util.ArrayList) Answer(org.mockito.stubbing.Answer) SynchronizedCredentialsProvider(org.eclipse.epp.internal.mpc.core.transport.httpclient.SynchronizedCredentialsProvider) InvocationOnMock(org.mockito.invocation.InvocationOnMock) ChainedCredentialsProvider(org.eclipse.epp.internal.mpc.core.transport.httpclient.ChainedCredentialsProvider) HttpClient(org.apache.http.client.HttpClient) Assume(org.junit.Assume) LinkedHashSet(java.util.LinkedHashSet) Before(org.junit.Before) ServiceRegistration(org.osgi.framework.ServiceRegistration) Matchers(org.hamcrest.Matchers) IOException(java.io.IOException) Test(org.junit.Test) Mockito(org.mockito.Mockito) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) HttpContext(org.apache.http.protocol.HttpContext) HttpResponse(org.apache.http.HttpResponse) ConnectionClosedException(org.apache.http.ConnectionClosedException) Response(org.apache.http.client.fluent.Response) HttpClientBuilder(org.apache.http.impl.client.HttpClientBuilder) Assert(org.junit.Assert) FrameworkUtil(org.osgi.framework.FrameworkUtil) InputStream(java.io.InputStream) BasicHttpContext(org.apache.http.protocol.BasicHttpContext) HttpContext(org.apache.http.protocol.HttpContext) Lookup(org.apache.http.config.Lookup) CredentialsProvider(org.apache.http.client.CredentialsProvider) SynchronizedCredentialsProvider(org.eclipse.epp.internal.mpc.core.transport.httpclient.SynchronizedCredentialsProvider) ChainedCredentialsProvider(org.eclipse.epp.internal.mpc.core.transport.httpclient.ChainedCredentialsProvider) BundleContext(org.osgi.framework.BundleContext) Test(org.junit.Test)

Aggregations

Lookup (org.apache.http.config.Lookup)9 SPNegoSchemeFactory (org.apache.http.impl.auth.SPNegoSchemeFactory)7 Subject (javax.security.auth.Subject)6 KerberosTicket (javax.security.auth.kerberos.KerberosTicket)6 HttpHost (org.apache.http.HttpHost)5 CredentialsProvider (org.apache.http.client.CredentialsProvider)5 Principal (java.security.Principal)4 KerberosCredentials (org.apache.http.auth.KerberosCredentials)4 AuthSchemes (org.apache.http.client.config.AuthSchemes)4 File (java.io.File)3 IOException (java.io.IOException)3 Locale (java.util.Locale)3 StringUtils (org.apache.commons.lang.StringUtils)3 AuthSchemeProvider (org.apache.http.auth.AuthSchemeProvider)3 BasicCredentialsProvider (org.apache.http.impl.client.BasicCredentialsProvider)3 GSSCredential (org.ietf.jgss.GSSCredential)3 GSSManager (org.ietf.jgss.GSSManager)3 GSSName (org.ietf.jgss.GSSName)3 Oid (org.ietf.jgss.Oid)3 URL (java.net.URL)2