【发布时间】:2018-01-07 04:02:48
【问题描述】:
我想知道,JWT 或 oAuth 1.0 是保护 Rest 服务的最佳方法。我们正计划开发基于 Dojo 的 Web 应用程序和基于 JAX-RS REST 的 Web 服务。有人可以帮助我吗?。
如果你能推荐一些在 Java 中实现相同功能的示例代码,那就太好了。
提前致谢。
【问题讨论】:
标签: jakarta-ee oauth dojo jax-rs jwt
我想知道,JWT 或 oAuth 1.0 是保护 Rest 服务的最佳方法。我们正计划开发基于 Dojo 的 Web 应用程序和基于 JAX-RS REST 的 Web 服务。有人可以帮助我吗?。
如果你能推荐一些在 Java 中实现相同功能的示例代码,那就太好了。
提前致谢。
【问题讨论】:
标签: jakarta-ee oauth dojo jax-rs jwt
JWT 和 OAuth 是标准。 JWT 标准告诉我们如何创建将在服务器和客户端(浏览器或 API)之间共享以维护状态的令牌。 传统上,我们使用 jsession ID 作为令牌,由服务器创建,然后通过 cookie 或 URL 中的查询发送给客户端。该 jession Id 稍后由客户端为每个请求重复提交给服务器。这是服务器用来查找存在于服务器内存中的会话对象的标识符。
现在 JWT 是另一种维护会话的方法。与会话对象保存用户详细信息一样,JWT 令牌以同样的方式在令牌本身中包含用户信息。因此,我们将 JWT 称为价值令牌,因为它们包含信息本身。而 jsession Id 是引用令牌,因为它是对服务器维护的会话对象的引用。
JWT 也有优点和缺点: 优点:最适合集群环境 缺点:不打算在令牌包含安全信息时使用。由于 JWT 是经过编码的,因此它们可以被恶意用户通过网络攻击。同时,jsession id 只是一个参考,而实际数据保存在 session 对象中。
因此,根据您的要求,从选项中选择您希望在会话中保留的内容。
OAuth :这是授权的标准,这里客户端服务器需要授权服务器对用户数据(资源所有者)的授权。 OAuth 2 的基本示例:假设有一个在线游戏应用程序在服务器上运行,用户访问了该应用程序,该应用程序开始加载到用户的浏览器中。现在该应用程序要求用户授予在他的 Facebook 帐户上发布有关游戏的数据。在这里,用户授权他的那个应用程序通过 OAuth 标准访问他的 Facebook 帖子。参考内部机制https://www.rfc-editor.org/rfc/rfc6749
基本上,应用程序的安全性涉及三个主要领域。
任何网络应用程序都必须满足这些问题才能变得安全。
【讨论】:
这些都是无与伦比的。 OAuth 是关于 3d 方服务的 SSO(单点登录)场景,而 JWT 只是关于身份验证令牌格式。至少 OAuth 是一个以上级别的标准。 OAuth 1.0 需要客户端加密,而 2.0 版本不需要。 JWT 允许在一个安全领域中组合无状态 REST 服务,如果将 REST API 拆分为多个微服务,这是一个巨大的优势。
【讨论】: