2

我正在编写一个公开 REST API 的普通 JAX-RS Web 应用程序;我使用 Spring,但仅用于实际配置,并且依赖普通的 CXF 和 Hibernate 来实现所有其他功能。

我现在想使用 OAuth 1.0 保护 API 的某些部分。为此,我尝试将org.apache.cxf.rs.security.oauth.provider.OAuthDataProvider(连同其他一些 bean)与我的数据库一起使用。

但是,我发现文档非常不清楚,并且很难找到说明应该如何使用该 bean 的示例。具体来说,这些事情是不清楚的:

  • 和方法应该创建令牌createAccessTokencreateRequestToken我大概还必须将生成的令牌持久化到数据库中。但是我必须坚持多少每个令牌?存储是否足够,(consumerKey, tokenId, tokenSecret)或者是否还需要持久保存,例如客户端密码、回调 URI、范围等?
  • 同样,在getAccessToken和中getRequestToken,我必须“填写”多少才能使服务正常工作?提供令牌 ID 和秘密就足够了吗,还是我真的必须提供整个Client对象等等?
  • 我到底需要提供finalizeAuthorization什么?
  • 如果我跳过上述任何操作(例如,通过不设置客户端密码getAccessToken),我会失去一些功能吗?

我对 OAuth 1.0 协议有相当深入的了解;上述大多数问题的原因是很难辨别 CXF 为我跟踪的内容。

4

2 回答 2

3

我同意在为 CXF 编写 OAuth 1.0 JAX-RS 文档的 OAuthDataProvider部分中的详细信息真的很差。我会说 CXF 不跟踪任何东西,因为这个接口应该提供令牌创建和持久性。

您可以完全自由地创建和持久化令牌,无论是使用内存存储还是使用直接 JDBC 或 Hibernate 进行数据库持久化。

我建议您从以下示例中获得灵感:

...并猜测调试会话中的剩余细节。

希望这可以帮助

于 2013-06-03T08:36:10.690 回答
0

CXF OAuthDataProvider 预计将是一个以数据为中心的实现,与 OAuth2 相关问题几乎没有关系,尽管它可以在运行时和授权处理程序所做的事情之上添加自己的验证......

于 2014-04-11T13:21:30.910 回答