精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在實際應用中實現WCF用戶密碼認證

開發 開發工具
WCF用戶密碼認證在實際應用中是比較常用的,不過它的實現方法對于剛剛接觸WCF的朋友來說還是比較困難的。在這里就向大家詳細介紹這些知識。

WCF框架是一款功能強大的分布式開發框架。對于初學者來說,可能其中有些功能不太熟悉。這需要我們在不斷的實踐中去慢慢研究這些功能。比如WCF用戶密碼認證的正確使用。#t#

以前我們用WebService做分布式系統的時候,認證是個麻煩的問題,通常的做法是繼承一個SoapHeader,把用戶名和密碼放到里面,每調用一個方法都要把用戶名和密碼傳遞給服務器端來驗證 ,效率相當低,代碼編寫相當的麻煩,而且還不安全!

WCF支持多種認證技術,例如Windowns認證、X509證書、Issued Tokens、用戶名密碼認證等,在跨Windows域分布的系統中,用戶名密碼認證還是比較常用的,要實現用戶名密碼認證,就必須需要X509證書,為什么呢?因為我們需要X509證書這種非對稱密鑰技術來實現WCF在Message傳遞過程中的加密和解密,要不然用戶名和密碼就得在網絡上明文傳遞!詳細說明就是客戶端把用戶名和密碼用公鑰加密后傳遞給服務器端,服務器端再用自己的私鑰來解密,然后傳遞給相應的驗證程序來實現身份驗證。

當然,做個測試程序就沒有必要去申請一個X509數字簽名證書了,微軟提供了一個makecert.exe的命令專門用來生成測試使用的X509證書的,那我們就來建立一個測試用的證書,在cmd下輸入以下命令:

makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=MyServerCert -sky exchange –pe

這個命令的意思就是創建一個測試的X509證書,這個證書放在存儲位置為'Localmachine'的'My'這個文件夾下,證書主題名字叫'MyServerCert',需要更多關于makecert命令的信息請參考MSDN。

證書建立好了,我們就可以編寫代碼了,在VS2008下建立一個解決方案并在上面建立兩個Web項目,一個是'Asp.net Web 應用程序'(客戶端),一個是'WCF服務應用程序'(服務器端),我們先來編寫服務器端代碼,首先我們要編寫自己的WCF用戶密碼認證邏輯,先要在WCF項目上添加引用'System.IdentityModel'然后我們建立一個新的類文件并繼承自'System.IdentityModel.Selectors.UserNamePasswordValidator',然后我們重寫里面的'Validate'方法來實現用戶名密碼認證邏輯。代碼如下;

 

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Text;   
  5. using System.IdentityModel.Selectors;   
  6. using System.IdentityModel.Tokens;   
  7. namespace ServerWcfService.CustomValidators   
  8. {   
  9. public class MyCustomValidator : 
    UserNamePasswordValidator   
  10. {   
  11. /// < summary>   
  12. /// Validates the user name and 
    password combination.   
  13. /// < /summary>   
  14. /// < param name="userName">
    The user name.< /param>   
  15. /// < param name="password">
    The password.< /param>   
  16. public override void Validate
    (string userName, string password)   
  17. {   
  18. // validate arguments   
  19. if (string.IsNullOrEmpty(userName))   
  20. throw new ArgumentNullException("userName");   
  21. if (string.IsNullOrEmpty(password))   
  22. throw new ArgumentNullException("password");   
  23. // check if the user is not xiaozhuang   
  24. if (userName != "xiaozhuang" || password != "123456")   
  25. throw new SecurityTokenException("用戶名或者密碼錯誤!");   
  26. }   
  27. }   
  28. }  

 

上面只是一個簡單的WCF用戶密碼認證,實際應用中用戶名和密碼一般都保存在數據庫中,如果驗證不通過就拋出一個'SecurityTokenException'類型的異常;下一步我們需要配置一下服務端的webConfig文件,我的WebConfig文件Servicemodel配置節如下:

 

  1. < system.serviceModel>   
  2. < bindings>   
  3. < wsHttpBinding>   
  4. < binding name="mySecureBinding">   
  5. < security mode="Message">   
  6. < message clientCredentialType="UserName"/>   
  7. < /security>   
  8. < /binding>   
  9. < /wsHttpBinding>   
  10. < /bindings>   
  11. < services>   
  12. < service behaviorConfiguration=
    "ServerWcfService.Services.MySimple
    ServiceBehavior"
     name="ServerWcfService.
    Services.MySimpleService"
    >   
  13. < endpoint address="" binding=
    "wsHttpBinding" contract="ServerWcfService.
    ServiceContracts.IMySimpleService"
     bindingConfiguration="mySecureBinding">   
  14. < identity>   
  15. < dns value="MyServerCert"/>   
  16. < /identity>   
  17. < /endpoint>   
  18. < endpoint address="mex" binding=
    "mexHttpBinding" contract="IMetadataExchange"/>   
  19. < /service>   
  20. < /services>   
  21. < behaviors>   
  22. < serviceBehaviors>   
  23. < behavior name="ServerWcfService.
    Services.MySimpleServiceBehavior"
    > 
  24. < serviceMetadata httpGetEnabled="true"/>   
  25. < serviceDebug includeExceptionDetailInFaults="false"/>   
  26. < serviceCredentials>   
  27. < serviceCertificate findValue=
    "MyServerCert" x509FindType="FindBySubjectName" 
    storeLocation="LocalMachine" storeName="My"/>   
  28. < userNameAuthentication userNamePassword
    ValidationMode
    ="Custom" customUserName
    PasswordValidatorType
    ="ServerWcfService.
    CustomValidators.MyCustomValidator,ServerWcfService"
    />   
  29. < /serviceCredentials>   
  30. < /behavior>   
  31. < /serviceBehaviors>   
  32. < /behaviors>   
  33. < /system.serviceModel>  

 

加粗的那些是我加上去的或者在默認上修改了的。Bindings節指定了客戶端提供的認證類型為'username'并在endpoint節中指定bianding配置。在dns節中修改原來的localmachine為MyServerCert,當然你也可以修改為別的,這取決于你的證書主題名稱是什么。也就是上面命令中的CN=MyServerCert,接下來我們加入在serviceCredentials配置節,并在里面配置兩個小節,ServiceCertificate節中指定了我們的X509證書的位置,以用來加解密message,usernameAuthentication節中指定了我們自己的WCF用戶密碼認證邏輯。

Sorry,忘了一件事情,就是寫一個測試的服務契約并實現,寫法上和無認證的寫法一樣,如下

  1. ServerWcfService.Service
    Contracts.IMySimpleService:   
  2. [OperationContract]   
  3. string PrintMessage
    (string message);  

 

這樣,服務端的代碼編寫和配置就完成了,生成項目測試一下,頁面顯示服務已生成成功。

接下來我們開始編寫客戶端代碼,先在客戶端引用剛才生成的WCF服務,然后編寫客戶端代碼如下:

 

  1. protected void btnPrint_Click(object 
    sender, EventArgs e)   
  2. {   
  3. TestWCFService.MySimpleServiceClient 
    client = new ClientWeb.TestWCFService.
    MySimpleServiceClient();   
  4. client.ClientCredentials.UserName.
    UserName
     = "xiaozhuang";   
  5. client.ClientCredentials.UserName.
    Password
     = "123456";   
  6. lbMessage.Text = client.PrintMessage
    (txtMessage.Text);   
  7. }  

 

 

如果你有一個真正的X509證書,那么現在的WCF用戶密碼認證代碼就可以正常運行了。但是很不幸,我們的證書是測試用的,我們運行的時候出錯:'X.509 certificate CN=MyServerCert 鏈生成失敗。所使用的證書具有無法驗證的信任鏈。請替換該證書或更改 certificateValidationMode。已處理證書鏈,但是在不受信任提供程序信任的根證書中終止',WCF無法驗證測試證書的信任鏈,那我們要做的就是繞過這個信任驗證,具體做法如下:

先要在Asp.net Web應用程序項目上添加引用'System.IdentityModel'然后我們建立一個新的類文件并繼承自'System.IdentityModel.Selectors.X509CertificateValidator',然后我們重寫里面的'Validate'方法來實現我們自己的X509認證邏輯,代碼如下:

 

  1. using System;   
  2. using System.Configuration;   
  3. using System.IdentityModel.Selectors;   
  4. using System.IdentityModel.Tokens;   
  5. using System.Security.Cryptography.
    X509Certificates;   
  6. namespace ClientWeb.CustomX509Validator   
  7. {   
  8. /// < summary>   
  9. /// Implements the validator for X509
     certificates.   
  10. /// < /summary>   
  11. public class MyX509Validator: 
    X509CertificateValidator   
  12. {   
  13. /// < summary>   
  14. /// Validates a certificate.   
  15. /// < /summary>   
  16. /// < param name="certificate">
    The certificate the validate.< /param>   
  17. public override void Validate
    (X509Certificate2 certificate)   
  18. {   
  19. // validate argument   
  20. if (certificate == null)   
  21. throw new ArgumentNullException
    ("X509認證證書為空!");   
  22. // check if the name of the certifcate matches   
  23. if (certificate.SubjectName.Name != 
    ConfigurationManager.AppSettings["CertName"])   
  24. throw new SecurityTokenValidationException(
    "Certificated was not issued by thrusted issuer");   
  25. }   
  26. }   
  27. }  

 

你可以把Validate方法里面留空讓所有的認證都通過,也可以自己定義認證邏輯,如果認證失敗,就拋出'SecurityTokenValidationException'的異常,然后我們配置一下客戶端的webconfig讓它使用我們自己的X509認證,增加以下的配置節,并在'endpoint'節中指定behaviorConfiguration="myClientBehavior"。

 

  1. < behaviors>   
  2. < endpointBehaviors>   
  3. < behavior name="myClientBehavior">   
  4. < clientCredentials>   
  5. < serviceCertificate>   
  6. < authentication certificateValidationMode=
    "Custom" customCertificateValidatorType=
    "ClientWeb.CustomX509Validator.
    MyX509Validator,ClientWeb"
     />   
  7. < /serviceCertificate>   
  8. < /clientCredentials>   
  9. < /behavior>   
  10. < /endpointBehaviors>   
  11. < /behaviors>  

 

 

OK,客戶端代碼和配置完成,現在你可以運行自己的WCF用戶密碼認證程序了。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-23 10:25:29

2010-03-01 10:45:59

WCF集合類

2010-02-25 17:22:39

WCF服務行為

2010-03-01 13:06:49

WCF繼承

2010-03-02 16:43:46

2017-06-07 10:55:17

VMwareNSX應用

2009-12-21 14:49:27

2010-02-26 10:56:06

WCF Stream

2010-03-02 17:35:20

WCF服務加載

2010-02-22 14:53:17

WCF用戶密碼

2010-02-22 13:28:05

WCF異步調用

2010-02-24 14:05:08

WCF openati

2010-03-01 17:52:03

WCF選擇綁定

2009-11-03 11:03:00

CDN接入技術

2024-02-27 16:27:42

物聯網IOT智能連接

2010-11-25 10:05:22

Visual StudSilverlightWCF

2021-08-28 10:06:29

VueJavascript應用

2010-01-06 15:21:00

軟交換技術

2010-02-26 14:19:03

WCF用戶驗證

2023-09-28 11:42:15

點贊
收藏

51CTO技術棧公眾號

国产一级久久久| 天天干在线影院| 天堂成人在线观看| 久久精品首页| 精品国产一区二区三区久久久狼 | 色呦呦在线视频| 91美女蜜桃在线| 成人网中文字幕| 91浏览器在线观看| 99精品网站| 亚洲激情视频网站| 亚洲精品成人在线播放| 成人黄色动漫| 亚洲视频 欧洲视频| 精品国产一区二区三区久久久久久 | 性生交生活影碟片| 久久一二三四| 九九久久久久99精品| 自拍偷拍视频亚洲| 久久动漫网址| 日韩精品一区二区在线观看| 黄色成人免费看| 性欧美xxx69hd高清| 亚洲欧美区自拍先锋| 日韩亚洲不卡在线| 性生活视频软件| 久久99久久久久久久久久久| 欧美自拍视频在线| 日韩av一二三区| 一区二区三区在线电影| 亚洲性生活视频| 亚洲色图14p| 高潮按摩久久久久久av免费| 在线观看91精品国产麻豆| 男人天堂网视频| 爱搞国产精品| 亚洲国产色一区| 男人天堂新网址| 国产三区在线观看| 国产精品欧美一区喷水| 日韩中文一区| 国产视频网站在线| 国产视频在线观看一区二区三区 | 人人妻人人玩人人澡人人爽| 精品亚洲porn| 国产欧美一区二区三区在线 | 97人人在线视频| 亚洲精品日日夜夜| 青青草影院在线观看| 日本美女在线中文版| 国产精品美女一区二区| 亚洲一区二区自拍偷拍| 色影视在线观看| 国产精品卡一卡二| 在线观看免费91| 黄色网址免费在线观看| 最新中文字幕一区二区三区| 国产又黄又爽免费视频| h网站久久久| 亚洲精品视频一区二区| 久久人妻无码一区二区| 男人天堂亚洲天堂| 亚洲成人免费观看| 国产91在线免费| 国产网站在线| 在线精品视频一区二区三四| 日本成人黄色网| 老司机精品视频网| 91精品国产综合久久精品| 中文字幕乱码在线人视频| 综合中文字幕| 亚洲女人被黑人巨大进入al| 亚洲一级黄色录像| 自拍视频亚洲| 97婷婷大伊香蕉精品视频| 久久国产视频播放| 秋霞影院一区二区| 91在线视频免费| 日本人妻丰满熟妇久久久久久| 成人激情文学综合网| 欧美日韩大片一区二区三区 | 国产精品久久一级| 成人在线观看毛片| av免费不卡| 欧美色图天堂网| 国产成人精品一区二区三区在线观看| 豆花视频一区二区| 有码中文亚洲精品| 麻豆chinese极品少妇| 午夜在线视频观看日韩17c| 国产精品亚洲综合天堂夜夜| 亚洲成人一二三区| 久久亚洲一区二区三区明星换脸 | 欧美人伦禁忌dvd放荡欲情| 91人人澡人人爽| 成人在线免费观看视频| 欧美大片免费看| japanese国产在线观看| 国产精品91xxx| 日本成人三级电影网站| 伊人在我在线看导航| 色综合久久综合| 午夜影院免费版| 精品国产99| 久久久最新网址| 911美女片黄在线观看游戏| 不卡电影一区二区三区| 中文字幕一区二区三区四区五区六区 | 欧美视频国产视频| 久久不卡国产精品一区二区 | 亚洲欧美中文字幕| 亚洲色图综合区| 石原莉奈在线亚洲二区| 99国内精品久久久久久久软件| 国产视频二区在线观看| 午夜精品123| 亚洲av综合色区无码另类小说| 精品视频黄色| 欧美最近摘花xxxx摘花| 午夜精品一二三区| 亚洲欧美日韩在线| 成人在线观看a| 久久亚洲道色| 欧美激情一区二区三区高清视频| 亚洲午夜精品久久久| 久久久久国色av免费看影院| 每日在线观看av| 日韩三级网址| 欧美刺激性大交免费视频| 亚洲视屏在线观看| 久久色在线观看| 18禁免费无码无遮挡不卡网站| aaa国产精品视频| 久久精品中文字幕| 国产精品久久影视| 国产精品久久久久影院老司| 国产xxxxx视频| 一区二区三区韩国免费中文网站| 欧美激情综合亚洲一二区| aaa一区二区| 亚洲人成伊人成综合网小说| 在线看的黄色网址| 91视频精品| 国产精品一区二区3区| √天堂资源地址在线官网| 在线观看av一区| 日本黄色小视频在线观看| 日韩中文欧美在线| 色中色综合成人| 99久久综合国产精品二区| 中文字幕无线精品亚洲乱码一区 | 538任你躁精品视频网免费| 操91在线视频| av在线免费在线观看| 亚洲欧美色综合| 欧美一级片在线免费观看| 亚洲视频一区| 久久久久久久久久久久久久一区| 欧美13videosex性极品| 亚洲天堂av在线免费| 中文字幕日本视频| ㊣最新国产の精品bt伙计久久| 黄色小视频免费网站| 欧美日本中文| 精品久久sese| 日韩欧美精品电影| 色伦专区97中文字幕| 国产ts变态重口人妖hd| 亚洲成在人线免费| 熟妇高潮精品一区二区三区| 日本伊人精品一区二区三区观看方式| 亚洲视频小说| 亚洲2区在线| 欧美一区二区三区……| 91se在线| 亚洲国产成人精品久久久国产成人一区 | 91久久国产婷婷一区二区| 中文字幕中文字幕在线中高清免费版| 日韩精品资源二区在线| 91香蕉在线视频| 日本一二三四高清不卡| 亚洲色图欧美自拍| 野花国产精品入口| 亚洲精品日韩精品| 在线一区二区三区视频| 国产成人精品在线| 91三级在线| 亚洲天堂av图片| 午夜久久久久久久久久| 欧美性黄网官网| 2021亚洲天堂| 国产日韩欧美电影| 91精品国产高清91久久久久久 | 91亚洲国产成人久久精品| 99在线观看视频网站| 人人视频精品| 欧美日韩国产第一页| 精品av中文字幕在线毛片 | 伊人久久久久久久久| 亚洲欧美大片| 99久久99久久精品| 成人看的视频| 九色91国产| 日韩精品成人在线观看| 日韩美女免费观看| а_天堂中文在线| 久久好看免费视频| 九一国产在线| 亚洲国产精品99久久| 91国产精品一区| 一本色道综合亚洲| 国产精品 欧美 日韩| 国产精品久久久久久久久免费相片 | 国产免费毛卡片| 尤物网精品视频| 欧美aaa在线观看| 成人羞羞动漫| 极品尤物一区二区三区| 日韩精品免费视频一区二区三区| 国产精品日韩欧美| 国模套图日韩精品一区二区| 久久久久久久久久婷婷| а天堂中文在线官网| 亚洲一区二区福利| 你懂的免费在线观看视频网站| 欧美xxxxxxxx| a级片在线视频| 欧美丰满一区二区免费视频| 日韩精品一区二区亚洲av观看| 午夜影视日本亚洲欧洲精品| 麻豆成人在线视频| 亚洲精品国产a久久久久久| 午夜精品一区二区三级视频| 国产精品女人毛片| 嘿嘿视频在线观看| 国产亚洲精品aa| 韩国三级hd中文字幕| 久久伊人中文字幕| 亚洲av成人精品一区二区三区 | 青青青视频在线播放| 国产婷婷色一区二区三区在线| 在线免费观看麻豆| 久久久久久久免费视频了| 菠萝菠萝蜜网站| 91视视频在线观看入口直接观看www | 日本在线观看中文字幕| 香蕉加勒比综合久久| 亚洲欧美在线视频免费| 亚洲成av人片一区二区三区| 日韩大片免费在线观看| 狠狠躁夜夜躁人人躁婷婷91| 亚洲伊人成人网| 色天使色偷偷av一区二区| 欧美一区免费看| 欧亚一区二区三区| 91午夜交换视频| 欧美一区二区三区喷汁尤物| 精品国产一级片| 亚洲大胆人体视频| 奇米影视888狠狠狠777不卡| 亚洲少妇激情视频| 老司机免费在线视频| 欧美成人免费观看| 123区在线| 国产精品黄色av| 四虎影视成人精品国库在线观看| 91在线高清视频| 国产欧美三级电影| 欧美一区视久久| 国产精品成人av| 亚洲国产精品成人天堂| 久久福利毛片| 制服丝袜中文字幕第一页| 成人性生交大合| 国产熟妇久久777777| 亚洲欧美综合色| 国产精品第二十页| 在线免费不卡视频| av中文字幕播放| 亚洲女同性videos| 欧美一区二区三区在线观看免费| 欧美乱大交xxxxx| 伊人久久综合一区二区| 国产日产久久高清欧美一区| 黄色网一区二区| 色狠狠久久av五月综合|| 欧美欧美全黄| 日本xxxxxxx免费视频| 国产一区二区三区久久久| 少妇户外露出[11p]| 国产精品久久久久久久午夜片| 欧美国产精品一二三| 在线免费观看一区| 东京干手机福利视频| 在线观看日韩av| 国产美女高潮在线观看| 91精品啪aⅴ在线观看国产| 免费日韩一区二区三区| 国产又粗又爽又黄的视频| 久久xxxx精品视频| 性一交一黄一片| 日本一区二区成人在线| 全部毛片永久免费看| 91精品国产综合久久久蜜臀粉嫩| 亚洲日本中文字幕在线| 欧美日韩xxxxx| 久久99国产精品二区高清软件| 国产精品一区二区a| 亚洲人体av| 最近中文字幕一区二区| wwwwww.欧美系列| 免费在线观看日韩| 这里只有精品视频在线观看| 极品美乳网红视频免费在线观看 | 国产综合色区在线观看| 国产精品一区二区在线观看 | 亚洲都市激情| 国产毛片久久久久久国产毛片| 久草精品在线观看| 超薄肉色丝袜一二三| 黑人巨大精品欧美一区二区| 成人av一区二区三区在线观看| 中文字幕一区二区精品| 伊人久久av| 欧美国产一区二区在线| 一区二区三区国产盗摄| 亚洲最大视频网| 一区二区在线观看不卡| 99久久亚洲精品日本无码| 中文字幕亚洲国产| 九九久久国产| 亚洲精品一区二区三区蜜桃久| 日韩精品福利网| 国产精品久久久久无码av色戒| 五月婷婷综合网| 日本黄色一区二区三区| 国产综合在线视频| 国内精品国产成人国产三级粉色 | 国内小视频在线看| 超碰97在线资源| 激情一区二区| 精品久久久久久无码人妻| 亚洲一区二区三区四区在线观看| 精品人妻伦一区二区三区久久| 久久精品人人爽| 国产精品亚洲一区二区在线观看| 中文字幕日韩一区二区三区| 精品综合久久久久久8888| 国产黄色片在线| 欧美日韩一级二级| 91精选在线| 国产日韩欧美精品| 国产精品女主播一区二区三区 | 亚洲欧美日韩久久| 国产免费av电影| 欧美黑人国产人伦爽爽爽| 中文在线综合| av免费观看网| 国产女人水真多18毛片18精品视频| 日批视频免费在线观看| 在线a欧美视频| 精品国产18久久久久久二百| 欧妇女乱妇女乱视频| 91免费观看视频在线| 日韩黄色片网站| 菠萝蜜影院一区二区免费| 6080成人| 国产美女无遮挡网站| 国产欧美一区二区精品秋霞影院| 亚洲精品国产精品国自产网站按摩| 久久精品成人欧美大片| 综合视频一区| 中文字幕欧美人妻精品一区| 日韩毛片精品高清免费| 刘亦菲毛片一区二区三区| 欧美在线免费看| 欧美高清在线| 中文字幕 日本| 欧美最猛黑人xxxxx猛交| 日本资源在线| 日韩亚洲不卡在线| 国产99一区视频免费| 国产又粗又猛又爽又| 欧美成人剧情片在线观看| 免费精品国产| 捷克做爰xxxⅹ性视频| 亚洲a一区二区| 日本视频在线免费观看| 国产乱码精品一区二区三区日韩精品 | 99久久亚洲精品蜜臀| 国产高清成人久久| 欧美日韩一区二区三区四区| 国精产品一区一区三区mba下载| 欧美精品七区| 国产精品白丝jk黑袜喷水| 精品国产xxx| 久久久久久香蕉网| 久久蜜桃av| 一区二区黄色片| 精品久久久久久无|