2015-05-06 22 views
7

Java kullanarak Sharepoint 2013'e dinletme çağrıları yapıyorum. Jersey istirahat istemcisi kullanarak 2013'e nasıl bağlanabilirim?Jersey ile NTLM kimliği doğrulanmış posta isteği nasıl gönderilir?

Not: Şu anda ben apache http bileşenleri ve

Credentials credentials=new NTCredentials(username, password, workstation, domain); 
AuthScope authScope=new AuthScope(AuthScope.ANY); 
CredentialsProvider credsProvider = new BasicCredentialsProvider(); 
credsProvider.setCredentials(authScope,credentials); 
CloseableHttpClient httpclient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); 

Nasıl Jersey çerçevesine bu benimsemeye NTCredentials sınıfını kullanıyorum?

public Response executeRestGet(String user, String pass) { 
    Client client = ClientBuilder.newClient(prepareClientConfig(user, pass)); 
    WebTarget target = client.target("http://localhost/").path("site/_api/xxxxx"); 
    return target.request(HTTP_ACCEPT_JSON).get(); 
} 

private ClientConfig prepareClientConfig(String user, String pass) { 
    ClientConfig clientConfig = new ClientConfig(); 

    CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); 
    //make sure to supply all 4 arguments to the NTCredentials constructor 
    credentialsProvider.setCredentials(AuthScope.ANY, new NTCredentials(user, pass, null, null)); 

    clientConfig.property(ApacheClientProperties.CREDENTIALS_PROVIDER, credentialsProvider); 
    clientConfig.connectorProvider(new ApacheConnectorProvider()); 
    return clientConfig; 
} 

bu yaklaşım gerektirdiğini unutmayın::

+0

Eğer bazı araştırılmış ya da başarmak için çalışıyoruz ne temel ilkelerini anlamaya yapmış olduğu kanıt, bir çözüm oluşturmak için çalıştılar herhangi bir kod kaynağı. İnsanlar ne yapmaya çalıştığınız, neyi denediğiniz, neyi okuduğunuz hakkında biraz daha fazla bilgi edinmeye yardımcı olabilir. Kütüphanelerinizin ve uygulama yapısının/çerçevelerinin versiyonları da yardımcı olacaktır. –

+0

@DanielTung Çalışmamı ekledim –

cevap

2

Aşağıdaki kod Jersey kullanarak istemek doğrulanmış HTTP GET bir NTLM yürütür jersey-apache-connector. Maven Bağımlılık:

<dependency> 
    <groupId>org.glassfish.jersey.connectors</groupId> 
    <artifactId>jersey-apache-connector</artifactId> 
    <version>2.22.2</version> 
</dependency> 
+2

Önerilen çözümü denedim ancak formun bir gönderisini yaparsam: client.target (...). Request(). Post (...) no "Yetkilendirme" başlığı alır isteğime bağlı. Yanlış bir şey mi yapıyorum? – finrod

+0

Sadece, farklı kütüphanelerin hangi sürümlerinin sınıf yolunda olduğuna dikkat etmeliyiz. Şu anda, httpenter kütüphanesine bağlı olan Tika'ya (görünüşte ilgisiz bir kütüphane) bağımlıysam NTLM kırılır. Benim durumumda, "doğru" versiyonun kademeli bağımlılık-çözünürlük ile değiştirildiğini sanıyorum. – aioobe

İlgili konular