문제

동일한 팜에 두 개의 SharePoint 응용 프로그램이 있습니다.

첫 번째는 NTLM 공급자를 사용하여 클래식 Windows 인증을 사용하고 있습니다.

Windows 인증 공급자 ( NTLM 도) 만 사용하여 2 번째는 클레임 인증 을 사용하고 있습니다.

우리는 또한 Java 응용 프로그램 (실제로 Liferay 플러그인이지만 범위가 끊어집니다).이 응용 프로그램은 SharePoint 응용 프로그램에서 콘텐츠를 잡아야합니다.

이것은 첫 번째 응용 프로그램에서 작동하지만 두 번째 응용 프로그램은 아닙니다 ( 클레임을 가진 것은 ).

그래서 내 질문은 다음과 같습니다. 클레임 인증을 사용하는 경우 NTLM 인증 공급자를 사용하면 소비 응용 프로그램의 전제 조건이란 무엇입니까?

도움이 되었습니까?

해결책

우리는 마침내 고객 라이브러리를 변경하는 것으로 구성된 해결책을 발견했습니다.

우리는 특히 여기에 설명 된 구성 요소를 사용합니다 : 지원JCIFS를 사용하여 Apache HttpClient가있는 NTLMV2 .

우리가 사용한 샘플 코드 :

QueryServiceStub queryServiceStub = new QueryServiceStub("SHARE_POINT_ASMX_URL");
List authPrefs = new ArrayList(1);
authPrefs.add(AuthPolicy.NTLM);
AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, JCIFS_NTLMScheme.class);
HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
List<String> authScheme = new ArrayList<String>();
authScheme.add(HttpTransportProperties.Authenticator.NTLM);
auth.setUsername("USERNAME");
auth.setPassword("PASSWORD");
auth.setDomain("DOMAIN");
auth.setHost("SHAREPOINT_HOSTNAME");
auth.setAuthSchemes(authScheme);
queryServiceStub._getServiceClient().getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT, "true");
queryServiceStub._getServiceClient().getOptions().setProperty(HTTPConstants.AUTHENTICATE, auth);
List<Header> headers = new ArrayList<Header>();
Header header = new Header();
header.setName("X-FORMS_BASED_AUTH_ACCEPTED");
header.setValue("f");
headers.add(header);
queryServiceStub._getServiceClient().getOptions().setProperty(HTTPConstants.HTTP_HEADERS, headers);
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top