2013-04-18 21 views
0

我打算實施一個面向外部的ASP.NET Web應用程序以及一個Windows Communication Foundation(WCF)服務提供一個外部可用的API 。我將通過使用Windows Identity Foundation(WIF)滾動自己的安全令牌服務(STS)來爲Web應用程序和服務提供安全性。WIF STS實現檢查活動ASP.NET登錄/會話與ADSF綁定

爲我準備如何實現這個被這些文章中描述的基本知識: http://msdn.microsoft.com/en-us/magazine/ee335707.aspxhttp://devproconnections.com/development/generating-saml-tokens-wif-part-2

由維托裏奧Bertocci的優秀圖書的主題所提供的信息相結合: http://www.amazon.com/Programming-Windows-Identity-Foundation-Dev/dp/0735627185/ref=sr_1_6?ie=UTF8&qid=1366300926&sr=8-6&keywords=vittorio+bertocci

我應該有我需要的所有工具和信息來完成這項任務。該應用程序的用例如下:用戶登錄到我們擁有的ASP .NET Web應用程序,包括用戶身份驗證和授權機制。在此應用程序中,他們點擊一個鏈接,使用SAML單點登錄(SSO)到第三方應用程序(與我們有緊密的業務關係)。在這個第三方應用程序中,用戶可以透明地處理我們存儲在組織內部另一個應用程序中的文件。基本上,他們會對我的Web應用程序/ WCF服務執行透明/靜默SAML SSO,以在登錄到第三方Web應用程序時保存或檢索文檔。

就像我之前說過的,我認爲我有如何在此過程中實施授權和認證的基礎知識。

但是,我的安全小組詢問的一件事是,我們確保登錄到第三方網站的用戶從外部暴露但完全由我們擁有的原始Web應用程序擁有活動與網站會話。簡而言之,我們需要確保該用戶實際登錄到站點A,正在使用站點B,但希望通過確保它們實際上已登錄站點A靜止來訪問站點C上的資源。

我如何獲得關於此用戶的此信息?現在,我確實爲站點A推出了自己的角色提供程序,但通過使用舊版用戶名/密碼機制的表單身份驗證來執行身份驗證,該機制不包括使用ASP .NET 2.0「標準」成員資格提供程序。因此,Security.Web.Membership不適用於我。

最後,這個過程將適用於我們的活動目錄中的內部用戶,他們將從我們的內部網絡登錄到站點B,然後再次與站點C一起工作。我相信我們將使用ADFS v2進行身份驗證。有關確保所述用戶在AD認證之前處於活動狀態的任何提示?

回答

0

跟蹤網站用戶是否仍處於活動狀態的唯一合理方法是使用每當用戶在網站上瀏覽時自動重置的過期令牌(例如10分鐘)。有了這個,你可以說用戶在過去的10分鐘內是活躍的並登錄了。您需要跟蹤服務器上的持久性存儲中的令牌,並使用最近一次用戶操作/令牌重置的時間進行更新,以便後端系統可以詢問「該用戶是否仍然活動?」,我們需要將一些東西傳遞給Web客戶端,以便他們可以在每個後續的Web請求中將它們傳遞迴服務器,以保持會話的活躍。這通常是一個會話cookie。 Cookie可以與令牌相同,或者如果您不希望瀏覽器應用程序知道真實令牌,則可以將Cookie設置爲映射到服務器內部令牌的隨機值。如果用戶主動註銷Web應用程序,那麼您會在後端數據庫中取消令牌。

其他技術可能需要保持打開一個長時間運行的http連接(ala基於web的irc聊天),但是這消耗了大量的網絡資源,特別是在服務器和防火牆上,並且它沒有提供更好的保證,實際上仍然在瀏覽器中查看Web應用程序。會話已開啓30分鐘,但在20分鐘內沒有任何頁面導航,聽起來好像用戶已經去吃午餐並且讓瀏覽器窗口打開。如果你必須跟蹤頁面導航,那麼保持http連接打開並不會真的給你買東西。

+0

感謝您的回覆。我確信我們無法實現長時間運行的HTTP連接,原因很多,包括所需的資源。我不確定我是否理解您所描述的會話cookie標記機制。只是FYI我可以完全訪問網站A和C.我基本擁有它們。我們也在A站點的數據庫中跟蹤基於用戶的頁面訪問。但是,如果他們瀏覽網站B,他們很可能在網站A上沒有任何「近期」活動。 – Dan7el

+0

那麼,您如何建議確定用戶是否「登錄」了網站A? – dthorpe

+0

我認爲這是我問的問題。網站A有一個會話狀態cookie和一個表單身份驗證cookie。表單auth cookie確實有一個與其關聯的超時。我已經確認,用戶可以登錄到站點A,SSO到站點B,並在站點A上創建表單驗證cookie超時,同時它們是擴展瀏覽站點B.我不太熟悉整體SAML SSO流程(現在)。當用戶從站點A登錄到站點B時,是否存在存儲在用戶計算機上的SAML SSO令牌cookie?你是否想把這個超時設置爲一個較低的數字? – Dan7el