将身份验证令牌保存到第三方网站

信息安全 加密 验证 令牌
2021-08-16 07:31:02

因此,Flickr 允许您通过 app_key 和 secret 对您的应用程序的用户进行身份验证,并返回一个身份验证令牌。我想将该身份验证令牌安全地保存在我的数据库中,但也能够反转它,以便应用程序可以为该用户进行经过身份验证的调用。我不确定最好的方法是什么,或者我是否应该这样做?我想保留该身份验证令牌,以便当用户重新登录我的站点时,它已经拥有身份验证令牌。

2个回答

快速的回答是,将明文授权令牌存储在数据库中不是问题,但还有一些其他方面对于保持令牌(及其使用)的安全更为关键。

确保oauth_consumer_key(应用程序密钥)和oauth_token(授权令牌)永远不会发送或存储在客户端(用户浏览器、电话等)。这意味着对服务提供者 (Flickr) 的请求必须始终从有权访问数据库的服务器完成,然后从服务提供者数据接收到的数据可以转发到客户端。如果您将密钥和令牌存储在用户端,那么他们将能够模拟您的应用程序并访问受限数据。

要在从服务器向 Flickr 发出请求期间保护密钥和令牌,请通过 HTTPS 将请求作为 POST 执行。这样,窃听者在前往 Flickr 的途中无法获得您的代币。

保护您的数据库,不是通过加密令牌,而是确保任何未经授权的数据库访问都是不可能的。如果您的数据库受到威胁(例如 SQL 注入、任何其他注入),那么早期的措施实际上并没有任何效果。一般来说,这是一件好事,我建议您加密数据库中的令牌。

来源:OAUTH v1.0Flickr 身份验证 API

所以我认为您可以在会话/cookie 中保存哈希密钥客户端。这基本上意味着服务器中的任何人都无法对任何信息做任何事情,因为他们没有说明此人与此 API/属性相关联的地图。所以客户端拥有一半的密钥,而服务器拥有另一半的密钥。我会用电子邮件+密码之类的东西来散列,密码是关键。唯一的问题是在密码不可避免地更改时同步属性。我喜欢这种半关键的方法,并希望将其应用于其他方式。创建一个公开的数据库会很酷,但如果没有另一半“密钥”,就不可能从中获取任何有价值的信息。我不知道,看起来我们也完全摆脱了“输入密码”。