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

歡迎訪問 生活随笔!

生活随笔

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

windows

[WCF安全系列]认证与凭证:用户名/密码认证与Windows认证

發布時間:2023/12/9 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [WCF安全系列]认证与凭证:用户名/密码认证与Windows认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果要給認證下一個定義,我個人的傾向這樣的定義:認證是確定被認證方的真實身份和他或她申明(Claim)的身份是否相符的行為。認證方需要被認證方提供相應的身份證明材料,以鑒定本身的身份是否與聲稱的身份相符。在計算機的語言中,這里的身份證明有一個專有的名稱,即“憑證(Credential)”,或者用戶憑證(User Credential)、認證憑證(Authentication Credential)。

一、憑證的屬性

最好的設計就是能夠盡可能的模擬現實的設計。對于安全認證來說,在現實生活中有無數現成的例子。比如我對一個不認識的人說:“我是張三”,對方如何才能相信我真的是張三而非李四呢?雖然我們未必全都是有身份的人,但無疑我們都是有身份證的人,身份證可以證明我們的真實身份。而這里的身份證就是一種典型的憑證。認證方能夠根據被認證方提供的身份證識別對方的真實身份,必須滿足三個條件:

  • 被認證人聲稱是身份證上注明的那個人;
  • 身份證的持有者就是身份證的擁有者;
  • 身份證本身是合法有效的,即是通過公安機關頒發的,而不是通過撥打“辦證”電話辦理的。

第一個問題一般不是問題,因為對于一個神經稍微正常的人來說,他不會拿著李四的身份證去證明自己是張三;第二個問題可以根據身份證上面的照片來判斷;第三個問題就依賴于身份證本身的防偽標識和認證方的鑒別能力了。

上述的三個條件本質上也反映了認證過程中用戶憑證本身應該具有的屬性,以及用戶憑證和被認證人之間的關系。即:憑證與聲明的一致性被認證人對憑證的擁有性,以及憑證的合法性。為了簡單,我們不妨簡稱為用戶憑證的三個屬性。用戶憑證的類型決定了認證的方式,WCF支持一系列不同類型的用戶憑證,以滿足不同認證需求。接下來,我們來簡單介紹幾種使用比較普遍的憑證以及相應的認證方式。

二、用戶名/密碼認證

我們最常使用的認證方式莫過于采用驗證用戶名和密碼的形式,以致于我們提到身份驗證,很多人會想到密碼。我們不妨通過上面我們講到的用戶憑證的三屬性來分析用戶名/密碼憑證。

用戶名表示被認證方聲明的身份(Identity),密碼是持有人是憑證合法擁有者的證據。對于認證方來說,由于賬號對應的密碼屬于賬號擁有者的私密信息,如果被認證方能夠提供與他聲明身份相匹配的密碼,就能夠證明對方確實與他聲明的是同一個人。首先,用戶名代表身份(Identify),憑證與聲明的一致性意味著被認證方聲明的身份與用戶名一致。被認證人對憑證的擁有性通過密碼證明,密碼屬于絕對隱私信息,被認證人如果能夠提供與所聲明的身份相匹配的密碼,就能夠證明他是憑證的真正擁有者;由于用戶名/密碼憑證不屬于證書型憑證,不需要合法機構頒發,對于合法性則無從說起。

在采用用戶名/密碼認證方式的應用中,認證方一般具有所有用戶帳號和密碼的列表。當然,由于密碼對屬于持有人的絕對隱私,原則上僅限于持有人本人知曉,其他人任何人(當然也包括認證方)不應該采用技術手段獲知該密碼。如果認證方維護者他負責認證的所有帳戶的用戶名和密碼的列表,被存儲的一般是原始密碼的哈希值以及進行哈希運算采用的Key。由于哈希算法是不可逆的,所以無法通過后哈希的值和相應的Key得到原始的值,從而確保了密碼的安全性。在進行認證的時候,只需要根據用戶名找到相應的Key,然后利用該Key采用相同的算法對用戶提供的密碼進行哈希算法,最終將最終的運算結果和本地存儲的值進行比較即可驗證密碼的真偽。

雖然在我們進行項目開發的時候,我們也會選擇對用戶注冊時提供的密碼進行加密存儲,這樣可以讓用戶忘記原來的密碼的時候,通過向認證方證明其真實身份的前提下,讓認證方通過通過解密返回其原來的密碼。對于密碼的加密存儲問題,無論是采用對稱加密還是非對稱加密,我們都可以通過相應的解密算法得到其原始密碼,所以從理論上講具有安全問題。不過,具體應用在選擇密碼存儲策略的時候,可以根據自身所需的安全級別以及是否需要返回原始密碼,選擇對原始密碼進行哈希或者加密。但是,無論如何對密碼進行明文存儲是不被允許的。

如果你選擇了用戶名/密碼憑證,WCF為你提供了三種認證模式:

  • 將用戶名映射為Windows帳號,采用Windows認證;
  • 采用ASP.NET的成員資格(Membership)模塊
  • 通過繼承UserNamePasswordValidator,實現自定義認證。

三、Windows認證

應該說就采用的頻率程度,集成Windows認證(IWA:Integrated Windows Authentication)是僅次于用戶名/密碼的認證方式。尤其是在基于Windows活動目錄(AD:Active Directory)的Intranet應用來說,Windows認證更是成為首選。微軟幾乎所有需要進行認證的產品或者開發平臺都集成了Windows認證,比如IIS,SQL Server,ASP.NET等,當然,WCF也不可能例外。

Windows是實現單點登錄(SSO:Single Sign-On)最理想的方式。無論是采用域(Domain)模式還是工作組(Workgroup)模式,只要你以Windows帳號和密碼登錄到某一臺機器,你就會得到一個憑證。在當前會話超時之前,你就可以攜帶該Windows憑證,自動登錄到集成了Windows認證方式的所有應用,而無須頻繁地輸入相同的Windows帳號和密碼。如果登錄帳號不具有操作目標應用的權限,在一般情況下,你好可以通過重新輸入Windows帳號和相應的密碼(如果當前用戶具有多個Windows帳號)以另外一個身份(該身份具有對目標應用進行操作的訪問權限)對目標應用進行操作。

就其實現來說,Windows具有兩種不同的認證協議,即NTLM(NT LAN Manager)和Kerberos。關于這兩種認證機制大體上的原理,可以參考我寫的兩篇文章:

Windows安全認證是如何進行的?[Kerberos篇]
Windows安全認證是如何進行的?[NTLM篇]

在《下篇》中,我們著重討論基于X.509數字證書的憑證。

轉載于:https://www.cnblogs.com/artech/archive/2011/05/23/authentication_021.html

總結

以上是生活随笔為你收集整理的[WCF安全系列]认证与凭证:用户名/密码认证与Windows认证的全部內容,希望文章能夠幫你解決所遇到的問題。

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