2

我有一个使用 cxf DOSGi [1] 的客户端 - 服务器应用程序。现在我想从服务器验证客户端并为客户端创建一个会话。客户端将有一个 cookie,用于在通过身份验证后访问服务。我想知道服务器访问 HTTP 会话的最佳方式是什么,以及在经过身份验证后在客户端存储 cookie 的最佳方式。

我正在考虑在经过身份验证后在应用程序级别创建一个自定义 Session 对象并将 Cookie 对象发送到客户端。所以当客户端访问服务方法时,它会将cookie作为参数传递。客户将在每种服务方法中得到验证。但我不认为这是处理这个问题的最佳方法,因为每个服务方法都必须有一个单独的参数来传递 Cookie。

我在谷歌搜索时遇到了这个问题[2]。是否可以在 DOSGi 的服务中获取“WebServiceContext”?即使我得到它,我将如何将 cookie 存储在客户端并确保客户端在每个后续 Web 服务调用中发送 cookie?

[1] http://cxf.apache.org/distributed-osgi-greeter-demo-walkthrough.html

[2]我在使用网络服务时如何管理用户的会话?

非常感谢任何帮助。谢谢。

4

1 回答 1

1

您可以使用自定义意图来控制身份验证。基本上,意图是 DOSGi 应用于 Web 服务的 CXF 功能。您在单独的包中创建该功能,然后使用其名称的特殊属性发布它:请参阅DOSGi 参考指南

在一个项目中,我们创建了一个功能,它读取包含身份验证上下文的 threadlocal,并使用存储在那里的凭据来填充 CXF 身份验证。因此,您只需在应用程序启动时将凭据存储一次到 threadlocal 中,所有调用都可以正常工作。

目前没有针对这种情况的简单文档或示例,但我计划在不久的将来创建它,因为身份验证是一个常见问题。我计划使用 shiro 作为身份验证框架,并为 CXF 编写一个通用适配器。准备好后,我会添加评论或其他答案。与此同时,您可以尝试自己做同样的事情。

于 2013-06-23T19:03:07.090 回答