WCF: передача токена Kerboros через HTTP-вызов вместо HTTPS - PullRequest
1 голос
/ 23 февраля 2011

Я хочу передать токен Kerberos через HTTP-вызов на сервер, используя WCF.

У меня есть фрагмент кода, который успешно это делает.Но это работает, только если я делаю запрос к HTTPS URI.

var httpBinding = new WebHttpBinding(WebHttpSecurityMode.Transport) { MaxReceivedMessageSize = Int32.MaxValue };
httpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
httpBinding.Security.Transport.Realm = "MyCompany.com";

var endPoint = new EndpointAddress("https:xxxxxxxx.com/my/service);  // This works
var endPoint = new EndpointAddress("http:xxxxxxxx.com/my/service);   // This does not work

var channelFactory = new ChannelFactory<IMyServiceContract>(httpBinding, endPoint);
channelFactory.Endpoint.Behaviors.Add(new WebHttpBehavior());
_channel = channelFactory.CreateChannel();

_channel.ConsumeService();

Если я делаю запрос через канал, и если конечной точкой является https.Он работает, и я могу убедиться, что маркер Kerberos находится в запросе HTTP.

Если конечной точкой службы является HTTP, выдается ошибка:

System.ArgumentException : The provided URI scheme 'http' is invalid; expected 'https'.
Parameter name: via

Может кто-нибудь сообщить мне, как настроитьWCF, чтобы он отправлял токен Kerboros с HTTP URI.

С уважением, Кевин

1 Ответ

0 голосов
/ 23 февраля 2011

Если вы не хотите использовать HTTPS, вы должны установить режим безопасности на WebHttpSecurityMode.TransportCredentialOnly. Если вы используете WebHttpSecurityMode.Transport, он требует HTTPS.

...