SharePoint 2010 REST Java 身份验证

SharePoint 2010 REST Java authentication

我很高兴使用 PowerShell 访问 SharePoint。它只是选择了 -DefaultCredential,我不必为此担心。那是为了制作原型。

但我的实际代码是Java。现在我对此完全不确定。

即使我进行 REST 调用,如果我没有正确验证,即使 SOAP 也会失败。

方法一:NTLM

这里我唯一不确定的是工作站ID。我使用 Citrix 登录到 VM,并且有一个明确的工作站 ID。我用那个。 Returns401.

        DefaultHttpClient client = new DefaultHttpClient();

        HttpGet request = new HttpGet("http://teams.host.com/_vti_bin/listdata.svc/");

        NTCredentials credentials = new NTCredentials("user", 'pass', "workstation", "Domain");

        client.getCredentialsProvider().setCredentials(new AuthScope("teams.host.com",80), credentials);

        HttpResponse response = client.execute(request);

方法 2:基本身份验证。

        HttpGet request = new HttpGet("http://teams.host.com/_vti_bin/listdata.svc/");

        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();

        credentialsProvider.setCredentials(AuthScope.ANY, 
                                           new UsernamePasswordCredentials("user", "password"));
        CloseableHttpClient httpClient = 
                    HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build();


        HttpResponse response = httpClient.execute(request);

Returns401.

我还使用什么其他方法?消化 ?由于我不知道 PowerShell 中的 -DefaultCredential 是如何工作的,所以我回到了绘图板。

我该如何调查?我一定是在这段 Java 代码中犯了一些基本错误。流量不对。这是我的假设。

因此,这是从 Apache HttpClient 连接到 SharePoint 2010 的代码。工作站 ID 是我使用 Citrix XenDesktop 登录 Windows 机器时使用的 ID。我能够获得我的 REST Get 请求的结果。

这使用 NTLM 身份验证。

    DefaultHttpClient client = new DefaultHttpClient();

    HttpGet request = new HttpGet("http://teams.host.com/_vti_bin/listdata.svc/");

    NTCredentials credentials = new NTCredentials("user", 'pass', "workstation", "Domain");

    client.getCredentialsProvider().setCredentials(new AuthScope("teams.host.com",80), credentials);

    HttpResponse response = client.execute(request);