2015-04-10 29 views
5

ứng dụng Java cần truy cập vào SharePoint 2013 REST API https://msdn.microsoft.com/en-us/library/office/jj860569.aspxxác thực BASIC từ JAVA để SharePoint 2013 REST API

có thích sử dụng xác thực BASIC:

Có rất nhiều ví dụ về cách sử dụng của api còn lại trên web nhưng dường như không có vấn đề gì với việc xác thực. Có lẽ tôi đang thiếu một cái gì đó thực sự đơn giản ở đây.

Thao tác này thủ công qua POSTMAN: http://tech.bool.se/basic-rest-request-sharepoint-using-postman/ nhưng yêu cầu tôi nhập tên người dùng và mật khẩu trong trình duyệt.

tôi đã cố gắng thực hiện điều này: HttpClientBuilder basic auth sử dụng

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

Điều này dẫn đến -> Chú ý: NTLM lỗi xác thực: Thông tin đăng nhập không thể được sử dụng để xác thực NTLM: org.apache.http.auth.UsernamePasswordCredentials

+1

Hình như bạn cần NTLM auth - > https://hc.apache.org/httpcomponents-client-ga/ntlm.html – fateddy

+0

@fateddy Cảm ơn bạn đã liên kết với mẹo đó. –

Trả lời

6

Cảm ơn @fateddy thực hiện thủ thuật: Hãy nhớ tắt Tên người dùngPasswordCredentials ("tên người dùng", "mật khẩu")) cho NTCredentials (,,,);

Sử dụng này maven dependency:

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

Các xác thực để SharePoint hoạt động:

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

Và bạn kết thúc với: HTTP/1.1 200 OK

+1

tôi đã cố gắng giải pháp của bạn để xác thực dịch vụ Java của tôi với SP2013 Tìm kiếm thiết bị đầu cuối nhưng tôi vẫn nhận được lỗi này: "The SafeQueryPropertiesTemplateUrl \" Các Sa feQueryPropertiesTemplateUrl " {0} " không phải là một URL hợp lệ \" không phải là một URL hợp lệ.. " –

+0

Bạn có làm cho nó hoạt động không? Tôi chạy lại mã và nó nên được tốt để đi. Có ai khác có thể xác minh không? –

+1

Vâng cuối cùng nó cũng hoạt động. Tôi sử dụng WinHttpClients.createDefault(). Nhưng cũng có một số vấn đề với quá trình cài đặt và tôi không biết tất cả những thứ mà các chàng trai CNTT đã làm! –

Các vấn đề liên quan