2015-04-10 4 views
5

applicazione Java ha bisogno di accedere a SharePoint 2013 API REST https://msdn.microsoft.com/en-us/library/office/jj860569.aspxautenticazione di base da Java a SharePoint 2013 API REST

preferisce utilizzare l'autenticazione di base:

Ci sono molti esempi di utilizzo l'API REST del sul web ma nessuno sembra avere a che fare con l'autenticazione. Forse mi manca qualcosa di veramente semplice qui.

Questo funziona manualmente tramite POSTMAN: http://tech.bool.se/basic-rest-request-sharepoint-using-postman/ ma richiede di immettere nome utente e password nel browser.

ho provato l'applicazione del presente: HttpClientBuilder basic auth utilizzando

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

Questo si traduce in -> ATTENZIONE: errore di autenticazione NTLM: credenziali non possono essere utilizzati per l'autenticazione NTLM: org.apache.http.auth.UsernamePasswordCredentials

+1

Sembra che avete bisogno di autenticazione NTLM - > https://hc.apache.org/httpcomponents-client-ga/ntlm.html – fateddy

+0

@fateddy Grazie per il collegamento che ha fatto il trucco. –

risposta

6

Grazie a @fateddy che fa il trucco: Ricordarsi di cambiare UsernamePasswordCredentials ("username", "password")); per NTCredentials (,,,);

Usando questo maven dependency:

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

L'autenticazione a SharePoint funziona:

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(); 
    } 
} 
} 

E si finisce con: HTTP/1.1 200 OK

+1

ho cercato la soluzione per autenticare il mio servizio Java con SP2013 Ricerca endpoint ma ho ancora ricevere questo errore: "Il SafeQueryPropertiesTemplateUrl \" La Sa feQueryPropertiesTemplateUrl " {0} " non è un URL valido \" non è un URL valido.. " –

+0

Hai funzionato? Ho ri-eseguito il codice e dovrebbe essere bello andare. Qualcun altro può verificare? –

+1

Sì, finalmente funziona. Io uso WinHttpClients.createDefault(). Ma c'erano anche alcuni problemi con l'installazione e non conosco tutte le cose che i ragazzi IT hanno fatto! –