SiteMinder和EJB 3.0 - 读取用户登录ID

时间:2011-01-12 23:05:54

标签: java authentication ejb-3.0 interceptor siteminder

我正在开发一个使用EJB 3.0的应用程序,并将其方法公开为Web服务。

SiteMinder用于提供身份验证。成功登录后,请求标头将包含用户的登录ID,可以通过

读取
request.getHeader("sm_user");

此信息可在WebService端点获得,也可以在Servlet过滤器中读取。

但是如何在不明确地将其作为参数传递的情况下在EJB层中获取此信息?如何在Interceptor的帮助下使用Principal对象获取/设置凭证?

请提供您宝贵的意见。

2 个答案:

答案 0 :(得分:0)

在EJB3.0中,您的Web应用程序和EJB在不同的容器中运行,EJB无法访问任何Web容器数据。 你必须传递这些信息。

答案 1 :(得分:0)

我认为您需要在应用程序服务器上安装SiteMinder的Application Server Agent,以便通过EJB中的ctx.getCallerPrincipal()。getName()调用正确传播标识。