2011-02-10 83 views
0

我們正在考慮需要從另一個站點進行身份驗證的非常臨時網站的身份驗證系統。總結這裏,我們有兩個完全不同領域的網站。 foo.com是永遠存在的主要網站(並且已經存在)。這是用戶訪問並登錄該網站的主要地點,並在那裏以登錄狀態進行操作。該網站很快就會被修改,以鏈接到bar.com。當在foo.com上登錄的用戶點擊bar.com的鏈接時,他們需要神奇地登錄到bar.com。 (我知道這聽起來像是一場安全噩夢,但bar.com僅僅是foo.com上的人們將在一兩天內使用的短窗口的臨時站點)。我們不允許在bar.com上登錄人員,它必須發生在foo.com上。我們試圖在這裏找出解決方案,如果有好的解決方案,還需要更多的解決方案。他是我們的:單獨域上的跨站點身份驗證選項

  1. 在bar.com,檢查引用,如果它的foo.com,使登錄用戶這是非常不安全的,很容易被欺騙。我們知道。

  2. 在foo.com上登錄時,請鏈接bar.com有一個特殊的加密查詢字符串,它表示foo.com上用戶的會話。當鏈接被點擊到bar.com時,讓bar.com接受該查詢字符串並使用Web服務將其傳回給foo.com,foo.com將響應是否這是合法的會話。這比上面的1更安全,因爲查詢字符串會話信息被加密,並且Web服務調用確保其合法會話。

這裏有其他的選擇嗎?讓我再次重申,我們希望有一個更好的解決方案,這個解決方案比上面的更安全,但是這隻適用於只有特定人員才能訪問的臨時站點。我們知道這聽起來像一個奇怪的安排,但它的一個特定的網站,將有一個特定的目的短暫的生活。根據要求,我們需要用戶只能登錄到始發站點。在此先感謝您提供任何提示或指示。

回答

1

我冒昧地說,選項2是你最好的選擇,因爲:

  1. foo.com擁有始發會話信息
  2. foo.com具有暴露身份驗證呼叫的安全服務,可以從bar.com進行驗證
  3. bar.com傳遞包含某種形式的身份驗證令牌的令牌
  4. 然後將令牌傳遞給使用預定憑證對於連接而言是真實的對SSO的跨域

之間foo.com & bar.com很好的例子(單點登錄):Part 1 & Part 2

0

我認爲第二個選項是一個很好的解決方案,你甚至可以沒有Web服務:使bar.com鏈接包含查詢參數,其中包含用戶名(或用戶需要的任何上下文),隨機數(例如隨機數),以及用戶名,用戶IP地址和隨機數的串聯的認證碼(例如,HMAC或數字簽名)。然後,您不需要在兩臺服務器之間進行通信,只需要預先驗證驗證數據(HMAC密鑰/簽名驗證公鑰),並且可以直接在第二臺服務器上驗證信息(記錄一次使用以防止重播攻擊,但是,我想你可能不會在你的場景中擔憂)。