日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

WCF分布式安全开发实践(9):消息安全模式之Windows身份验证:Message_Windows_NetTcpBinding...

發布時間:2023/12/20 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WCF分布式安全开发实践(9):消息安全模式之Windows身份验证:Message_Windows_NetTcpBinding... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天繼續WCF分布式安全開發實踐(9):消息安全模式之Windows身份驗證:Message_Windows_NetTcpBinding。本文介紹的內容主要是:主要是消息安全模式的Windows身份驗證方式,基于NetTcpBinding綁定協議的實現過程。主要內容:基本概念,服務端配置、客戶端配置、總結。?? Windows 域驗證的原理在WCF分布式安全開發實踐(4):傳輸安全模式之Windows身份驗證:Transport_Windows_NetTcpBinding?有簡單介紹。? 這里就不在重復。
【1】消息安全模式之NetTcpBinding客戶端身份驗證:
?????? 消息安全模式之NetTcpBinding客戶端身份驗證不需要服務器證書。這里的客戶端和服務器的驗證由DC來完成。 這里使用TCP協議。建議安全上下文以后,使用共享安全上下文對SOAP消息進行加密和簽名。但是采用Windows身份驗證。也就是客戶端提供Windows域賬號和密碼才可以訪問此服務。 1.身份驗證(服務器):Windows DC驗證服務身份。?
2.身份驗證(客戶端):客戶端使用Windows域賬戶進行身份驗證 WCF消息安全模式之Windows客戶端身份驗證的架構如下: 客戶端建立TLS安全上下文以后,會使用商定的密碼對消息簽名,保證數據的安全和機密性,消息簽名放置被篡改。
?? 這里客戶端提供的是有效的Windows域賬號和密碼,進行驗證。服務器也在Windows域中。不需要證書。新啟用端口8003。
【3】服務端配置:
???服務器證書配置完成以后,我們來配置服務端相關的文件,這里簡單。也可以使用代碼來完成。
??? (1)服務類定義:
??? 重復使用以前定義的服務類代碼。 這里服務類就一個方法就是根據客戶端的調用參數name來打印調用時間,代碼如下: //1.服務契約
????[ServiceContract(Namespace?=?"http://www.cnblogs.com/frank_xl/")]
????
public?interface?IWCFService
????{
????????
//操作契約
????????[OperationContract]
????????
string?SayHello(string?name);

????}
????
//2.服務類,繼承接口。實現服務契約定義的操作
????public?class?WCFService?:?IWCFService
????{
????????
//實現接口定義的方法
????????public?string?SayHello(string?name)
????????{
????????????Console.ForegroundColor?
=?ConsoleColor.Yellow;
????????????Console.WriteLine(
"Hello!?{0},Calling?at?{1}?",?name,?DateTime.Now.ToLongTimeString());
????????????
return?"Hello!?"?+?name;
????????}
????}
(2)消息安全模式配置:
?????? 使用消息安全模式,采用客戶端Windows身份驗證策略,Message安全模式下的Windows驗證方式配置信息如下: ????<bindings>
??????
<netTcpBinding>
??????
<binding?name="BindingConfigration">
????????
<security?mode="Message">
??????????
<transport?clientCredentialType="None"??protectionLevel="None"/>
??????????
<message?clientCredentialType="Windows"/>
????????
</security>
??????
</binding>
????
</netTcpBinding>
????
</bindings>
這里允許啟用安全協商和建立安全上下文。這個配置要應用到服務的終結點配置上。才會生效。
??? (3)證書使用:
??? 這里不需要使用證書??蛻舳撕头掌鞫硕即嬖谟赪indows域控制器內,由DC提供驗證。和傳輸安全的Windows驗證一樣。WCF分布式安全開發實踐(4):傳輸安全模式之Windows身份驗證:Transport_Windows_NetTcpBinding?。
????(4)這里我們不需要使用Tcp傳輸協議,直接配置即可,服務終結點的配置信息如下: <service?behaviorConfiguration="WCFService.WCFServiceBehavior"?name="WCFService.WCFService"?>
????????
<endpoint?
??????????address
="WCFService"?
??????????binding
="netTcpBinding"?
??????????bindingConfiguration
="BindingConfigration"
??????????contract
="WCFService.IWCFService">
??????????
<identity>
????????????
<dns?value="computer"/>
??????????
</identity>
????????
</endpoint>
????????
<endpoint?address="mex"?binding="mexTcpBinding"?contract="IMetadataExchange"?/>
????????
<host>
??????????
<baseAddresses>
????????????
<add?baseAddress="net.tcp://localhost:8003/"/>
??????????
</baseAddresses>
????????
</host>
??????
</service>
????
</services>
????
<behaviors>
??????
<serviceBehaviors>
????????
<behavior?name="WCFService.WCFServiceBehavior">
??????????
<serviceMetadata?httpGetEnabled="false"?/>
??????????
<serviceDebug?includeExceptionDetailInFaults="false"?/>
????????
</behavior>
??????
</serviceBehaviors>
????
</behaviors> 我們的服務元數據終結點使用基地址:net.tcp://localhost:8003/。 【4】客戶端配置:
??? 這個過程和之前的安全模式添加服務引用的方式一樣,參考WCF分布式安全開發實踐(7):消息安全模式之匿名客戶端:Message_None_WSHttpBinding, 添加服務的過程一樣。直接引用。
??? (1)引用元數據:
??? 因為服務的元數據交換節點啟用了tcp協議,我們在客戶端項目添加元數據地址net.tcp://localhost:8003/mex查找服務信息的時候,界面如下:
繼續就會添加完畢服務引用。過程和普通的添加服務元數據引用一樣,會產生客戶端相關代碼文件。輸入命名空間,現在我們點擊Ok。等待完成即可。???
??? (2)配置文件:
??? 客戶端配置文件使用默認設置,主要是安全模式的設置要如下,與服務端匹配。使用傳輸安全是設置None方式。消息安全是Windows。代碼如下:
<system.serviceModel>
????????
<bindings>
????????????
<netTcpBinding>
??????????????
<binding?name="NetTcpBinding_IWCFService"?>
????????????????
<security?mode="Message">
??????????????????
<transport?clientCredentialType="Windows"?protectionLevel="EncryptAndSign"?/>
??????????????????
<message?clientCredentialType="Windows"?/>
????????????????
</security>
??????????????
</binding>
????????????
</netTcpBinding>
????????
</bindings>
????????
<client>
????????????
<endpoint?address="net.tcp://localhost:8003/WCFService"?binding="netTcpBinding"
????????????????bindingConfiguration
="NetTcpBinding_IWCFService"?contract="ClientProxy.IWCFService"
????????????????name
="NetTcpBinding_IWCFService">
????????????????
<identity>
????????????????????
<dns?value="computer"?/>
????????????????
</identity>
????????????
</endpoint>
????????
</client>
????
</system.serviceModel> (3)測試代碼:
????? 我們這里就直接生成客戶端代理類的實例來調用服務進行測試。這里客戶端在調用服務以前,?? 客戶端要提供Windows賬號和密碼,還有域。然后才能通過客戶端代理來調用WCF服務。代碼如下: ////HTTP?WSHttpBinding_IWCFService1
????????????WCFClient.ClientProxy.WCFServiceClient?wcfServiceProxy?=?new?WCFClient.ClientProxy.WCFServiceClient("NetTcpBinding_IWCFService");
????????????
//通過代理調用SayHello服務
????????????string?sName?=?"Frank?Xu?Lei?Messaage?Windows?NetTcpBinding";
????????????
string?sResult?=?string.Empty;
????????????wcfServiceProxy.ClientCredentials.Windows.ClientCredential.UserName?
=?"FrankXuLei";
????????????wcfServiceProxy.ClientCredentials.Windows.ClientCredential.Password?
=?"00000000";
????????????wcfServiceProxy.ClientCredentials.Windows.ClientCredential.Domain?
=?"frankxulei.com";
????????????sResult?
=?wcfServiceProxy.SayHello(sName);
????????????Console.WriteLine(
"Returned?Result?is?{0}",?sResult);
????????????
//For?Debug
????????????Console.WriteLine("Press?any?key?to?exit");
????????????Console.ReadKey();
(4)測試結果:
???啟動宿主程序,然后啟動客戶端程序,當我們提供了有效的Windows域賬號和密碼的時候,稍作等待,客戶端成功調用服務,宿主打印的消息。如圖:
【5】總結
??? ?Windows Communication Foundation (WCF) 服務和客戶端。WCF安全機制都是依賴現有的安全體系和框架來完成的。Windows Server 2003系統使用域名服務(DNS)查詢定位最近的可用域控制器。該域控制器則會在用戶登錄期間對該用戶起首選KDC的作用。如果首選KDC失效,則Windows 2003 Server系統將確定由另一個KDC提供驗證。
?? (1)服務器不需要 X.509 證書,這里是借助DC來實現服務器身份證明。
?? (2)綁定設置為 Message 安全模式,客戶端憑據類型設置為?Windows。
???(3)初始協商完畢以后,建立共享安全上下文,這里使用商定的加密算法對SOAP消息進行加密和簽名。
???(4)這里的互操作行僅僅限制在WCF平臺上的客戶端和服務端的安全驗證。
?? (5)這里客戶端調用WCF服務以前要提供提供了有效的Windows域賬戶和密碼,和Transport安全模式的Windows方式有差別,這里使用的是消息安全,客戶端身份驗證使用的是Windows域服務器
?? (6)參考代碼:/Files/frank_xl/7.3.WCFServiceSecurityDemoFrankXuLei_Message_Windows_NetTcpBinding.rar
參考文章:
1.WCF分布式安全開發實踐(4):傳輸安全模式之Windows身份驗證:Transport_Windows_NetTcpBinding
2.WCF分布式安全開發實踐(7):消息安全模式之匿名客戶端:Message_None_WSHttpBinding?
3.http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/e1aa7bea-90d8-41e6-b91b-7addba44f8e3
4.WSE3.0構建Web服務安全(2):非對稱加密、公鑰、密鑰、證書、簽名的區別和聯系以及X.509 證書的獲得和管理,具體5.http://msdn.microsoft.com/en-us/library/ms729709.aspx



本文轉自 frankxulei 51CTO博客,原文鏈接:http://blog.51cto.com/frankxulei/320371,如需轉載請自行聯系原作者




總結

以上是生活随笔為你收集整理的WCF分布式安全开发实践(9):消息安全模式之Windows身份验证:Message_Windows_NetTcpBinding...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。