2011-01-12 29 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()调用正确传播身份。