我想使用与AWS签名流程类似的技术为Web应用程序api实现身份验证。服务器将为用户Web浏览器客户端呈现html。该应用程序还将返回非浏览器客户端的json(iphone,android,blackberry,ipad等)。我正在尝试编写身份验证代码,允许单个用户从多个客户端签名(记住)到应用程序。从任何一个客户端注销不应该撤销所有其他客户端的令牌/ cookie。
当用户注册或登录时,客户端(特别是本机移动客户端或Web浏览器)如何获取私钥/密钥?我的理解是不应该通过网络发送密钥?可以通过ssl发送吗?
对于浏览器客户端,存储在cookie或其他形式的本地存储中的私钥是什么?即对于通用api令牌认证,令牌将存储在浏览器的cookie中和手机上的数据库中
当客户端是浏览器时,它如何使用私钥签署请求签名?即生成id +私钥+请求的散列。对于本机移动客户端或服务器到服务器通信,我相信有些库可用于生成签名请求。当请求来自浏览器时,这是如何工作的?
如果需要在多个客户端(平板电脑,iphone,工作电脑,家用笔记本电脑等)上记住用户,用户是否需要为每个客户端设置一组私钥/令牌?
我会使用Devise with Rails,但它要求你编写自己的令牌认证码。
我也在关注OAuth,问题2和4都适用于,但我们真的想调查AWS方法。
答案 0 :(得分:0)
你从一个解决方案(HMAC)开始,但我不认为你的问题"适合您的解决方案:)。
我会尽力回答这个问题。
为什么在共享令牌时共享密钥,例如oAuth实现。令牌由您的应用程序生成,并且在有限的时间内有效。这样您就可以共享访问权限,但不能获取访问应用程序的方法。您使用用户名和密码(或密钥文件)登录,并获得一个授予您访问权限的令牌,直到令牌被撤销。