WCF:通过HTTP调用而不是HTTPS传递Kerberos令牌

时间:2011-02-23 12:03:17

标签: wcf http https kerberos

我想通过HTTP调用将Kerberos令牌传递给使用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,以便它使用HTTP URI发送Kerboros令牌。

此致 凯文

1 个答案:

答案 0 :(得分:0)

如果您不想使用HTTPS,则必须将安全模式设置为WebHttpSecurityMode.TransportCredentialOnly。如果您使用WebHttpSecurityMode.Transport,则需要使用HTTPS。