2017-10-23 9 views
0

PowerShell을 사용하여 SharePoint에 액세스하게되어 기뻤습니다. 그것은 단지 DefinedCredential을 선택했기 때문에 걱정할 필요가 없었습니다. 그건 프로토 타이핑을위한 것이 었습니다.SharePoint 2010 REST Java 인증

그러나 실제 코드는 Java입니다. 이제는 이것에 대해 잘 모르겠습니다.

비록 내가 REST를 호출하더라도, 제대로 인증하지 않으면 SOAP도 실패합니다.

방법 1 : 여기에 NTLM

내가 확실하지 않다 유일한 것은 워크 스테이션 ID입니다. Citrix를 사용하여 VM에 로그인하고 워크 스테이션 ID가 명시 적으로 있습니다. 나는 그것을 사용한다. 반환 (401)

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

반환

내가 어떤 다른 방법을 사용합니까 (401)? 다이제스트? PowerShell의 기본 Credential이 어떻게 작동했는지 모르기 때문에 나는 드로잉 보드로 돌아 왔습니다.

어떻게 조사해야합니까? 나는이 자바 코드에서 몇 가지 기본적인 실수를 저질렀어야한다. 흐름이 올바르지 않습니다. 그건 내 생각이다.

답변

0

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