2011-08-30 31 views
1

我在不同的域中有兩個asp.net項目。這些項目使用一個數據庫。假設說www.test1.com和www.test2.com。 (後期會更多項目)在沒有外部註冊的情況下使用sso作爲asp.net項目

我已經有註冊表和註冊用戶。

現在我需要在外部網站(谷歌,openId,臉書)沒有註冊實施SSO的可能性。

我發現需要外部註冊的所有實現(CAS,Federation,Facebook,openId)。

而且我看了這篇文章http://www.codeproject.com/KB/aspnet/CrossDomainSSOExample.aspx,但據我從評論這樣的解決方案非常不安全的理解。

請建議解決方案或存在的庫,它可以幫助我使用SSO而無需外部註冊。

+2

在任何單一登錄環境中,某些實體必須充當受信任的權威機構。如果您只是想在兩個網站之間共享用戶帳戶,那麼真正的SSO可能不是您要查找的內容。 – Yuck

回答

1

我需要爲客戶我工作完全相同的解決方案,我做的研究,唯一好的解決辦法,我發現那裏要麼太複雜,沒有很好的記載或過於昂貴(我忘了我看哪些企業進入) 。所以我決定建立一個自定義的解決方案。 這是實施解決方案的簡短摘要: 爲了使事情更清晰,我們將「節點」稱爲您想要認證用戶的域,以及「SSO」認證的提供者。 我用了一個解決方案,類似於一個在您發佈然而,鏈接我使用Asp.Net安全Cookie,每當我想驗證一個節點,也是SSO的網站進行身份驗證:

HttpCookie formsCookie = FormsAuthentication.GetAuthCookie(userName, false, HttpRuntime.AppDomainAppVirtualPath); 
HttpContext.Current.Response.Cookies.Add(formsCookie); 

這也允許我不必爲每個Web請求查詢SSO提供商,因爲您發佈的示例似乎是這樣做的。 我每次希望從SSO提供程序返回身份驗證成功的節點時都使用新的AuthenticationKey。 另外我還添加了一些安全功能,如加密通信,並且密鑰最多隻能有效2秒(SSO將它傳遞給節點的時間),並且只要它被使用,它就會被刪除。 我相信這個解決方案是足夠安全的,但是使用外部現成解決方案肯定更安全。

我花了僅僅幾天來實現整體解決方案,所以它不太長的任務。但是我不能分享這個項目,因爲我不確定客戶會同意。 我希望這些建議可以幫助你。

讓我們知道你最終決定做什麼。

相關問題