java - JAX-RS Web 应用程序中的 Apache CXF OAuthDataProvider

标签 java jakarta-ee oauth cxf jax-rs

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

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

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

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

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

最佳答案

我同意 Writing OAuthDataProvider of OAuth 1.0 JAX-RS documentation for CXF 部分的详细信息确实很差。 。我想说 CXF 不会跟踪任何内容,因为该接口(interface)应该提供 token 创建和持久性。

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

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

...并猜测调试 session 中的剩余详细信息。

希望这有帮助

关于java - JAX-RS Web 应用程序中的 Apache CXF OAuthDataProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715555/

相关文章:

java - ImageButton 不会重叠在卡片 View 上,而是一个普通按钮//ImageButton 不与卡片 View 重叠,但按钮正常

php - 无法使 Oauth PHP 扩展正常工作

oauth - oAuth 中的 "consumer"和 "client"有什么区别?

azure - 使用客户端 key 而不是用户凭据通过 MSAL.Net 获取 token

java - 全局 Web 应用程序参数

java - 使用 ContainerRequestFilter 在 Jersey WebService 中自定义 @RolesAllowed 角色

java - ObservableList 中的粗体文本会破坏 ChangeListener

java - 如何从 Java 访问 JavaFX 1.3 静态类成员?

java - 多个集合上的迭代器

java - 在方法完成之前未写入数据库的 JPA 更改