所以我会第一个承认我对WS-Security内部知之甚少。我有一个SOAP服务工厂,如下所示。将此服务与内部仅测试.NET客户端一起使用时(通过svcutil.exe +自动生成的WSDL使用自动生成的.cs代理类)一切正常。我可以在第5个“实际”(加密)SOAP请求/响应之前看到前4个安全SOAP请求 - 响应握手对。我一般都了解安全性,但希望我知道有关此特定握手的详细信息 - 我猜他们正在进行密钥交换?
无论如何,部分是因为
我在想我应该通过HTTPS + HTTP基本身份验证进行SOAP交换。 所以问题可以归结为
上面的跟进:如何将服务工厂配置为推荐设置?毋庸置疑,我希望远离Windows认证,这在互联网环境中毫无意义......
public class SoapServiceHostFactory : ServiceHostFactory
{
private Type serviceInterfaceType;
public SoapServiceHostFactory(Type serviceInterfaceType)
{
this.serviceInterfaceType = serviceInterfaceType;
}
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses);
ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
// Enable metadata
if (smb == null)
{
smb = new ServiceMetadataBehavior();
host.Description.Behaviors.Add(smb);
}
smb.HttpGetEnabled = true;
// Enable debugging for service
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
if (sdb == null)
{
sdb = new ServiceDebugBehavior();
host.Description.Behaviors.Add(sdb);
}
sdb.IncludeExceptionDetailInFaults = true;
// SOAP Security configuration
WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Transport;
host.AddServiceEndpoint(serviceInterfaceType, myBinding, "");
return host;
}
}
答案 0 :(得分:5)
您会发现SSL + Basic Auth比WS-Security更具互操作性。
如果您只是进行点对点集成,那么SSL将是确定的方法,如果您有更复杂的多跳,多方集成,那么您可能需要使用WS-强制实施安全