2011-01-12 21 views
0

我正在使用EJB 3.0並將其方法公開爲Web服務的應用程序。SiteMinder和EJB 3.0 - 讀取用戶登錄ID

SiteMinder用於提供身份驗證。登錄成功後,請求頭會包含用戶的登錄ID可以通過

request.getHeader("sm_user"); 

此信息,請WebService的終點被讀取,並且可以在一個Servlet過濾器也可以讀。

但是,如何在不顯式傳遞參數的情況下在EJB層獲取這些信息?如何在Interceptor的幫助下使用Principal對象獲取/設置憑據?

請提供您的寶貴意見。

回答

0

在EJB3.0中,您的Web應用程序和EJB運行在不同的容器中,並且EJB無法訪問任何Web容器數據。 你將不得不通過這些信息。

0

我認爲您需要在您的應用程序服務器上安裝SiteMinder應用程序服務器代理,以便通過EJB中的ctx.getCallerPrincipal()。getName()調用正確傳播身份。