2011-06-08 51 views
0

Azure的ACS服務非常可愛,我喜歡它所能做的所有魔法,但我想爲我的Web應用程序(MVC)減少一點魔力。如果您查看CodePlex上的代碼示例,調用該服務並從此類端點獲取JSON的登錄提供者列表很容易:沒有生成代碼和HttpHandlers的Azure ACS?

https://.accesscontrol.windows.net/v2/metadata/ IdentityProviders.js?protocol = wsfederation & realm = http%3a%2f%2flocalhost%3a7070%2f & version = 1.0 & callback =?

從生成的JSON中,可以呈現一些指向提供者的鏈接,一旦你處理這些登錄,他們就會通過ACS反彈你,並且ACS將會把結果令牌發送到你設置的任何端點在Azure門戶中。

我的問題是,我該如何處理該令牌?我不想使用創建的WIF「魔術」設置IPrincipal,而不是。我只是不想混淆我已經在應用程序中的東西。

回答

0

我寫了一篇博客文章,描述了那些想要WIF功能但不想將整個應用程序轉換爲基於聲明的人的解決方案。這應該會讓你知道如何處理這種情況:http://goo.gl/J8WZe

最終,我擴展了WIF模塊類並添加了一些覆蓋以替換我不需要的魔法方法。

我沒有測試過這個,但你可以做的另一件事是通過註冊它暴露的各種事件來進入WIF工作流。

+0

這是一個非常可靠的實現。做得好。 – 2011-10-28 04:46:24

+0

很高興我能幫到你 – Garvin 2011-10-28 15:01:28

2

你會準確地做WIF與令牌做什麼。解密SAML令牌後解析它。您可以看到SAML令牌here的規範。我建議使用WIF進行解析,因爲解析SAML並不適合心臟病發作。您需要解析出所有的聲明,然後決定在應用程序中如何處理它們。 WIF通過創建IClaimsPincipal並設置IClaimsIdentity上的聲明來實現此目的。

+0

我得到了那麼多,但是你不需要驗證令牌的內容與可信任的提供者(在這種情況下是ACS)嗎? – 2011-06-09 02:35:59

+0

是的,您必須使用證書確認該呼叫來自ACS。您將獲得可用於驗證令牌的證書。 – 2011-06-09 18:07:18