Cookie使ったセッション管理も認可だと思うわって話

こんばんは、ritouです。

OAuthが認可の仕組みだっていうのはだいぶ広まった感ありますね。
でも、なんかまだしっくりこないっていう人いると思います。

その理由の一つとして、Webアプリケーションでよく使われている”Cookieを使ってログインセッションを保持する”しくみ、あれが一般的に認証って言われてるせいじゃないかと思ったりします。

こいつ、OAuthと同じで、途中で認証もしてるけど、全体で見ると認可のしくみじゃねーか的な感じで書いて見ます。
いわゆる”Webアプリケーションの認証フロー”は次のような感じでしょう。

  1. ブラウザはログイン画面を表示
  2. ブラウザは入力されたメアド/パスワードをログイン用URLにを送信
  3. Webサーバーが組み合わせを検証
  4. 有効な場合、WebサーバーはSession Cookieを発行
  5. ブラウザはSession Cookieつきで会員情報を表示するURLにアクセス

次のように読み替えてみます。

  • ログイン用URL -> トークンエンドポイント
  • Session Cookie -> アクセストーク
  • 会員情報を表示するURLにアクセス -> リソースアクセス

するとこうなりますね。

  1. ブラウザはログイン画面を表示
  2. ブラウザは入力されたメアド/パスワードをトークンエンドポイントに送信
  3. Webサーバーが組み合わせを検証
  4. 有効な場合はアクセストークンを発行
  5. ブラウザはアクセストークンつきで、リソースアクセス

これはほぼ、OAuth 2.0でいうところのResource Owner Password Credentialsです。
私はこのフローの中でメアド/パスワードをWebサーバーが検証する部分がまぁ認証であり、それ以外はフル権限の認可処理ととらえています。
ブラウザってのは、メアドやパスワードを扱うことを許されており、サービスの全機能を利用できる権限を要求する、しかもclient_idで自分が誰かすら名乗る必要がない、特殊なアプリケーションであると考えれば良いでしょう。

ただし、Cookieにメアド/パスワードを保存してBasic認証張りにそれを毎回送ってチェックしてるとかならCookie認証なのかもしれません。

で、何が言いたいかと言うと、自分でもよくわかりません。
ではまた!