帮助! :)我在试图让以下工作无法解决问题(如果我没有使用正确的术语,请提前道歉):))
我需要让.NET Web应用程序(客户端)与使用SAML 2策略保护的Weblogic Web服务进行通信。有一些限制我需要使用.NET 3.5 / 4,因此我使用WIF(带扩展名)来配置ADFS2以生成SAML2令牌。
网站 - > adfs2 - >到目前为止,SAML2令牌位工作正常 - 我肯定会得到令牌。
附加(1) - Weblogic服务必须使用SAML2策略来实现发送方凭证确认方法,虽然默认情况下ADFS 2提供承载,但我可以在通过电汇发送令牌之前操纵SAML断言服务。
附加(2) - 由于多种原因,未通过SSL访问Web服务,而basicHTTPBinding是我唯一的选择。
现在问题 ..我只是无法与Weblogic通信,以便在请求中发送令牌(任何记录的尝试都会返回oracle“常规Web服务安全性错误”到期到请求中没有有效的安全标头)。首选的方法是通过WCF,使用渠道工厂 - 下面的代码是我尝试过的一个粗略的例子 - claimsidentity / token内容来自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,UserName令牌等。)
问题在于,在没有用户交互的情况下提供有效的用户名和密码。换句话说,保持“SSO方法”,而不必每次都实现表单身份验证(或等效)以获取用户凭据。似乎没有任何明显的方法来使用ADFS生成的SecurityToken和WSE任一..
任何人都可以帮忙解决一些问题吗?为什么WCF通道工厂接近使用提供的令牌根本不起作用,即在调试时没有有效令牌的迹象,当然Weblogic没有收到有效的SAML令牌。
我还查看了CustomMessageEncoder路由,并将SAML Assertion添加到SOAP头中,但是从我能够找到的内容来看,确实不应该这么困难。 WCF中的某些内容是否已损坏?
答案 0 :(得分:0)
端点绑定限制(basicHTTP)不支持SAML2 afaik,ADFS2.0似乎只提供承载令牌并且在事实也是非启动后修改令牌(WIF建议的覆盖不执行此操作似乎按预期工作)最后因为Web服务不在https之后,安全模式为none(这是唯一可以使用的模式)意味着无论如何都没有发送令牌..啊,好吧,回到绘图板!