Omniauth-Google ошибка 401 - удаленный клиент - PullRequest
0 голосов
/ 15 апреля 2020

Я получаю 401 - удаленный_клиент от входа в Google для моего приложения rails. Раньше у меня это работало, но я неосознанно передал идентификатор и секрет GitHub в моем файле secrets.yml.

Я удалил старый и скомпрометированный клиент, сделал новый идентификатор клиента и изменил идентификатор и секрет в моем файле omniauth.rb, и теперь каждый раз, когда я go, чтобы войти в систему с Google, выдает ошибку 401 , Нужно ли мне что-нибудь обновить sh? Я не хочу запускать приложение заново.

Authorization Error
Error 401: deleted_client
The OAuth client was deleted.

1 Ответ

0 голосов
/ 15 апреля 2020

В Rails 6 вы хотите использовать зашифрованные учетные данные. Запустите rails credentials:edit. Откроется пустой файл Yaml в любом редакторе, который вы настроили для своей оболочки, например, vi, nano или emacs.

Добавьте свои учетные данные в файл:

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-переменные менее проблематичны c, чем старый, не столь секретный, открытый текст secrets.yml, у них действительно есть очень большая проблема. Любой плохо написанный гем в системе может потенциально вывести всю ENV-ха sh, которая даст злоумышленнику все ваши учетные данные, такие как пароль вашей базы данных.

При наличии зашифрованных учетных данных злоумышленнику нужен не только главный ключ, но и доступ к файловой системе, и на этом этапе его игра действительно закончена.

...