0

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

SiteMinder 用于提供身份验证。登录成功后,请求头会包含用户的登录id,可以被

request.getHeader("sm_user");

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

但是我如何在 EJB 层中获取这些信息而不将其作为参数显式传递呢?如何在拦截器的帮助下使用 Principal 对象获取/设置凭据?

请提供您宝贵的意见。

4

2 回答 2

0

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

于 2011-01-18T17:19:38.100 回答
0

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

于 2011-07-05T23:18:28.883 回答