2013-08-27 2 views
0

У меня есть 2 сайта sharepoint, на которых установлена ​​одна установка sharepoint. На одном сайте включена поддержка утвержденных утверждений, а у другой - классическая аутентификация. Оба сайта также используют Kerberos.Признаки на основе Sharepoint против классической аутентификации

Я использую ManifoldCF для подключения к этим сайтам, чтобы извлечь весь контент, а также разрешения. Разъем ManifoldCF соединяется с сайтом с включенным классическим auth и работает, как ожидалось. Тем не менее, попытка сканирования сайта, основанного на требованиях, генерирует несанкционированную ошибку 401.

Существует пакет веб-сервисов, поставляемый с ManifoldCF, к которому обращается имя MCPermissions.asmx. Этот файл содержит следующий блок кода, который устанавливает учетные данные пользователя:

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

Этот код доступен через ManifoldCF правильно, но, кажется, его запрос сделал в плагине для /_vti_bin/Permissions.asmx, что является причиной 401 выпуск.

Я попытался установить предварительно определенные учетные данные в приведенном выше коде, используя NetworkCredential («имя пользователя», «пароль», «домен»), но не повезло.

Пример:

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; 

С претензиями проверки подлинности на основе имени пользователя, что я вхожу в ManfoldCF или аутентификации браузера получает изменен из обычного \ формата в формат претензии имени пользователя (например, я: 0 #. ж || /).

Кто-нибудь знает, почему претензии, основанные, будут вызывать проблему 401, где классическая аутентификация отсутствует?

ответ

0

Оказывается, это была ошибка с выпуском ManifoldCF 1.2. Он был исправлен в более новых версиях.

Смежные вопросы