帮助! :)我没有试图让下面的工作问题结束(提前道歉,如果我不使用精确的正确的术语):)使用带WCF通道和Weblogic服务的SAML2令牌
我需要一个.NET Web应用程序(客户端)进行通信Weblogic Web服务使用SAML 2策略进行保护。有一些限制,我需要使用.NET 3.5/4,因此我使用WIF(带扩展)与配置为生成SAML2令牌的ADFS2协同工作。
网站 - > adfs2 - > SAML2标志位是工作的罚款,到目前为止 - 我肯定通过获得令牌。
附加(1) - Weblogic服务必须使用SAML2策略来实现发件人确认方法,尽管默认情况下ADFS 2提供了承载,但在我们通过线路发送令牌之前,我能够操纵SAML断言到服务。
其他(2) - 的原因很多,web服务不通过SSL达到和basicHttpBinding的是我唯一的选择。
现在的问题 ..我只是不能使用Weblogic以这样的方式为在发送请求令牌通信(任何登录尝试返回一个神谕“一般的Web服务安全性的错误”,因为那里是没有请求中的有效安全头)。首选的方法是通过WCF,使用通道工厂 - 下面的代码是什么,我已经尝试了粗略的例子 - claimsidentity /令牌的东西是从与WIF扩展的东西来了代码示例采取:
IClaimsIdentity identity = Thread.CurrentPrincipal.Identity as IClaimsIdentity;
Saml2SecurityToken token = identity.BootstrapToken as Saml2SecurityToken;
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.None;
binding.Security.Transport.ClientCredentialType = HttpClientCredntialType.None;
EndpointAddress address = new EndpointAddress("http://someaddress");
ChannelFactory<weblogicService.MyService> factory = new ChannelFactory<weblogicService.MyService>(binding,address);
factory.ConfigureChannelFactory<weblogicService.MyService>();
factory.Credentials.SupportInteractive = false;
weblogicService.MyService proxy = factory.CreateChannelWithIssuedToken<weblogicService.MyService>(token)
proxy.DoSomething();
在以下职位的答案(和其他地方我已经能找到): WCF and WebLogic SAML interop
..是我在做什么 - 但能否通过实现客户观看使用Wireshark或者交通MessageInspector并在“BeforeSendRequest”中查看请求,我看不到任何标记的符号(并且请求被拒绝作为结果编辑)。
另外,如果我操纵令牌包括寄件人先天不足,或只是离开它,因为它本来也没关系。
附加(3):如果我不使用ADFS2/SAML/WIF/WCF等,我已经能够成功地与Weblogic服务进行通信,而是通过更基本的WSE2.0/3.0 Web引用的方法(即创建SoapRequest,用户名标记等)
这问题,就是在没有用户交互提供有效的用户名和密码。换句话说,保持“SSO方法”,而不必实现Forms Authentication(或等效)以每次获取用户证书。似乎没有任何明显的方式使用由ADFS和WSE生成的SecurityToken要么..
任何人都可以帮助摆脱一些光?为什么WCF通道工厂使用提供的令牌不能正常工作,即在调试时没有有效令牌的标志,并且Weblogic肯定没有收到有效的SAML令牌。
我也看着去CustomMessageEncoder路线,并将SAML Assertion添加到SOAP标头中,但是从我已经能够发现的情况来看,它确实不应该这么困难。 WCF中的东西坏了吗?
Hello Mac。关于您的第三点(附加(3)),也许我可以建议您采取以下解决方法:如果您可以在.NET客户端中获得用户凭据,请通过“Authorization:Basic encodedCredentials”标题将它们包含在HTTP请求中。我知道这不是最好的方法,但... – Gaucho 2013-03-22 08:19:11
嗨,谢谢你的回复。额外的(3)实际上是最后的手段,因为需要避免让用户在登录网站时输入他们的凭证。真正令人头疼的是,SAML2/Channelfactory方法*可能*工作,但它不是:(可能还有其他基本的HTTP绑定设置或我可以使用的自定义行为,但我不确定它们会是什么样的。 – 2013-03-22 09:08:40
好吧,它看起来是导致我的问题的因素的组合,不仅仅是目标Web服务的配置所施加的限制,目前无法改变 - 返回到绘图板;) – 2013-03-27 13:42:10