当前位置: 首页 > 知识库问答 >
问题:

使用Apache CXF和OAuth2.0保护JAX-RS

陈斌蔚
2023-03-14

我想在我的JAX-RS RESTful服务上实现OAuth2.0授权。

经过一些研究,我找到了Apache CXF来做这件事。但是,我还没有找到任何关于它的例子,对我来说也不清楚。在哪里可以找到一些使用OAuth2.0的JAX-RS示例?

共有1个答案

孙元明
2023-03-14

免责声明:这个答案并没有真正为使用OAuth2.0保护JAX-RS提供解决方案。但它的目的是给莫哈辛阿里一些见解,他开始了对我的问题的赏金。也许,我用的解决办法能对他有用。

关于赏金:

这个问题广泛适用于广大听众。需要一个详细的规范的答案来解决所有的问题。

在前一阵子问了这个问题之后,我意识到OAuth2.0对于我的需求来说会太复杂。即使是基本的身份验证也足以满足我的要求。但我最终使用了基于在服务器端签名的JWT令牌的身份验证方案。我在这个答案中描述了我的解决方案。

Apache CXF提供了OAuth2.0的实现。如果您想要使用OAuth来保护API的安全,那么它可能值得一看。Apache CXF还支持OAuth1.0。

关于评论中提到的以下情况:

[...]恶意用户访问某人的计算机,打开浏览器,查看访问令牌并将访问令牌复制到自己的浏览器[...]

如果恶意用户对计算机具有物理访问权限,HTTPS将无法阻止该恶意用户从某人的计算机窃取身份验证令牌。事实上,如果真的发生了,我觉得你应该有更大的顾虑...

为了增加一个安全层,您可以考虑将令牌与为其颁发令牌的用户的IP地址一起存储。对于命中API的每个请求,将传入请求的IP与您为其颁发令牌的用户的IP进行比较。如果IP不匹配,则拒绝请求。

如果您使用JWT令牌,而不是存储整个令牌,只存储JWT ID声明(jti)。只需确保该值是唯一的(java.util.uuid应该足以生成jti值)。

对于完全无状态的身份验证(既不存储整个令牌,也不存储令牌ID),您可以将IP地址存储在JWT令牌声明中,但注意令牌要长几个字节。

 类似资料:
  • 我有一个基于ofbizsoap的web服务,它是公开的(可以接受请求),并且生成了WSDL代码和WSDL URL。我的问题是,有没有一种方法可以使用CXF Java客户端或JAX-WS客户端使用此web服务? 总的来说,我希望能够将客户机添加到Mule esb组件中,作为Mule流的一部分。我可以使用AXIS2调用Obiz web服务,但Mule ESB似乎不支持AXIS2,这给我带来了另一个问题

  • 我正在尝试在zookeeper和kafka之间设置kerberos标识。 我遵循了此处提供的配置步骤:https://docs.confluent.io/4.1.1/kafka/authentication_sasl_gssapi.html#sasl-gssapi经纪人。 Kafka代理成功连接到zookeeper集合,代理正在zNode上设置ACL。 在Zookeeper中,我可以看到znode

  • 我在没有应用服务器的情况下使用JAAS进行了简单的授权和身份验证。所以现在我想知道是否有可能在jboss中使用JAAS来保护JAX-RS Web服务。我希望用户为了登录他们提供他们的电子邮件和密码,然后授权用户其他显示错误。如能举一个工作实例,将不胜感激。

  • 问题内容: 有什么办法可以实现安全的FTP ? 如果没有,那么Java还有哪些其他选择? 问题答案: 您可以使用org.apache.commons.net.ftp。 FTPSClient, 而不是org.apache.commons.net.ftp。 FTPClient 具有安全的ftp http://commons.apache.org/proper/commons- net/apidocs/

  • 我真的很纠结于PDFBOX的文档。对于这样一个受欢迎的图书馆来说,信息似乎有点稀薄(对我来说!)。 无论如何,Im的问题与保护PDF有关。目前我想要的只是控制用户的访问权限。具体地说,我想防止用户能够修改PDF。 如果我省略了访问权限代码,那么一切都可以正常工作。我正在阅读一个PDF从外部资源。然后我读取并填充字段,在保存新的PDF之前添加一些图像。一切正常。 当我添加这段代码时,所有的文本和图像