Skip to content
iwhurtafly edited this page Jan 22, 2013 · 2 revisions

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キーを自動的に生成し、新規のキーとして登録します。

APIトークンの保管

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
$

APIトークンでの認証

ログイン後、HerokuのAPIにアクセスするために、curlを使用することが可能です。:

:::term
$ curl -H "Accept: application/json" -n https://api.heroku.com/apps

また、curlに特別なコマンドラインオプションを追加するために、~/.curlrcというファイルを 生成することも可能です。:

「~/.curlrc」の中身

--netrc
--header "Accept: application/json"

このファイルを使えば、コマンドはシンプルに下記となります。:

:::term
$ curl https://api.heroku.com/apps

APIトークンが保管されているファイルの形式

ファイルは、フリーフォームのレコードとコメントを含んでいます。 コメントは、# (hash) シンボルで開始され、その行の終端まで続きます。 それぞれのレコードは以下のような形式となります。:

machine api.heroku.com
  login [email protected]
  password ABC123

macdefというレコードが、.netrcファイルに記述されることもありますが、 herokuコマンドでは、一般的に使われませんし、無視されます。

Clone this wiki locally