-
Notifications
You must be signed in to change notification settings - Fork 9
Authentication
Herokuにおける認証は、状況により、3つのメカニズムのいずれかを使うこととなります。:
- Emailとパスワード
- APIトークン
- SSHキー
Emailとパスワードは、APIトークンを取得する際、heroku
コマンドにより使用されます。
このトークンは、その他全てのHeroku APIの認証で使用され、ユーザー側で任意に再生成することが可能です。
これらの作業は、heroku.comのwebインタフェース上で行うことが可能です。
APIトークンの再生成は、現在使用しているトークンを無効にし、新規のトークンとして生成されます。
SSHキーは、「git push」時の認証として使われます。heroku login
の初回実行時、
ユーザーのSSH公開キーがHerokuへ登録されます。もし、SSHキーが存在しなければ、
heroku login
が、SSHキーを自動的に生成し、新規のキーとして登録します。
Herokuのコマンドラインツールは、APIトークンを標準のUnixファイルである~/.netrc
へ保管します。
この「netrc」形式のファイルは、Unix上の様々なネットワークツールで定評があり、指示され続けています。
このファイルに保管されたHerokuの証明書を使い、curl
のようなその他ツールは、
ほとんど余分なことをせずに、Heroku APIにアクセスすることが可能です。
heroku login
(または、その他認証を要するheroku
コマンド)を実行すると、~/.netrc
を生成、または更新します。:
:::term
$ ls .netrc
ls: .netrc: No such file or directory
$ heroku login
Enter your Heroku credentials.
Email: [email protected]
Password:
$ cat .netrc
machine api.heroku.com
login [email protected]
password c4cd94da15ea0544802c2cfd5ec4ead324327430
machine code.heroku.com
login [email protected]
password c4cd94da15ea0544802c2cfd5ec4ead324327430
$
ログイン後、HerokuのAPIにアクセスするために、curl
を使用することが可能です。:
:::term
$ curl -H "Accept: application/json" -n https://api.heroku.com/apps
また、curlに特別なコマンドラインオプションを追加するために、~/.curlrc
というファイルを
生成することも可能です。:
--netrc
--header "Accept: application/json"
このファイルを使えば、コマンドはシンプルに下記となります。:
:::term
$ curl https://api.heroku.com/apps
ファイルは、フリーフォームのレコードとコメントを含んでいます。
コメントは、#
(hash) シンボルで開始され、その行の終端まで続きます。
それぞれのレコードは以下のような形式となります。:
machine api.heroku.com
login [email protected]
password ABC123
macdef
というレコードが、.netrc
ファイルに記述されることもありますが、
heroku
コマンドでは、一般的に使われませんし、無視されます。