2012-04-13 77 views
17

我對SiteMinder和SSO一般都是全新的。我整個下午都在SO和CA的網站上搜索了一個基本的例子,但找不到一個。我不在乎設置或編程SM或類似的東西。所有這些都已經由其他人完成了。我只想調整我的JS web應用程序以使用SM進行身份驗證。我怎樣才能相信SiteMinder HTTP頭沒有被篡改?

我得到SM將添加一個HTTP頭,如SM_USER這樣的密鑰,它會告訴我用戶是誰。我沒有得到的是 - 什麼阻止任何人自己添加這個頭,並完全繞過SM?我必須在服務器端代碼中確認SM_USER是否真的來自SM?我想安全cookie參與...

回答

17

SM Web代理安裝在Web上Server旨在攔截所有流量,並檢查是否資源請求是......

  1. 保護由SiteMinder的

  2. 如果用戶有一個有效的SMSE SSION(即是身份驗證

  3. 如果1和2是真的,那麼WA檢查SiteMinder策略服務器,看看用戶是授權訪問請求的資源。

爲確保您沒有HTTP頭注入用戶信息,SiteMinder WebAgent將重寫所有SiteMinder特定的HTTP頭信息。實質上,這意味着您可以「信任」WebAgent所提供的有關用戶的信息,因爲它是由服務器上的Web代理創建的,而不是傳入請求的一部分。

3

因爲所有的流量應該通過SiteMinder Web代理這樣即使用戶設置該頭就會被改寫/刪除

2

SiteMinder r12.52包含一個名爲增強會話保證與DeviceDNA™的新功能。 DeviceDNA可以用來確保SiteMinder會話Cookie沒有被篡改。如果會話在不同的計算機上重播,或者從同一臺計算機上的另一個瀏覽器實例重播,則DeviceDNA將捕獲並阻止請求。

Click here to view a webcast discussing new features in CA SiteMinder r12.52

+0

我在想這件事。我注意到在一個實現中,SM_SESSION(會話cookie)每分鐘都在更新一次。我想知道安全cookie的默認超時是什麼。 – gabor 2014-02-17 18:32:16

2

所有SiteMinder的架構確實使應用程序只是有信任「SM_」報頭的假設。

實際上,這可能還不夠,具體取決於應用程序的體系結構。 基本上,你有三種情況:

  • 網頁代理安裝在Web服務器在您的應用程序運行(對Apache/PHP應用典型案例)上:如上所述,您可以信任的標頭,不要求能到達您的應用程序,而不會被網絡代理過濾。
  • Web代理安裝在與運行應用程序不同的Web服務器上,但安裝在同一臺計算機上(典型情況:安裝在Apache前端的SM代理服務於JEE應用程序服務器):必須確保沒有請求可以直接到達你的應用程序服務要麼將應用程序服務器綁定到回送接口,要麼過濾服務器上的端口。
  • Web代理在您的應用程序前面的反向代理上運行。相同的評論。這裏唯一的解決方案是在您的應用程序上實施IP篩選器,以僅允許來自您的反向代理的請求。
1

典型企業架構將是網絡服務器(代理的SiteMinder)+應用服務器(應用程序)未啓用

說IP過濾,和連接板請求直接允許應用服務器,web服務器繞過和SSO劑。

如果應用程序必須實現一個解決方案來聲明請求標頭/ cookie沒有被篡改/注入,我們是否有任何解決方案與以下內容相似?

  • 發送在一個單獨的cookie加密或加密(符號/ ASYM)的SM_USERID與SMSESSION ID
  • 應用程序將使用密鑰來解密SMSESSION或SM_USERID以檢索用戶ID,會話終結狀態和任何沿其他附加細節和授權細節(如果適用)。
  • 應用程序現在信任user_id並執行身份驗證
+0

您可以在Web和App服務器之間實現TLS/SSL客戶端身份驗證,以確保數據沒有被篡改,但這會增加環境的複雜性,特別是如果您的應用服務器無法在內部處理SSL客戶端身份驗證。 – bcarroll 2014-08-16 05:01:47