我正在尝试使用私有& amp;来实现API的身份验证公钥。
我想要做的是提供一个私钥,用它散列一些数据并在标题中发送散列,然后在服务器上再次重新发送相同的数据进行比较。
我遇到的问题是,我应该散列什么样的数据,请求URI,内容类型以及内容本身,但是当请求是GET且没有内容时会是什么。
使用私钥散列任何数据是否足够安全,或者我是否需要做一些特别的事情?
答案 0 :(得分:2)
如评论中所述,您不需要此处的公钥/私钥对。你想要的是身份证明。客户端会给你他们的用户名/ ID(他们会声称一个身份),你还需要额外的证明,确实是他们。为此目的,他们发送一个只有他们应该知道的秘密。这是一个简单的标记。
您希望避免来回传输此令牌。记住它是秘密并且应尽可能保密。相反,你要求客户发送的是间接证明;你要求他们签署请求。
签署请求意味着他们只是hash the contents of the request with a MAC algorithm,他们的秘密令牌是哈希的关键。