2013-08-27 3 views
0

2 개의 셰어 포인트 사이트에서 하나의 셰어 포인트 설치가 실행됩니다. 한 사이트에서 소유권 주장 기반을 사용하도록 설정했으며 다른 사이트에서는 고전적 승인을 사용하도록 설정했습니다. 두 사이트 모두 Kerberos를 사용합니다.셰어 포인트 클레임 기반 클래식 인증

저는 ManifoldCF를 사용하여 이러한 사이트에 연결하여 모든 콘텐츠와 사용 권한을 추출합니다. ManifoldCF 커넥터는 클래식 인증이 활성화 된 사이트에 연결하고 예상대로 작동합니다. 그러나 클레임 기반 사이트를 크롤링하려고하면 401 인증되지 않은 오류가 발생합니다.

Mifermissions.asmx라고하는 ManifoldCF와 함께 제공되는 웹 서비스 패키지가 있습니다. 이 파일은 사용자의 자격 증명을 설정하는 코드의 다음 블록이 포함되어이 코드가 제대로 ManifoldCF를 통해 액세스

try 
{ 
    // Only handle requests for "item". Send all other requests to the SharePoint web service. 
    if (objectType.Equals(itemType)) 
    { 
     retVal = GetItemPermissions(objectName); 
    } 
    else 
    { 
     ServicePointManager.ServerCertificateValidationCallback += 
     new RemoteCertificateValidationCallback(ValidateCertificate); 
     using (SPPermissionsService.Permissions service = new SPPermissionsService.Permissions()) 
     { 
      service.Url = SPContext.Current.Web.Url + "/_vti_bin/Permissions.asmx"; 
      service.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
      retVal = service.GetPermissionCollection(objectName, objectType); 
     } 
    } 
} 
catch (SoapException soapEx) 
{ 
    throw soapEx; 
} 
catch (Exception ex) 
{ 
    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("MCPermissions.asmx", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, "Error: "+ex.Message+"; SPContext.Current.Web.Url='"+SPContext.Current.Web.Url+"'", ex.StackTrace); 
    throw RaiseException(ex.Message, "1000", ex.Source); 
} 

을하지만 /_vti_bin/Permissions.asmx에 플러그인에서 만든 자사의 요청이 원인이되는 것으로 보인다 401 문제.

위의 코드에서 NetworkCredential ("username", "password", "domain")을 사용했지만 행운을 사용하지 않고 미리 정의 된 자격 증명을 설정해 보았습니다.

예 : 난 ManfoldCF로 또는 브라우저 인증에 입력 기반 인증 주장은 사용자 이름

string webUrl = SPContext.Current.Web.Url; 
NetworkCredential myCredentials = new NetworkCredential("DOMAIN\\user", "mypassword", "DOMAIN"); 
CredentialCache credCache = new CredentialCache(); 
credCache.Add(new Uri(webUrl), "Negotiate", myCredentials); 
service.Url = webUrl + "/_vti_bin/Permissions.asmx"; 
service.Credentials = credCache; 

는 (청구 범위의 이름 형식으로 일정한 \ 포맷 변경됩니다 예 I : 0 #. w || /).

클레임 기반으로 인해 클래식 인증이 적용되지 않는 401 문제가 발생하는 이유를 아는 사람이 있습니까?

답변

0

이것은 ManifoldCF 1.2 릴리스의 버그였습니다. 최신 버전에서 수정되었습니다.

관련 문제