Подключайтесь и проходите аутентификацию в SharePoint с помощью WCF - PullRequest
12 голосов
/ 02 июня 2009

Я схожу с ума с этим и не могу найти приличную информацию в любом месте ..

Существует много информации о подключении к веб-службам SharePoint 3.0 с помощью имитации WCF и Ntlm. Однако когда клиент, обращающийся к службам SharePoint, удален от сети SharePoint и должен пройти проверку подлинности, как лучше всего настроить и передать учетные данные службе SharePoint.

Могу ли я указать имя пользователя и пароль Windows, локальные для поля SharePoint внутри servicemodel.config. Наш экземпляр SharePoint работает автономно за пределами домена, к которому он обращается. Поэтому олицетворение не имеет значения, так как пользователей домена не существует в поле sharepoint.

Я пробовал много комбинаций, таких как следующие коды ... однако я неоднократно получал исключения, такие как:

"HTTP-запрос не авторизован с помощью схемы аутентификации клиента 'Anonymous'. Заголовок аутентификации, полученный от сервера, был 'NTLM, Basic realm =" wss.internaldev.local "'.

Может ли кто-нибудь привести пример подключения к «удаленной» веб-службе SharePoint с учетными данными Windows?

ListsSoapClient proxy = new ListsSoapClient();

proxy.ClientCredentials.Windows.ClientCredential.UserName = "admin_user";
proxy.ClientCredentials.Windows.ClientCredential.Password = "admin_password";
proxy.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Identification;

listItems = proxy.GetListItems(...);

proxy.Close();

Примеры переплета:

<security mode="TransportCredentialOnly">
  <transport clientCredentialType="Windows" proxyCredentialType="None" />
</security>

или ..

<security mode="TransportCredentialOnly">
  <transport clientCredentialType="Ntlm" />
</security> 

поведение:

<behavior name="behavior_WSS">
  <clientCredentials>
    <windows allowedImpersonationLevel="Impersonation" allowNtlm="true" />
  </clientCredentials>
</behavior>

или

    <windows allowedImpersonationLevel="Delegation" allowNtlm="true" />

1 Ответ

1 голос
/ 04 июня 2009

Вы пробовали то, что предлагается здесь ?

например, в коде:

proxy.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonation.Impersonate;
// AllowNtlm = false;
...