Dear Jettro.

Can you help me, how could you do it?
I try to comminicate to Elasticsearch with Shield plugin. This is done when 
I make CURL requests.
Without shield plugin my JAVA code ( Client is same as yours )  works well. 
But after install Shield, and put Shield into maven depencies in my 
application:

<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch-shield</artifactId>
<version>1.0.1</version>
</dependency>

I got strange error, without creating any change in my code:

12:53:23,746 INFO  [org.elasticsearch.plugins] (default task-1) [Honey 
Lemon] loaded [shield], sites []
12:53:23,987 INFO  [org.elasticsearch.transport] (default task-1) [Honey 
Lemon] Using 
[org.elasticsearch.shield.transport.ShieldClientTransportService] as 
transport service, overridden by [shield]
12:53:23,987 INFO  [org.elasticsearch.transport] (default task-1) [Honey 
Lemon] Using 
[org.elasticsearch.shield.transport.netty.ShieldNettyTransport] as 
transport, overridden by [shield]
12:53:24,232 ERROR [org.jboss.as.ejb3.invocation] (default task-1) 
JBAS014134: EJB Invocation failed on component ElasticSearch for method 
public org.elasticsearch.client.Client 
net.***.***.search.ElasticSearch.AuthElasticSearch(java.lang.String,java.lang.String):
 
javax.ejb.EJBException: org.elasticsearch.common.inject.CreationException: 
Guice creation errors:                                                     
                                                                            
                                           

1) A binding to org.elasticsearch.shield.transport.filter.IPFilter was 
already configured at _unknown_.                                           
                                 
  at _unknown_                                                             
                                                                            
                            

2) A binding to org.elasticsearch.shield.transport.ClientTransportFilter 
was already configured at _unknown_.                                       
                               
  at _unknown_                                                             
                                                                            
                            

3) A binding to org.elasticsearch.shield.ssl.SSLService was already 
configured at _unknown_.                                                   
                                    
  at _unknown_                                                             
                                                                            
                            

3 errors                                                                   
                                                                            
                            

My code:

@SuppressWarnings("resource")
public Client AuthElasticSearch(String user, String pass) {

Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", 
"****").put("client.transport.sniff", true)
.put("shield.user", user + ":" + pass).build();
Client client = new TransportClient(settings).addTransportAddress(new 
InetSocketTransportAddress("localhost", 9300));

return client;

}

Both ES versions in Ubuntu and app are 1.4.4
Both SHIELD versions are 1.0.1

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

Thank you.

2015. január 29., csütörtök 0:46:53 UTC+1 időpontban Jettro Coenradie a 
következőt írta:
>
> Never mind, misread the documentation. It seems a node info request  is 
> done first, therefore you need to provide the username password in the 
> client. Than if you want to, you can change the username password for each 
> request that you do.
>
> It works now.
>
> Op woensdag 28 januari 2015 22:12:31 UTC+1 schreef Jettro Coenradie:
>>
>> Hi,
>> trying to get Shield working with a java client. When setting the header 
>> token on the client, there is no problem. But when I try to use the header 
>> of a request there is no succes. I am trying this code, which is almost a 
>> copy of the sample code in the documentation. It does not work, if I 
>> uncomment the line with shield.user, it does work: Any clues on what I 
>> should do are appreciated.
>>
>> package nl.gridshore.dwes.elastic;
>>
>> import org.elasticsearch.action.count.CountResponse;
>> import org.elasticsearch.action.search.SearchResponse;
>> import org.elasticsearch.client.Client;
>> import org.elasticsearch.client.transport.TransportClient;
>> import org.elasticsearch.common.settings.ImmutableSettings;
>> import org.elasticsearch.common.settings.Settings;
>> import org.elasticsearch.common.transport.InetSocketTransportAddress;
>> import org.elasticsearch.common.transport.TransportAddress;
>> import org.elasticsearch.shield.authc.support.SecuredString;
>>
>> import java.util.ArrayList;
>> import java.util.List;
>>
>> import static java.util.stream.Collectors.toList;
>> import static 
>> org.elasticsearch.shield.authc.support.UsernamePasswordToken.basicAuthHeaderValue;
>>
>> public class SecureElastic {
>>     public static void main(String[] args) {
>>         Settings settings = ImmutableSettings.settingsBuilder()
>>                 .put("cluster.name", "jc-play")
>> //                .put("shield.user", "jettro:nopiforme")
>>                 .build();
>>
>>         Client client = new TransportClient(settings)
>>                 .addTransportAddress(new 
>> InetSocketTransportAddress("localhost",9300));
>>
>>         String token = basicAuthHeaderValue("jettro", new 
>> SecuredString("nopiforme".toCharArray()));
>>
>>         SearchResponse searchResponse = 
>> client.prepareSearch("gridshore").putHeader("Authorization", token).get();
>>         long totalHits = searchResponse.getHits().totalHits();
>>
>>         System.out.println(totalHits);
>>     }
>> }
>>
>>
>> The exception:
>> Caused by: org.elasticsearch.shield.authc.AuthenticationException: 
>> missing authentication token for action [cluster:monitor/nodes/info]
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/860e98d4-63a3-4bd7-816b-095405e799a4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to