Как heroku хранит свою аутентификацию в своем приложении командной строки? - PullRequest
3 голосов
/ 05 февраля 2012

Я предполагаю, что когда вы впервые устанавливаете гем heroku и вам предлагается ввести ваше имя пользователя / пароль, он отправляет это имя пользователя / пароль на свой сервер для проверки.

Как тогда работает heroku (иликакие-либо другие приложения командной строки в этом случае) безопасно хранят проверенный токен в файловой системе и затем передают его вместе, когда он запускает для проверки другие команды, такие как 'heroku create'?

Я использую heroku какпример здесь, потому что это единственный, о котором я могу думать, который делает то, что я хотел бы сделать в данный момент.

Ответы [ 4 ]

8 голосов
/ 31 августа 2014

Теперь Heroku довольно подробно объясняет, как они хранят свой токен аутентификации для CLI Heroku: https://devcenter.heroku.com/articles/authentication

Соответствующие выдержки:

Хранилище токенов API

Инструмент командной строки Heroku хранит токены API в стандартном Unix файл ~ / .netrc. Формат netrc хорошо известен и поддерживается различными сетевыми инструментами на Unix. С учетными данными Heroku, хранящимися в этот файл, другие инструменты, такие как curl, могут получить доступ к API Heroku с помощью мало или нет дополнительной работы.

* * 1010
cd ~
ls .netrc
ls: .netrc: No such file or directory
$ heroku login
Enter your Heroku credentials.
Email: me@example.com
Password:
$ cat .netrc
machine api.heroku.com
  login me@example.com
  password c4cd94da15ea0544802c2cfd5ec4ead324327430
machine code.heroku.com
  login me@example.com
  password c4cd94da15ea0544802c2cfd5ec4ead324327430
2 голосов
/ 05 февраля 2012

Драгоценный камень heroku хранит ваши учетные данные в ~ / .heroku / credentials , а соответствующий код - в lib / heroku / auth.rb .

2 голосов
/ 05 февраля 2012

Heroku использует ваш логин один раз, чтобы выяснить, кто вы, затем отправляет ваш открытый ключ ssh на их сервер, чтобы, когда вы отправляете их в git-репо, они знали, кто вы ( docs ).

Другие приложения работают по-другому. Некоторые создают .<something> файл в вашем домашнем каталоге, который содержит токен API.

0 голосов
/ 05 февраля 2012

Это зависит от реализации.

Распространенным способом сделать что-то подобное является сохранение автоматически сгенерированной пары ключей во временном файле. Открытый ключ передается на сервер, а закрытый ключ шифруется симметричным сеансовым ключом (срок действия которого истекает через короткое время или после выхода из системы).

Поле разрешений этого файла установлено в r -------- (только для чтения пользователем).

/ tmp обычно используется, потому что многие операционные системы периодически его очищают. (Некоторые даже используют устройство в памяти.)

Реализации могут отличаться, например, ключи SSH обычно генерируются только один раз, не шифруются с помощью ключа сеанса (но могут иметь срок действия) и хранятся в ~ / .ssh.

...