Omniauth-Google错误401-Deleted_client

问题描述 投票:0回答:1

我正在从Rails应用的Google登录中收到401-Deleted_client。我以前曾使用过它,但在不知不觉中将我的secrets.yml文件中的ID和密码提交给了GitHub。

我删除了旧的受感染的客户端,创建了新的客户端ID,并更改了omniauth.rb文件中的ID和机密,现在每次我使用Google登录时,都会引发401错误。我需要刷新什么吗?我不想重新启动该应用程序。

Authorization Error
Error 401: deleted_client
The OAuth client was deleted.
ruby-on-rails ruby oauth-2.0 omniauth google-oauth2
1个回答
0
投票

在Rails 6中,您想使用加密的凭据。运行rails credentials:edit。这将在为外壳配置的任何编辑器(例如vi,nano或emacs)中打开一个空白的Yaml文件。

将您的凭据添加到文件中:

google:
  client_id: "YOUR CLIENT ID"
  client_secret: "YOUR CLIENT ID"

保存文件时,Rails会创建用config/credentials.yml.enc加密的/config/master.key。此密钥文件应该在您的gitignore中,而config/credentials.yml.enc实际上可以在您的存储库中提交。

在您的config/intializers/omniauth.rb中使用加密的凭据:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, 
     Rails.application.credentials.google.fetch(:client_id),
     Rails.application.credentials.google.fetch(:client_secret)
end

为什么?

虽然ENV变量比旧的纯文本不那么秘密secrets.yml麻烦得多,但它们本身确实有很大的问题。系统上任何写得不好的gem都可能会输出整个ENV哈希,这将为攻击者提供所有凭据,例如数据库密码。

使用加密的凭据,攻击者不仅需要主密钥,而且还需要文件系统访问权,这时无论如何它都是真正的游戏。

© www.soinside.com 2019 - 2024. All rights reserved.