Вызов службы Net Tcp WCF из SharePoint на основе утверждений - PullRequest
2 голосов
/ 03 июня 2011

У меня есть служба Windows, которая запускает службу привязки WCF Net Tcp. Вся информация о привязке и конечной точке устанавливается программно.

_host.AddServiceEndpoint(typeof(IService), new NetTcpBinding(), serviceName);

В sharepoint я обращаюсь к этой услуге с использованием фабрики каналов:

var channelFactory = new ChannelFactory<IService>(
  new NetTcpBinding(),
  new EndpointAddress(new Uri(connectionUrl))
);
 return channelFactory.CreateChannel();

Этот код работал нормально с использованием SharePoint 2007. Теперь, когда мы обновляем наш сайт SharePoint до 2010 года, новая идентификация утверждений на основе форм не отправляет учетные данные клиента. Я получаю эту ошибку.

System.IdentityModel.Tokens.SecurityTokenValidationException, System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
The service does not allow you to log on anonymously.

Кто-нибудь знает, как заставить фабрику каналов отправлять учетные данные пула приложений? Сейчас я решил свою проблему с помощью RunWithElevatedPrivileges, но я не очень заинтересован в этом, если у меня нет другого выбора.

1 Ответ

2 голосов
/ 06 июня 2011

Мы решили это, используя этот подход:

using(WindowsIdentity.Impersonate(IntPtr.Zero))
{
  var result = channel.ServiceMethod();
}

По моему мнению, это лучше, чем ненужное повышение учетных данных SharePoint с помощью RunWithElevatedPrivileges.

...