web-dev-qa-db-ja.com

JavaからSharepoint 2013への基本認証REST API

JavaアプリケーションはSharePoint 2013にアクセスする必要がありますREST API https://msdn.Microsoft.com/en-us/library/office/jj860569.aspx

ベーシック認証を使用したいですか:

Webでの残りのAPIの使用例はたくさんありますが、認証を扱っているようには見えません。たぶん、ここには本当に簡単なものが足りない。

これはPOSTMANを介して手動で機能します。 http://tech.bool.se/basic-rest-request-sharepoint-using-postman/ ですが、ユーザー名とパスワードをブラウザーに入力する必要があります。

私はこれを実装しようとしました: HttpClientBuilder basic auth using

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

これにより、->警告:NTLM認証エラー:資格情報をNTLM認証に使用できません:org.Apache.http.auth.UsernamePasswordCredentials

10
Eric Nord

トリックをしてくれた@fateddyに感謝します。NTCredentials(、、、);の場合、UsernamePasswordCredentials( "username"、 "password")););

これを使用する maven依存関係

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

SharePointへの認証は機能します。

import org.Apache.http.client.CredentialsProvider;
import org.Apache.http.auth.AuthScope;
import org.Apache.http.impl.client.BasicCredentialsProvider;
import org.Apache.http.auth.NTCredentials;
import org.Apache.http.impl.client.CloseableHttpClient;
import org.Apache.http.impl.client.HttpClients;
import org.Apache.http.client.methods.HttpGet;
import org.Apache.http.client.methods.CloseableHttpResponse;
import org.Apache.http.util.EntityUtils;

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

そして、あなたは次のようになります:HTTP/1.1 200 OK

9
Eric Nord