2011-01-12 4 views
0

Я работаю над приложением, использующим EJB 3.0, и раскрывает его методы как веб-службы.SiteMinder и EJB 3.0 - Чтение идентификатора входа пользователя

SiteMinder используется для обеспечения аутентификации. После успешного входа в систему, заголовок запроса будет содержать логин пользователя идентификатор, который может быть прочитан

request.getHeader("sm_user"); 

Эта информация доступна в конце WebService точки и могут быть считаны в Servlet фильтр.

Но как я могу получить эту информацию на уровне EJB, явно не передавая ее в качестве параметра? Как я могу получить/установить учетные данные с помощью объекта Principal с помощью Interceptor?

Просьба предоставить ценные данные.

ответ

0

В EJB3.0 ваше веб-приложение и EJB запускаются в разных контейнерах, и EJB не могут получить доступ к каким-либо данным веб-контейнера. вам необходимо будет передать эту информацию.

0

Я думаю, вам необходимо установить Агент Application Server для SiteMinder на сервере приложений, чтобы идентификатор был правильно распространен через вызов ctx.getCallerPrincipal(). GetName() в вашем EJB.