我们在SiteMinder代理后面的IIS上托管了一个WCF服务(缺少一个更好的术语)。实质上,请求使用http基本身份验证进入https://public.domain.com/SOA/Service.svc的SiteMinder。 SiteMinder验证身份验证,将其剥离并向http://internal.domain/SOA/Service.svc发送请求,无需身份验证。
在查询服务WSDL时会出现两个问题:
我已经能够通过实现IWsdlExportExtension来解决问题#1,该IWsdlExportExtension替换了ExportEndpoint中的url(方法。虽然我还没弄清楚如何解决问题#2。可以有人指出我正确的方向?
谢谢!
答案 0 :(得分:1)
由于在托管服务的地方没有进行身份验证,解决方案是手工制作WSDL文件,然后告诉WCF使用externalmetadatalocation引用它。
答案 1 :(得分:1)
我能够弄清楚这一点。我需要使用customBinding,并提供我自己的IPolicyExportExtension,将其作为IPolicyExportExtension.ExportPolicy()的实现:
void IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context) {
XmlElement elem = doc.CreateElement("http", "BasicAuthentication", "http://schemas.microsoft.com/ws/06/2004/policy/http");
context.GetBindingAssertions().Add(elem);
}