HerokuのOAuth as Single Sign On読んだ

Heroku | OAuth as Single Sign Onを読んだ。

つまり

  • Herokuでは色々なリソースの操作が内部のAPIサーバ経由で行われる
  • dashboard.heroku.com 等のサービスがユーザにUIを提供し内部でAPIサーバと通信している
  • APIサーバを利用するにはまずアクセストークンを発行する必要がある
  • ログイン用のUIをid.heroku.comで提供している
  • ログイン時に内部でAPIサーバからアクセストークンを発行してこれをcookieに入れておく
  • 各サービスではcookieに含まれているアクセストークンを利用してAPIサーバと通信する

アクセストークンについて

  • リフレッシュトークンは捨てることにしてるので有効期間が切れると使えなくなる
  • とはいえ有効期間は30日間に設定されているので30日の間はログインし続けられる
  • あとアクセストークンと一緒に時刻も保存してて6時間でcookieを無効化するようにしてる(?)

ログアウトについて

  • addons.heroku.comからログアウトしたらdashboard.heroku.comからもログアウトしたい
  • APIサーバにトークン送ったら関連するトークン全部revokeするようにした
  • 例えば次にdashboard.heroku.comからAPIサーバと通信したとき分かるのでログアウトできる

つらい

  • APIサーバと通信しない限り見た目上ずっとログイン状態のままである
  • アプリ一覧画面とかキャッシュされてて通信しないからログインしたままでつらい
  • *.heroku.com用のcookie使って他のサービスでログアウトしたかどうか分かるようにした

更につらい

  • 昔のHerokuのアプリはhoge.heroku.comとか使えるようにしてた
  • *.heroku.com用のcookie使うことにしたらそこから操作されるかもしれんやばい
  • リスク見積もったけどまあ大丈夫そうやしええやろという判断になった