Вызов службы WCF Net Tcp из SharePoint на основе утверждений

У меня есть служба 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.

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


person webwires    schedule 03.06.2011    source источник


Ответы (1)


Мы решили это с помощью такого подхода:

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

На мой взгляд, это лучше, чем бесполезное повышение учетных данных SharePoint с помощью RunWithElevatedPrivileges.

person webwires    schedule 06.06.2011