У меня есть веб-приложение, которое вызывает службу WCF.
Проблема в том, что для некоторых пользователей я получаю исключение The caller was not authenticated by the service
, в то время как для других это работает. Я не могу понять, почему есть разница. Я хочу добавить, что я использую проверку подлинности Windows.
Код, который у меня есть:
binding = new WSHttpBinding(SecurityMode.Message);
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
binding.Security.Message.NegotiateServiceCredential = true;
binding.Security.Message.EstablishSecurityContext = false;
// create the channel factory for the service proxy
factory = new ChannelFactory<IWCF>(
binding,
new EndpointAddress(
new Uri(
CriptographyService.Decrypt(
ConfigurationSettings.AppSettings["WCF"]
)
),
EndpointIdentity.CreateUpnIdentity(
CriptographyService.Decrypt(
ConfigurationSettings.AppSettings["Identity"]
)
)
)
);
factory.Credentials.Windows.AllowedImpersonationLevel =
TokenImpersonationLevel.Delegation;
// create a channel to the service
return factory.CreateChannel();