【问题标题】:Verify or validate a signed request验证或验证签名的请求
【发布时间】:2018-08-25 08:29:29
【问题描述】:

客户端正在使用签名请求(我相信使用 SignPost)来调用我的 Spring boot REST API 服务器,我应该在允许访问我的资源之前验证或验证该签名。

我的问题是如何验证该签名?

编辑

我对 SignPost 不是很熟悉,但我忘了提到我有客户的密钥和秘密,我想我必须用它来验证签名。

还要获取签名,我是否从请求的标头中获取它?

【问题讨论】:

    标签: spring-boot oauth restful-authentication signpost


    【解决方案1】:

    一种方法是将签名字节与请求一起发送,您可以使用 REST 的 GET 方法获取签名(如果您的请求是 RESTful api)并使用 Java 安全类内置函数进行验证,

    Key publicKey = getPublicKey(); //provide path of public key here...
    Signature sig = Signature.getInstance("SHA256WITHRSA");
            sig.initVerify((PublicKey) publicKey);
            sig.update(<Request on which sig are applied>);
            boolean result = sig.verify(verifyRequest.getSignature());
    

    这是在允许访问您的资源之前验证签名的最简单方法。

    【讨论】:

    • 要验证签名我只需要客户端密钥还是秘密?,签名是用我不太熟悉的SignPost完成的,但我认为它使用客户端密钥和秘密进行签名。
    • 验证签名需要客户端密钥,即公钥。签名需要一个信任库,例如 JKS,其中包括哈希,通过它获取私钥并对其进行签名..
    猜你喜欢
    • 2015-04-01
    • 2013-01-25
    • 1970-01-01
    • 2014-05-29
    • 2020-10-31
    • 2012-05-01
    • 2020-03-11
    • 2015-06-28
    • 2022-07-20
    相关资源
    最近更新 更多