SSO

2011-07-22 24 views
1

跨多個域的多個應用程序(Web和Silverlight)之間這是我的情況,SSO

我有一對夫婦的應用程序: - 使用一個虛擬主機提供商的外部運行.NET CMS沒有Active Directory域 網站(基於與CMS數據庫表單認證的認證) - 客戶網絡和域在內部運行 幾個Silverlight應用程序(通過Active Directory認證,在映射到數據庫用戶表,應用目前不對外公開)

假設我想要所有這些應用程序能夠驗證用戶不是他們自己的數據庫,而是一個集中的數據庫。 (並非所有的應用程序運行在不同的網絡中,因爲應用程序可能存儲用戶角色等,所以映射到本地用戶帳戶是可以接受的)。 在用戶上,我想存儲它屬於哪個客戶,如果它有權使用應用程序和更多的個人信息

注意這也必須在Windows窗體/ wcf應用程序在未來工作,所以不是一個選項。

這樣做的最好方法是什麼?

我想過用一個存儲所有信息的數據庫設置已發佈的SOAP服務,然後爲每個應用程序編寫一些邏輯以使用此webservice進行身份驗證。 但是我並不熱衷於通過任何人都可以訪問的web服務來發布所有這些信息。 如果我通過域上的基本身份驗證來保護此webservice,則憑證將在乾淨的測試中發送,但對於私人用戶信息,這不是一個選項。

有沒有人有一個想法如何解決這個問題?

+0

我們最近問了一個類似的問題。這裏:http://stackoverflow.com/questions/5583460/how-to-implement-secure-single-sign-on-across-various-web-apps/5659331#5659331 –

回答

0

您可以使用基於聯合協議的web sso,如SAML或WS-Federation。
在你的情況下,最明顯的解決方案將基於活動目錄聯合服務

你建立一個基於ADFS中央認證服務器,並部署在每個Web服務器的ADFS代理。
當用戶嘗試訪問某個應用程序時,他將被重定向到中央身份驗證服務器。該服務器將負責驗證他,也許會進行一些訪問控制驗證並將安全令牌發送回您的應用程序。
所有這些電影都不依賴於cookie,而是通過用戶的瀏覽器通過POST/GET方法交換數據。
另一點需要指出的是它與Windows Identity Foundation(WIF)框架很好地集成,因此Windows Forms/WCF應用程序不應該存在問題。