【问题标题】:How do I encrypt OAuth secret/tokens in my rails database?如何在我的 rails 数据库中加密 OAuth 密钥/令牌?
【发布时间】:2013-11-19 21:08:38
【问题描述】:

我有一个在 Ruby 2.0 上运行的 Ruby on Rails 应用程序(v4.0.1,尽管我认为这与此处无关),我允许用户对第三方服务进行 OAuth 以让我访问他们的数据。

我已将应用程序的使用者密钥和使用者秘密存储在不受源代码控制的环境变量中。

在 OAuth / OAuth2 舞蹈中的最后一次回调之后,我的每个用户都有令牌,可用于访问他们的信息。

对于他们的登录凭据,我使用一种散列方式将他们的密码以纯文本形式存储在我的数据库中,所以我想我应该对他们的令牌做类似的事情,但因为我需要使用这些令牌来访问他们的数据,我需要能够重现纯文本,所以我试图找出进行对称加密的最佳方法。

我打算将我的加密密钥存储为环境变量,然后使用https://gist.github.com/nono/2995118 之类的东西来加密令牌。这安全吗?

有人用过这个https://github.com/reidmorrison/symmetric-encryption gem吗?

我正在努力避免自己重新发明轮子。有什么建议吗?

【问题讨论】:

    标签: ruby-on-rails ruby encryption oauth oauth-2.0


    【解决方案1】:

    我最终使用了attr_encrypted gem - https://github.com/attr-encrypted/attr_encrypted

    我将我的密码添加到我的 .env 文件中,这样它就不受版本控制。

    这是你如何使用它:

    attr_encrypted :email, :key => 'a secret key'
    

    【讨论】:

      【解决方案2】:

      django-allauth 不是 OAuth(2) 实现的懒惰者。我现在正在查看它的 socialaccount_socialtoken 表,令牌都是明文形式。我认为你被覆盖了,因为如果他们偷了代币,没有人可以使用它们。

      【讨论】:

      • django-allauth 是否将值保存在数据库中?还是只是以明文形式返回令牌?
      • django-allauth syncdb 的几个表进入你的数据库;这就是我的意思
      猜你喜欢
      • 2017-01-16
      • 2020-02-29
      • 2016-10-29
      • 2013-01-23
      • 2017-08-07
      • 2018-03-10
      • 2017-02-12
      • 1970-01-01
      • 2019-11-19
      相关资源
      最近更新 更多