WIF(Windows Identity Foundation) 被动联合身份验证过程详解
前面幾篇文章介紹了下微軟標識庫WIF的基本概念,WIF目前支持兩種驗證方案,一個是 asp.net的被動聯合身份驗證,二是WCF的身份驗證,因為前者需要用到瀏覽器,所以采用了一些技巧去實現,根據這些技巧的行為微軟定義為"被動的".
下面我用一個示例項目來講解:
首先我作為客戶訪問 下面項目中的 Default頁面,這個應用程序叫做 "信賴方應用程序(RP)",是聲明感知的,這些概念可以去MSDN里面詳細了解.
我用Opera瀏覽器來攔截請求,圖中的工具可以按(shift+ctrl+i),首先需要在頁面右擊"編輯站點首選項",
1."腳本"選項卡里面去掉"允許使用javascript",
2.然后去掉在"網絡"選項卡里面的"允許自動重定向",這是為了捕獲http請求頭必須的.
我們請求RP的defalut頁面時,由于未經驗證,RP在響應頭里面設置了重定向,重定向到STS的default頁面(這個頁面是專門用來給RP傳遞令牌的),你可能會疑問,這個重定向的url里面的參數好奇怪,什么wa,wtrealm..? 其實這些是由Rp方的 Microsoft.IdentityModel.Web.WSFederationAuthenticationModule攔截未驗證的請求后生成的,
這些參數在 WSFederationConstants 類里面.
當轉到STS的Default頁面時,STS說:咦?你還沒有通過我的驗證哦,我不能給你令牌的,你得先讓我驗證下你的身份.這樣STS又轉向到他的表單驗證登錄頁面... 折騰啊!!
Login.aspx頁面已經返回了上面的HTML ,為了演示,沒有任何漂亮的樣式 ,也沒做任何密碼決斷,只要用戶名不為空就算通過了.我來提交下.
提交的時候順便把這個cookie提交過去了,這是剛剛請求那個登錄頁面時設置了,表單驗證必備的,你懂的.
提交后,我們就算通過表單驗證了,通過后干了什么呢?這個頁面有點不好捕獲,這也是之前為什么我要禁用腳本的原因,否則一閃就過了.這個頁面是剛剛STS default.aspx頁面返回的,
因為他已經被表單驗證通過了,這個頁面其實就是返回一個自提交JS和一個XML
以下是上面頁面的HTML ,技術很簡單 ,很多人用過了
以下是這次POST的攔截信息
好吧我把上面的提交下吧,這是提交是 STS default.aspx 頁面 向 RP的 default.aspx 頁面提交
?
哈哈,當這個令牌傳遞給RP時,RP端的 Default.aspx頁面終于出現了
順便把那個令牌XML格式化出來貼上
?
好了 時間不早了 讀者消化下,多謝支持 ,點擊此處下載
?
MSDN對此過程的圖示:
http://msdn.microsoft.com/zh-cn/library/ee517293.aspx?
令牌采用的ws-trust行業標準協議,可支持java客戶端
Project Tango ,Metro 的介紹
http://dev.21tx.com/2008/12/20/11343.html
?
歡迎進入【系統架構師】群
轉載于:https://www.cnblogs.com/cabbage/archive/2011/12/02/2272775.html
總結
以上是生活随笔為你收集整理的WIF(Windows Identity Foundation) 被动联合身份验证过程详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#开源资源大汇总(转)
- 下一篇: db是什么意思?db文件怎么打开?(35