gpt4 book ai didi

security - 如何从零开始实现HMAC-SHA认证?

转载 作者:行者123 更新时间:2023-12-02 04:55:57 24 4
gpt4 key购买 nike

我想使用与 AWS 签名过程类似的技术为 Web 应用程序 API 实现身份验证。服务器将为用户 Web 浏览器客户端呈现 html。该应用程序还将为非浏览器客户端(iphone、android、黑莓、ipad 等)返回 json。我正在尝试编写身份验证代码,以允许单个用户从多个客户端登录(记住)到该应用程序。从任何一个客户端注销不应该撤销所有其他客户端的 token /cookie。

  1. 当用户注册或登录时,客户端(尤其是 native 移动客户端或网络浏览器)如何获取私钥?我的理解是关键不应该通过网络发送?可以只通过 ssl 发送吗?

  2. 对于浏览器客户端,私钥是存储在 cookie 中还是其他形式的本地存储中? IE。对于通用 api token 身份验证, token 将存储在浏览器上的 cookie 中和手机上的数据库中

  3. 当客户端是浏览器时,它是如何用私钥签署请求签名的?即生成 id + 私钥 + 请求的散列。对于 native 移动客户端或服务器到服务器的通信,我相信有一些库可用于生成签名请求。当请求来自浏览器时,这是如何工作的?

  4. 如果需要在多个客户端(平板电脑、iphone、工作计算机、家用笔记本电脑等)上记住用户,用户是否需要为每个客户端拥有一组私钥/ token ?

我会使用 Devise with Rails,但它需要您编写自己的 token 身份验证代码。

我也在研究 OAuth,问题 2 和 4 都适用,但我真的很想研究 AWS 方法。

最佳答案

您从一个解决方案 (HMAC) 开始,但我认为您的“问题”不适合您的解决方案:)。

我会尽力回答这个问题。

  1. 据我了解,私钥将派生自共享的公钥。或者您可以共享私钥,但前提是身份验证已经建立(换句话说:您已经确定您正在与谁交谈)并且连接是安全的(加密的)。不过,您仍然容易受到中间人攻击。
  2. 我不确定。 cookie 不安全。窃取cookie,窃取私钥。我的首选是本地存储的 key (文件或存储),用密码加密
  3. 您必须设计某种客户端库(使用 javascript 或类似语言)。
  4. 是的。

当您可以共享 token 时,为什么要共享 key ,例如 oAuth 工具。 token 由您的应用程序生成,并且在有限的时间内有效。通过这种方式,您可以共享访问权限,但不能共享获取应用程序访问权限的方式。您使用用户名和密码(或 key 文件)登录,您将获得一个 token ,在 token 被撤销之前授予您访问权限。

关于security - 如何从零开始实现HMAC-SHA认证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22297560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com