SharePoint 서버에서 호스팅 된 ASP.NET 웹 앱의 SharePoint 2007 NTLM 문제

StackOverflow https://stackoverflow.com/questions/262442

  •  06-07-2019
  •  | 
  •  

문제

SharePoint 2007 상자에 ASP.NET 웹 응용 프로그램을 호스팅하고 있는데, 웹 서비스가 SharePoint로 호출하여 문서 위치 (특히 GetListItems 메소드)를 검색합니다.

이 서비스는 적절한 권한이있는 유효한 SharePoint 계정의 전달 된 자격 증명으로 소비됩니다.

ListServiceWrapper listService = new ListServiceWrapper();

/*Pass credentials to service call object*/
listService.Credentials = new NetworkCredential(spUserName, spPassword, spDomain);

/*Set the Url property of the service for the path to a subsite.*/
listService.Url = ConfigurationManager.AppSettings.Get("rootSite") + "/_vti_bin/lists.asmx";

웹 앱이 내 개발 상자에서 로컬로 실행되면 (동일한 도메인의 SharePoint 사용자) 서비스 호출은 훌륭하게 작동합니다. SharePoint 상자에 배포되면 응용 프로그램이 다음을 반환합니다.

HTTP 상태 401 : 무단으로 요청이 실패했습니다.

SharePoint 상자의 웹 앱의 앱 풀 사용자를 공인 SharePoint 사용자로 변경하려고했지만 여전히 운이 없었습니다. SharePoint 인증을 NTLM 대신 Kerberos로 변경하면 문제가 해결 될 것입니다. 불행히도 그것은 여기서 옵션이 아닙니다. 이것은 아마도 NLTM 더블 홉 문제와 관련이 있습니까?

도움이 되었습니까?

해결책

예, 이것은 이중 홉 문제와 관련이 있습니다.
NTLM에서는 원격 서비스에 인증 할 수 없습니다. 당신이 말했듯이, 다른 서비스에 자격 증명을 위임하려면 Kerberos가 필요합니다.

시도 할 수있는 옵션 :

  • Kerberos로 전환하십시오. 이것은 올바른 솔루션이지만 모든 SPN을 생성하고 포트 88이 열려 있는지 확인 해야하는 것은 쉽지 않습니다.
  • SharePoint 상자에 ASP.NET 응용 프로그램을 설치하고 활성화합니다. DisableloopbackCheck
  • 서비스 계정을 사용하여 SharePoint에 로그인하십시오. 이 경우 SharePoint는 사용자 계정에서 실행되지 않으므로 보안을 직접 처리해야합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top