我目前正在研究跨域SSO實現,並且我可能無法使用第三方SSO提供程序。此實施SSO的潛在安全問題是什麼?
我在線發現了一個包含系列重定向和加密查詢字符串參數的自定義實現。
MrUser登錄到
http://www.foo.com
MrUser點擊一個鏈接到
http://www.bar.com/page.aspx
MrUser上bar.com沒有通過認證,但bar.com有重定向到
http://www.foo.com/sso.aspx
驗證碼
sso.aspx頁面檢查cookie集合中的有效ASP.NET身份驗證Cookie。如果存在,sso.aspx將重定向到
http://www.bar.com/page.aspx&ssoauth=[encryptedkey]
(其中[encryptedkey]
是foo.com和bar.com已同意的MrUser的加密標識)。如果沒有有效的ASP.NET身份驗證cookie,那麼它只是重定向而沒有ssoauth
參數。Bar.com執行檢查以避免無限重定向循環,然後解密
ssoauth
值。如果沒有ssoauth參數,那麼MrUser會被重定向到登錄頁面,否則Bar.com將使用解密後的id在將其發送到page.aspx之前對MrUser進行身份驗證。
這種方法的潛在安全問題(或其他類型的問題)是什麼?
(引用:http://blogs.neudesic.com/blogs/michael_morozov/archive/2006/03/17/72.aspx)
編輯:爲響應答案援引加密ID是一樣的,每次和一個攻擊者可以使用它來訪問 - 如果有什麼bar.com檢查引用,以便它只接受來自foo.com的ssoauth參數?
我建議你看看基於聲明的安全性和代號「Velocity」 – 2010-02-05 01:12:14
引用者非常容易被欺騙。確保SSO加密密鑰是真實的唯一方法是讓生成服務器加密執行請求的系統的佔用空間。足跡是非常困難的,因爲足跡中沒有太多的東西不能被複制/欺騙。 – 2010-02-05 01:21:52