【发布时间】:2011-11-13 15:55:50
【问题描述】:
我正在开发一个 Web 应用程序。它使用 oauth 从不同的服务进行身份验证。 将这些令牌和机密直接保存到数据库中是否存在任何风险。还是我应该加密它们?
保存oauth令牌和秘密的一般安全模式是什么
【问题讨论】:
我正在开发一个 Web 应用程序。它使用 oauth 从不同的服务进行身份验证。 将这些令牌和机密直接保存到数据库中是否存在任何风险。还是我应该加密它们?
保存oauth令牌和秘密的一般安全模式是什么
【问题讨论】:
这个帖子回答了你所有的问题:
Securly Storing OpenID identifiers and OAuth tokens
基本上,以下内容以一种或其他方式相互依赖:
除非消费者密钥/秘密也存在风险,否则您不需要加密访问令牌/秘密。访问令牌只能与生成它们的消费者密钥/秘密结合使用。
【讨论】:
我假设您在谈论典型的“服务提供商”、“消费者”和“用户”设置? 如果是这样,会话和 cookie 足以保存令牌,但问题是您的消费者(据我了解,您的客户)需要保存它们,而不是您。在您的 API 调用范围内是否有可用的会话/cookie?
在任何一种情况下,如果令牌存储在会话或 cookie 中,它们将是“临时”密钥,并且用户必须在它们过期时重新进行身份验证。但就 oAuth 规范而言,这并没有什么问题——只要用户不介意重新进行身份验证。
另外请记住,令牌与给定的服务和用户相关联,而不是与任何 IP 地址或设备 UUID 相关联。它们不能与不同的 API 和密钥一起使用,因为它们与为其颁发的应用程序相关联。
这样,用户可以逐个应用取消授权,并且每个应用都可以拥有不同的权限集(例如只读访问权限)。所以你的答案是你不需要加密它们,无论如何你都需要它们(如果你是用户)。
【讨论】: