我很努力通過MS SharePoint進行身份驗證來使用它的API。我一直在使用Google和Google一起玩這個問題,但不知何故,我找不到解決方案。迄今爲止最有前途的解決方案是基於這個answer。如何使用MS SharePoint進行身份驗證以將其API用於Java?
我使用的依賴關係:
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>
這是我的代碼:
public static void callRestEasyService() throws Exception {
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(AuthScope.ANY),
new NTCredentials("user", "password", "https://workstation.de", "domain.de"));
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider)
.build();
try {
HttpGet httpget = new HttpGet("https://adress/_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();
}
}
的代碼是相當不言自明,我認爲,它基本上是被鏈接的答案表明正是。我的調查顯示,解決此問題的最佳方式是NTC保證。我也試着像基本驗證了一些其他的替代品,但在所有的情況下,我得到:
HTTP/1.1 401 Unauthorized
我也試過using Samba JCIFS as an alternative NTLM engine。
此外我有點害怕,也許工作站(第三個參數)或域的參數填寫不正確的我。該文檔說:
workstation - 認證請求源自的工作站。本質上,這臺機器的計算機名稱。
所以我嘗試填寫我的機器的名稱,但網絡上的很多示例都建議您使用您嘗試使用的URL進行身份驗證。這對我造成了一些困惑,但是沒有兩種方法可以使它工作。
有誰知道爲什麼這是或有一個可能的解決方案或解決方案,該問題? SharePoint可能會限制通過編程客戶端訪問嗎?據我所知,至少不可能從SharePoint中禁用API。任何想法/想法?