Windows Identiy Foundation 初體驗

就真的是初體驗,很粗淺的 WIF ....


安裝
裝完 WIF SDK 之後,Visual Studio 的 Toolbox 會多出一個頁籤:Windows Identity Foundatio Controls,而且多出一些功能,例如在 Solution Explorer 中的專案名稱上點右鍵會有 Add STS reference 的選項。

一點術語
  • Claims-based identity:在 claims-based 應用程式中,使用者會以一組 claims 來提供他們的識別資訊。一個 claim 代表一項識別資訊,例如:使用者姓名、e-mail 位址。
  • Identity Provider:簡稱 IP 或 IdP,提供身分驗證的服務。
  • Relying Party:簡稱 RP,倚賴 claims 來驗證使用者身分的應用程式。簡單地說,就是倚賴 IP 來驗證身分的網站。
  • Security Assertion Markup Language:簡稱 SAML。我也說不清楚這是什麼,看看 Wiki 吧。
  • Active authentication:主動式驗證,或稱為 SOAP-based 驗證。
  • Passive authentication:被動式驗證,或稱為 browser-based 驗證。
快速測試

使用現成可供快速測試的 STS(Security Token Service):SelfSTS
SelfSTS 說明文件安裝完成後,將 SelfSTS 啟動,然後寫一個 RP 網站測看看:

Step 1: 在 Visual Studio 2010 中 New 一個 Web Site,命名為 RelyingPartyWeb。
Step 2: 到 SelfSTS 應用程式視窗中複製 Metadata 網址,參考下圖:


Step 3: 在 Solution Explorer 中的網站名稱上點右鍵,選 Add STS reference,會開啟對話窗:


按 Next,出現 ID1007 警告,按 Yes 忽略並繼續。接著選擇 Use an existing STS,並將 Step 2 複製的網址貼上去,按 Next:


出現 ID1023 警告,按 Yes 忽略並繼續。選擇 Disable certificate chain validation,按 Next:


選擇 No encryption,按 Next:


顯示 STS 提供的 claims,按 Next:


然後按 Finish,加入 STS 參考的動作便完成了。

Step 4: 在網站中 New 一個網頁,撰寫 Page_Load 事件:

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(User.Identity.Name);
    }

Step 5: View in Browser,應該會看到網頁上輸出一行文字:"joe"。這個 user 是 SelfSTS 預先提供的 claim 資訊。你可以開啟 SelfSTS,然後點視窗中的 Edit Claim Types and Values 按鈕,便可查看或增刪這些 claims。

以上就是快速測試的步驟。RelayingPartyWeb 的網頁能夠顯示 "joe",表示網站真的有連到 SelfSTS 去進行要 token 的動作。

好像隔靴搔癢、沒有感覺?我也這樣覺得。這個範例並沒有重新導向到登入頁面,讓使用者輸入帳號密碼。其實 SelfSTS 的說明文件就有提到,它不會拒絕任何 token,且 claims 的值都是取自組態檔。就單純是快速測試而已。

一點筆記

資深微軟技術專家 Patriek van Dorp 在他的部落格文章中提到,他在準備 WIF 的 demo 時,打算自己寫一個 STS,並發布至雲端,但卻看到 Programming Windows Identity Foundation 書中提醒:「自己寫一個 STS 恐怕不是個好主意。」因為一個好的 STS 必須具備下列條件:
  • 高安全性 – Relying Parties 必須信任你的 STS。如果你的 STS 本身不夠安全,就會破壞這層信任關係。
  • 隨時可用 – 因為可能很多應用程式都仰賴你的 STS 來進行身分驗證的處理,萬一 STS 掛掉,所有的 relying parties 很可能就跟著掛。你可以想像,這是多可怕的事。
  • 高效能 – 當使用者數量越來越多,加入 relying party 的網站數量也越多時,STS 仍必須維持可接受的效能,否則使用者在登入時就會覺得明顯變慢。
  • 容易管理 – 要有管理介面,以便加入或移除 relying parties、監看效能、管理 claims、加入或移除使用者等等。
這表示,自行建立一個穩定、高效的 STS 勢必得投入不少 $$ 和人力。雖然把 STS 裝載於 Windows Azure 平台可以減少穩定性和可用性的疑慮,但是在決定自行開發 STS 時,還是得三思。Dorp 認為,如果可以的話,使用現成且經過完整測試的 ADFS 2.0 來當作 STS 會比較好。

一個短片

說到 ADFS 2.0,這裡有個 Channel 9 短片可以觀賞:Active Directory Federation Services v2 Ships!。(左邊那位仁兄就是 Programming Windows Identity Foundation 一書的作者,fantastic! ^_^)

延伸閱讀

Copyright © 2012. Huan-Lin 學習筆記 - All Rights Reserved
Powered by Blogger
Template Design by Cool Blogger Tutorials
Published by Templates Doctor