Ruby on rails 如何在rails数据库中加密OAuth秘密/令牌?

Ruby on rails 如何在rails数据库中加密OAuth秘密/令牌?,ruby-on-rails,ruby,encryption,oauth,oauth-2.0,Ruby On Rails,Ruby,Encryption,Oauth,Oauth 2.0,我有一个运行在Ruby2.0上的RubyonRails应用程序(v4.0.1,但我认为这与此无关),我允许用户通过OAuth进入第三方服务,让我访问他们的数据 我已将应用程序的使用者密钥和使用者机密存储在源代码管理之外的环境变量中 在OAuth/OAuth2舞蹈中的最后一次回调之后,我为我的每个用户都有令牌,可以用来访问他们的信息 对于他们的登录凭据,我使用单向散列,不让他们的密码以纯文本形式存储在我的数据库中,因此我认为我应该对他们的令牌执行类似的操作,但由于我需要使用这些令牌访问他们的数据,

我有一个运行在Ruby2.0上的RubyonRails应用程序(v4.0.1,但我认为这与此无关),我允许用户通过OAuth进入第三方服务,让我访问他们的数据

我已将应用程序的使用者密钥和使用者机密存储在源代码管理之外的环境变量中

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

对于他们的登录凭据,我使用单向散列,不让他们的密码以纯文本形式存储在我的数据库中,因此我认为我应该对他们的令牌执行类似的操作,但由于我需要使用这些令牌访问他们的数据,我需要能够复制纯文本,所以我想找出做对称加密的最好方法

我计划将我的加密密钥存储为一个环境变量,然后使用类似于加密令牌的东西。这安全吗

人们用过这种宝石吗


我正试图阻止自己重新发明轮子。有什么提示吗?

django allauth不是OAuth(2)实现的懒汉。我现在正在查看它的socialaccount\u socialtoken表,这些令牌都是明文形式的。我想你被掩护了,因为如果他们偷了代币,没有人可以使用。

我最后使用了
attr\u加密的
gem-

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

以下是您如何使用它:

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

django allauth是否在数据库中保留值?或者它只是以明文的形式返回令牌?django allauth syncdb的几个表到您的数据库中;这就是我的意思