【问题标题】:JWT token encryption and transferring in http getJWT令牌加密和http get中的传输
【发布时间】:2015-10-02 23:00:17
【问题描述】:

我想验证一种我们想使用的安全方法。 我们有两个应用程序,我们想使用 jwt 令牌传递数据(从一个 pllication 重定向到另一个 + 在令牌中传递敏感信息)。

为此,我们创建了具有共享密钥的 JWTSigner 并签署了所有声明。

JWTSigner signer = new JWTSigner(secret);
return signer.sign(claims);

根据我的理解,我们需要额外加密此信息,因为签名只会阻止我们篡改此信息。

问题是在 url 中传递这个令牌作为参数是否足够安全?

【问题讨论】:

    标签: java security single-sign-on jwt


    【解决方案1】:

    视情况而定。

    如果操作正确,是的,它是安全的——因为只有您的应用程序才能颁发有效令牌。如果做错了,那就一文不值。

    如何正确地做(TM):

    • JWT 中的有效载荷一般不加密;经过base64解码后可以被第三方读取。签署它可以防止篡改,但不能泄露。
    • JWT 有一个“alg”字段,可用于指定使用的加密算法。是attacker-friendly:不要相信它的内容。
    • 让自己免受重放攻击,例如通过使用和验证请求计数器或时间戳。
    • 使用强加密。公钥加密的优点是允许每个端点验证对方,即使不知道对方的私钥;但对称加密也是一种选择。
    • 保护您的密钥。使用不同的密钥进行测试和部署,切勿将密钥签入源代码管理。

    【讨论】:

    • 对“使用强加密”项的澄清。 Id 令牌将使用 http get 传递,唯一的选择是使用对称密钥。我说的对吗?
    • 否 - 可以使用您的 JWT 实现支持的任何算法完成签名,无论您要签署什么声明(ID,...)。可选算法之一是 RSA(公钥),由于您提到 Java,快速搜索显示它受 connect2id.com/products/nimbus-jose-jwt 支持 - 我没有亲自使用过。
    猜你喜欢
    • 2019-07-25
    • 2020-07-15
    • 2018-11-25
    • 2013-08-15
    • 2017-06-11
    • 2016-09-13
    • 2023-01-14
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多