dojo 保护Java Rest服务:JSON网络令牌(JWT)还是oAuth 1.0?

mlmc2os5  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(147)

我想知道,JWT或oAuth 1.0是保护Rest服务的最佳方法。我们计划开发一个基于Dojo的Web应用程序和基于JAX-RS的Web服务。有人能帮我吗?
如果您能提供一些在Java中实现相同功能的示例代码,那就太好了。
先谢了。

pbwdgjma

pbwdgjma1#

JWT和OAuth是两种标准,JWT标准告诉我们如何创建令牌,令牌将在服务器和客户端之间共享(浏览器或API)来维护状态。传统上,我们使用jsession ID作为令牌,它由服务器创建,然后在cookie中发送给客户端,或者作为URL中的查询。2客户端随后将该jsession ID重复提交给服务器,用于每个请求。这是服务器用来查找服务器内存中存在的会话对象的标识符。
现在,JWT是另一种维护会话的方法。就像会话对象保存用户详细信息一样,JWT令牌以同样的方式在令牌本身中包含用户信息。因此,我们将JWT称为值令牌,因为它们包含信息本身。而jsession Id是引用令牌,因为它是对服务器维护的会话对象的引用。
JWT也有优点和缺点:优点:最适合群集环境缺点:当令牌包含安全信息时不使用。因为JWT被编码,所以它们可以被恶意用户通过网络攻击。同时,jsession id只是一个引用,而实际数据保存在session对象中。
因此,根据您的要求,您想要保留在会话中的内容,从选项中进行选择。
OAuth:这是授权的标准,这里客户端服务器需要授权服务器对用户数据(资源所有者)进行授权。OAuth 2的基本示例:假设有一个在线游戏应用程序在服务器上运行,用户访问了开始加载到用户浏览器中的应用程序。现在,该应用程序请求用户赠款在他的Facebook帐户上发布有关游戏的数据。这里,用户通过OAuth标准授权他的该应用程序访问他的Facebook帖子。参考内部机制https://www.rfc-editor.org/rfc/rfc6749
基本上,应用程序的安全性涉及三个主要方面。
1.身份验证您是谁?可以通过开放ID或传统形式的基于登录的方法来完成
1.授权资源您被授权访问吗?可以通过Oauth实现
1.完整性约束通过安全TLS层(SSL/HTTPS)访问应用程序
任何Web应用程序都必须满足这些问题才能变得安全。

evrscar2

evrscar22#

这些都是无法比较的。OAuth是关于SSO的(单点登录)场景对于第三方服务,而JWT仅仅是关于认证令牌格式的。至少OAuth是一个更高级别的标准。OAuth 1.0需要客户端加密,而在它的2.0版本中不需要。JWT允许在一个安全领域中组合无状态REST服务,如果将REST API拆分为多个微服务,这将是一个巨大的优势。

相关问题