很多時候,我們進行應用程式之間的互動。比如,乙個員工登入了門戶**後,需要訪問進銷存系統、crm系統,如果不進行特殊處理,就需要多次輸入使用者名稱和密碼。用過sharepoint的朋友,可能知道有個「單點登入」的東東是用來解決這個問題的。單點登入並不完美,其中之一就是它將使用者名稱和密碼存成明文,乙個程式設計師可能很容易的獲得某個使用者的使用者名稱和密碼,這在涉密的軟體中簡直是致命的缺陷。
因此,人們開始重新思索一種更可靠,更實用的認證方式。這時,claims認證閃亮登場了。其實,claims認證早就出現了,大概已經有10年的歷史了,但是一直沒有發揚光大。這次可以說是老樹發新芽,claims認證迎來了第二春。
claims認證很難解釋清楚,甚至我都找不到乙個合適的中文詞語來翻譯它。只好用乙個比喻來說明。
在實行社保卡之前,我們去醫院看病的時候,需要拿著身份證去辦理一張就診卡,辦卡的工作人員校驗完你的身份證以後,會將你的個人資訊錄入到卡裡面。當你去找醫生就診的時候,醫生掃瞄一下你的就診卡,就知道了你的所有資訊。這個就診卡就相當於claims認證中的token,裡面的每條資訊就是乙個claim.
這裡的就診卡具有兩個特點:(1) 裡面包含了認證過的資訊,也就是說,醫生看到這些資訊以後,不需要再去看你的身份證進行驗證。(2) 醫生需要驗證發行者,也就是讀磁條的過程。醫生一旦確認這個就診卡是由辦卡的工作人員簽發的,就可以信任裡面的資訊。
以上兩個特點就是claims認證區別於其他認證方式的兩點。
就診卡對應claims認證裡面的token,就診卡裡面的每條資訊對應claims認證裡面的claim.而辦卡的工作人員就是token的發行者。
乙個token裡面包含使用者名稱,使用者email,使用者的manager的email等資訊。使用claims認證時,很難擴充套件上面的屬性。這就像你使用醫院的就診卡時,上面應該包含什麼資訊,是由醫院軟體決定的,如果你自己想增加乙個別的屬性,必須去改變醫院的軟體,這通常是很難得。所以盡量使用當前token中包含的屬性,不要奢望去使用裡面不包含的屬性。除非你是衛生部長或者醫院院長:(
claims認證中有乙個很重要的角色「發行者(issuer)」,對於上面的例子,醫院就是cliaims token的發行者。如果在我們自己的應用程式中想要使用claims認證,下面的元素是必不可少的。
adfs存在於windows server 2008 r2企業版中,全稱為active directory federation services (adfs) 2.0. adfs支援多種使用者認證方式,比如kerbos,form驗證等,它還支援sql語句,這樣可以從自定義的sql資料來源中提取使用者資訊。
claims 認證的具體實施步驟:
其中包括驗證來自issuer的token和解析token以便獲得claims資訊。windows identity foundation (wif) 提供了標準的api,這些api既可以在wcf中使用,也可以在asp.net程式中使用。使用wif的方法很簡單,只需要在你的程式中引入microsoft.identitymodel.dll就可以了,舉一些例子:isinrole, identity.name, identity.claims等等。
2。 構建乙個issuer。
這個使用adfs就可以了。具體的配置步驟檢視adfs的文件即可。當然,你也可以使用wif自己構建乙個issuer,那會非常的複雜。
claims提供的屬性中,哪些是必須的,哪些是可選的
是否需要對產生的token加密,用什麼key來加密。
wif提供了乙個工具edutil.exe,可以用以生成乙個元資料文件,所以你無需手動進行配置。
,作者為
今夜太冷
https認證詳解
最近公司準備提供一套類似第三方支付服務的系統。一提支付,少不了資訊保安,資料的安全是支付系統的鳥之翼,船之槳,重中之重。為了保證系統的安全,我們參考了https的安全模式,下面主要介紹一下https是怎麼保證資料安全的。ssl加密協議,ssl安全套接層,位於應用層和tcp層中間,應用要傳輸資料不是直...
SSL單向 雙向認證詳解
這篇文章是以前在網上看到的,之後自己儲存到筆記本裡面了,最近不太愛用筆記本了,就把這篇文章貼到這裡吧,沒有去找原文章的鏈結,如有冒犯請見諒。單向認證 ssl 協議的具體過程 客戶端的瀏覽器向伺服器傳送客戶端 ssl 協議的版本號,加密演算法的種類,產生的隨機數,以及其他伺服器和客戶端之間通訊所需要的...
SSL單向 雙向認證詳解
單向認證 ssl 協議的具體過程 客戶端的瀏覽器向伺服器傳送客戶端 ssl 協議的版本號,加密演算法的種類,產生的隨機數,以及其他伺服器和客戶端之間通訊所需要的各種資訊。伺服器向客戶端傳送 ssl 協議的版本號,加密演算法的種類,隨機數以及其他相關資訊,同時伺服器還將向客戶端傳送自己的證書。客戶利用...