幫助! :)我沒有試圖讓下面的工作問題結束(提前道歉,如果我不使用精確的正確的術語):)使用帶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