tyoshikawa1106のブログ

- Force.com Developer Blog -

Heroku:認証管理プラグイン『Heroku OAuth』を試してみました

HerokuのOAuth認証を管理するプラグイン『Heroku OAuth』を試してみました。


次のコマンドでプラグインをHeroku Toolbeltにインストールできます。

$ heroku plugins:install https://github.com/heroku/heroku-oauth

f:id:tyoshikawa1106:20160515212657p:plain


正しくインストールできているかは次のコマンドで確認できます。

$ heroku plugins

f:id:tyoshikawa1106:20160515212807p:plain


次のコマンドでクライアントを作成します。

$ heroku clients:create "Amazing" https://amazing-client.herokuapp.com/auth/heroku/callback

f:id:tyoshikawa1106:20160515213031p:plain


もしくは次のコマンドでクライアント作成と.envファイルへの出力を同時に実行できるみたいです。

$ heroku clients:create -s Amazing https://amazing-client.herokuapp.com/auth/heroku/callback >> .env

f:id:tyoshikawa1106:20160515213419p:plain


作成済みのクライアント情報は次のコマンドで確認できます。

$ heroku clients

f:id:tyoshikawa1106:20160515213758p:plain

ちょっとミスして同じラベルのものを2つ作成してしまいましたが、とりあえず重複してもエラーにはならないみたいです。


クライアント作成後、クライアントIDを使えば次のコマンドでSecretキーの情報を確認できます。

$ heroku clients:show <ClinetID>

f:id:tyoshikawa1106:20160515214135p:plain


クライント情報は次のコマンドで更新することができます。

$ heroku clients:update <ClientID> --name Amazing2

更新結果を確認するとちゃんとラベル名が更新されました。
f:id:tyoshikawa1106:20160515214540p:plain


クライアントの作成ができたので、authorizationsの作成を行います。これでAPI実行に必要なトークン情報を取得できるみたいです。


登録済みのauthorizations情報は次のコマンドで確認できます。

$ heroku authorizations


authorizationsの作成は次のコマンドです。

$ heroku authorizations:create --description "For use with Anvil"

f:id:tyoshikawa1106:20160515215028p:plain


descriptionは一覧表示のラベルに利用されます。
f:id:tyoshikawa1106:20160515215141p:plain


作成コマンド実行時にトークンだけを表示したい場合は、次のコマンドです。

$ heroku authorizations:create --output_format short


descriptionには『Long-lived user authorization』が登録されていました。


『--expires_in』オプションをつかえば、有効期限のあるトークンを発行できます。つぎのように実行すれば10秒で期限切れのトークンが発光されるみたいです。

$ heroku authorizations:create --expires_in 10


あまり理解できていませんが、こんな感じの使い方ができるそうです。

$ heroku run "HEROKU_EMAIL=`heroku auth:whoami` HEROKU_API_KEY=`heroku authorizations:create --expires_in 120 --output_format short` ./my_job.sh" -a <対象のHerokuアプリ>

オプションで、認可のためのスコープのリストを指定できるそうです。

$ heroku authorizations:create --description "For use with Anvil" --scope identity,read-protected


authorizationsを作成してトークンを取得することができました。

$ curl -u "<your token>" https://api.heroku.com/apps


実行すると『Enter host password for user 』とパスワードを聞かれます。・・・ここがちょっとわからなかったです。


最後に作成したAuthorizationsは次のコマンドで削除できます。

$ heroku authorizations:revoke <対象のトークン>


Clientの方は次のコマンドで削除できました。

$ heroku clients:destroy <ClientID>


まだよくわかっていない部分もあるのですが、HerokuのAPIで利用するトークンはこのHeroku OAuthプラグインをつかって取得できるようになるみたいです。