【问题标题】:REST API Security using Signature, where/how to store secret key?使用签名的 REST API 安全性,在哪里/如何存储密钥?
【发布时间】:2012-12-19 00:22:39
【问题描述】:

我创建了一个 REST API 并实现了一个签名系统作为安全层,基本上它的工作原理是我有 API 用户使用密钥(比如说密码)连接到 API,只有用户和API 知道,然后在会话打开后,API 返回一个 API 密钥,用于所有后续调用。

所有后续调用都将提供 API 密钥和不同请求参数的 sha256 哈希,哈希使用密钥创建。

到目前为止一切顺利,但是我面临一个问题,即我有一个完整的 AJAX 客户端调用 API,但我不希望我的用户每次想要打开会话时都输入他们的用户名和密码(密钥)如果他们以前连接到 API,则获取新的 API 密钥。

暂时,我使用 javascript 将密钥以纯文本形式存储在 cookie 中,但对我来说似乎是错误的。

你们也有建议或链接指向我吗?有什么不明白的地方吗?

提前致谢!

【问题讨论】:

    标签: php web-services rest security


    【解决方案1】:

    为他们提供 API 上的哈希租约。租约授予他们在一定时间内访问 API 的权限,并且该时间在令牌中指定。例如,接下来的 7 天可能会很好。您只需将结束日期添加到您的令牌并对其进行签名即可。

    当应用返回尝试并开始一个新会话时,它可以请求服务器为其提供新的租约,假设它们已经通过身份验证,有效期为 7 天。

    如果他们在 7 天后尝试访问服务器,则需要重新进行身份验证。

    【讨论】:

    • 感谢您的回复。这是一个有趣的想法,但是,如果我理解正确的话,假设某些令牌存储在浏览器 cookie 上,7 天的到期时间也可能意味着 7 天的本地漏洞窗口?
    • 如果有人有任何建议,我仍在寻找更多建议。 ;)
    猜你喜欢
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2022-11-16
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多