我正在开发一个使用EJB 3.0的应用程序,并将其方法公开为Web服务。
SiteMinder用于提供身份验证。成功登录后,请求标头将包含用户的登录ID,可以通过
读取request.getHeader("sm_user");
此信息可在WebService端点获得,也可以在Servlet过滤器中读取。
但是如何在不明确地将其作为参数传递的情况下在EJB层中获取此信息?如何在Interceptor的帮助下使用Principal对象获取/设置凭证?
请提供您宝贵的意见。
答案 0 :(得分:0)
在EJB3.0中,您的Web应用程序和EJB在不同的容器中运行,EJB无法访问任何Web容器数据。 你必须传递这些信息。
答案 1 :(得分:0)
我认为您需要在应用程序服务器上安装SiteMinder的Application Server Agent,以便通过EJB中的ctx.getCallerPrincipal()。getName()调用正确传播标识。