2011-08-10 43 views
1

我們有一個運行在Java/J2EE技術​​上的Portlet。它通過需要用戶認證的HTTP請求與另一個應用程序/系統進行交互。當前的解決方案從門戶中檢索登錄用戶的用戶名和密碼,並使用「HTTPClient」API將此信息傳遞給後端系統,以根據用戶的認證和授權檢索內容。SiteMinder和HTTP客戶端 - 用戶登錄信息

有努力,使爲門戶網站看守者。通過啓用站點管理器,Portal不再提供登錄用戶的用戶名和密碼。理想的方式是後端應用程序還啓用站點管理器,以便Portlet可以傳遞登錄標記或cookie值。

尋找臨時的辦法,直到後端應用程序是啓用的SiteMinder。我們可以啓用/強制用戶輸入用戶名和密碼嗎?我想不出這種可能性,因爲Portlet代碼(使用HTTP客戶端訪問應用程序的後端URL,而不是瀏覽器)。我能想到的一種可能的方式是,開發一個新屏幕(UI),讓用戶在Portlet中輸入用戶名和密碼,並使用該屏幕通過Java代碼對後端系統進行身份驗證。請讓我知道是否有其他想法。

而且,讓我知道如果這個問題是混亂的,我會提供更多的細節。

由於

回答

2

的SiteMinder可以在HTTP頭連接的應用程序(UID,電子郵件地址等)動態地提供用戶信息。此行爲在Siteminder策略服務器上配置。默認情況下,HTTP標頭SM_USER(或類似)包含已認證用戶的用戶名。

然後,您必須調整您的portlet代碼以從請求中獲取這些頭文件,並將其像您以前那樣提供給後端應用程序。

1

我不會建議使用SM_USER頭用於跟蹤用戶。 SM_USER包含提供給憑證收集器的標識,並且將根據所使用的認證方案的類型進行更改。

例如: 如果你有收集電子郵件地址而不是用戶ID基於HTML窗體身份驗證方案,電子郵件地址會在SM_USER頭髮送。對於X.509認證方案,證書中的SubjectDN將位於SM_USER頭中。

更好的選擇是使用SM_UNIVERSALID標頭,因爲它將始終包含通用標識屬性。通用ID屬性在用戶目錄對象中配置(通常設置爲「uid」)。