2015-04-10 19 views
5

aplikację Java potrzebuje dostępu do SharePoint 2013 REST API https://msdn.microsoft.com/en-us/library/office/jj860569.aspxpodstawowego uwierzytelniania z JAVA do SharePoint 2013 REST API

wolą używać uwierzytelnianie podstawowe:

Istnieje wiele przykładów z wykorzystaniem API REST udostępnienia w internecie ale żaden nie wydaje się zajmować uwierzytelnianiem. Może brakuje mi czegoś naprawdę prostego tutaj.

To działa ręcznie poprzez POSTMAN: http://tech.bool.se/basic-rest-request-sharepoint-using-postman/ , ale wymaga ode mnie podania nazwy użytkownika i hasła w przeglądarce.

Próbowałem realizacji to: HttpClientBuilder basic auth użyciu

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.4.1</version> 
</dependency> 

Powoduje to -> UWAGA: błąd uwierzytelniania NTLM: Poświadczenia nie mogą być wykorzystywane do uwierzytelniania NTLM: org.apache.http.auth.UsernamePasswordCredentials

+1

Wygląda jak trzeba NTLM uwierzytelniania - > https://hc.apache.org/httpcomponents-client-ga/ntlm.html – fateddy

+0

@fateddy Dzięki za link, który załatwił sprawę. –

Odpowiedz

6

Dzięki @fateddy, że to możliwe: Pamiętaj, aby wyłączyć UsernamePasswordCredentials ("nazwa użytkownika", "hasło")), dla NTCredentials (,,,);

Stosując ten maven dependency:

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.4.1</version> 
</dependency> 

Uwierzytelnianie do SharePoint działa:

public class SharePointClientAuthentication { 

public static void main(String[] args) throws Exception { 
    CredentialsProvider credsProvider = new BasicCredentialsProvider(); 
    credsProvider.setCredentials(
      new AuthScope(AuthScope.ANY), 
      new NTCredentials("username", "password", "https://hostname", "domain")); 
    CloseableHttpClient httpclient = HttpClients.custom() 
      .setDefaultCredentialsProvider(credsProvider) 
      .build(); 
    try { 
     HttpGet httpget = new HttpGet("http://hostname/_api/web/lists"); 

     System.out.println("Executing request " + httpget.getRequestLine()); 
     CloseableHttpResponse response = httpclient.execute(httpget); 
     try { 
      System.out.println("----------------------------------------"); 
      System.out.println(response.getStatusLine()); 
      EntityUtils.consume(response.getEntity()); 
     } finally { 
      response.close(); 
     } 
    } finally { 
     httpclient.close(); 
    } 
} 
} 

I skończyć z: HTTP/1.1 200 OK

+1

Próbowałem swoje rozwiązanie do uwierzytelniania moją usługę Java z SP2013 Search punktu końcowego, ale nadal ten błąd: „The SafeQueryPropertiesTemplateUrl \” Sa feQueryPropertiesTemplateUrl " {0} " nie jest prawidłowy adres URL \”nie jest poprawnym adresem URL.. " –

+0

Czy to działa? Ponownie uruchomiłem kod i powinno być dobrze. Czy ktoś inny może to zweryfikować? –

+1

Tak, w końcu działa. Używam WinHttpClients.createDefault(). Ale były też problemy z instalacją i nie wiem wszystkiego, co zrobili faceci IT! –

Powiązane problemy