【问题标题】:Java library to generate Oauth1.0a signatureJava库生成Oauth1.0a签名
【发布时间】:2016-07-30 04:37:05
【问题描述】:

我对 Oauth 很陌生,但需要学习如何在 Java 中进行操作,以便我们可以对 REST 请求进行身份验证。这是我到目前为止所得到的。

经过一番阅读,我决定尝试ScribeJava。我制作了一个自定义 API,它实现了 DefaultApi10a 并指向我们的端点。我这样设置服务:

final OAuth10aService service = new ServiceBuilder()
      .apiKey("key")
      .apiSecret("secret")
      .build(TestApi.instance());

这不起作用。在进行了一堆挖掘之后,似乎因为我们使用的是自签名证书,所以我无法访问远程主机。我收到一条错误消息,提示连接到远程服务时出现问题。 ScribeJava 似乎没有办法禁用使用自签名证书的验证。

既然我们希望能够使用请求上的授权标头进行身份验证,我将如何使用 Java 库仅生成标头部分?我环顾四周,找不到任何东西。

作为参考,我们使用 Python 成功地进行了良好的 Oauth REST 调用,如下所示:

headeroauth = OAuth1(Oauth1Key, Oauth1Secret,
                 signature_type='auth_header')

myResponse = requests.get("endpoint_here", auth=headeroauth, verify=False)

关于如何使用 Java 完成一些相同的事情的任何意见?

【问题讨论】:

    标签: java oauth apache-httpclient-4.x scribe


    【解决方案1】:

    我喜欢使用很多库来创建 OAUTH 登录。但在我看来,最简单的是JWT(Json Web Token)。您可以在此处找到使用说明:

    https://github.com/auth0/java-jwt

    基本上你要做的就是按照这三个步骤作为登录流程:

    1) 当用户尝试登录时,验证他的用户名和密码,如果成功则生成一个用 KEY STORED IN YOUR BACKEND 签名的 JWT。该库本身非常清楚如何签署 Json Web Token 对象。

    2) 将签名的令牌返回给用户,用户将在每个请求的标头中将此令牌发送给您需要身份验证的每个 REST 服务/端点

    3) 你首先用你从用户那里得到的令牌做的是验证签名(图书馆也很清楚如何做到这一点)。如果验证通过意味着令牌是可信的,您可以继续使用您的应用程序。

    关于 JWT 很酷的一点是,您可以将 非私有 信息放在对您有用的令牌中,这样您就不必一直在数据库中查找它。例如,userId、用户电子邮件、令牌时间到期本身等。

    显然,这些数据将作为 base-64 字符串传递给 Token 内的用户,所以如果他足够聪明,他可以解码并查看里面的内容(他会看到他的 userId、用户名或您放置的任何内容令牌内部),但他无法处理的是签名。因此,如果他试图聪明地改变令牌中的任何值并编码一个新的值来破解您,您的令牌签名验证将失败,您可以继续执行您决定的任何惩罚..

    在这里您可以看到 JWT 内容解码和编码的实时示例。

    https://jwt.io/

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      您可以如下设置标题。

        HttpPost post = new HttpPost("someurl");
        post.addHeader(key1, value1));
        post.addHeader(key2, value2));
      

      访问 Setting Header in request header 了解更多关于在 rest 请求中设置标头的详细信息。

      【讨论】:

        猜你喜欢
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        • 2015-07-24
        • 1970-01-01
        • 2022-12-15
        • 1970-01-01
        • 2016-06-29
        • 2020-05-11
        相关资源
        最近更新 更多