使用cxf处理jax-rs Web服务中的身份验证和授权

时间:2012-07-05 12:06:15

标签: web-services cxf jax-rs

我有一个有jsps的webapp。我没有使用任何struts或mvc框架。我们使用Apache CXF构建JAX-RS服务。

现在我想做以下

  1. 允许用户使用用户名和密码登录。
  2. 对于对webservice的所有后续调用,应使用相同的身份验证信息。
  3. 登录用户有一些详细信息(个人资料照片,全名),我想让它在整个会话期间保持不变。
  4. 此外,还定义了其角色。根据角色,只允许某些jax-rs调用。
  5. 在JSP中也使用角色来限制对功能的访问。
  6. 可以在外部访问Web服务,因此应使用身份验证和授权信息。
  7. 据我所知,我们不应该在jax-rs服务中使用session。处理上述情况的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

最好的方法取决于你如何估计它。 我这样做的方法是

  1. 在同一个实例上运行Rest服务和JSP
  2. 使用web.xml和CXF设置安全策略,该策略允许用户/ pw身份验证和授权,ROLES绑定到jax-rs URL和JSP URL。
  3. 基于2,可以直接在外部调用jax-rs服务,但是如您指定的那样需要user / pw。
  4. 希望这可以帮到你一点。

答案 1 :(得分:0)

将cxf安全验证视为任何其他http或https验证。你必须拦截请求并将其传递给其他服务。您可以使用siteminder之类的任何工具,否则可以编写CXF拦截器来进行自己的安全验证。在拦截器中,您可以调用SSO类型的令牌生成器服务器,以防您拥有基础架构或调用数据库(如果您的架构是以这种方式构建的)。您可以使用缓存来减少资源命中,并可以查看自定义或休眠缓存。启用Https必须在服务器配置中完成。如果你有证书,你可以使用相同的其他你可以使用openssl生成自己的证书。