【问题标题】:Securing Java Rest Service : JSON WebToken (JWT ) or oAuth 1.0?保护 Java Rest 服务:JSON WebToken (JWT) 还是 oAuth 1.0?
【发布时间】: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


    【解决方案1】:

    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

    基本上,应用程序的安全性涉及三个主要领域。

    1. 身份验证 你是谁? 可以通过开放 ID 或传统的基于表单登录的方法来完成
    2. 授权 您有权访问的资源? 可以通过Oauth实现
    3. 完整性约束 通过安全 TLS 层 (SSL/HTTPS) 访问我的应用程序

    任何网络应用程序都必须满足这些问题才能变得安全。

    【讨论】:

      【解决方案2】:

      这些都是无与伦比的。 OAuth 是关于 3d 方服务的 SSO(单点登录)场景,而 JWT 只是关于身份验证令牌格式。至少 OAuth 是一个以上级别的标准。 OAuth 1.0 需要客户端加密,而 2.0 版本不需要。 JWT 允许在一个安全领域中组合无状态 REST 服务,如果将 REST API 拆分为多个微服务,这是一个巨大的优势。

      【讨论】:

        猜你喜欢
        • 2017-11-17
        • 1970-01-01
        • 2023-03-11
        • 2012-07-19
        • 2015-12-11
        • 1970-01-01
        • 2012-03-02
        • 2020-07-24
        相关资源
        最近更新 更多