Webアプリケーションに実装する認証についてどのような種類があるのか調べてまとめてみました。

主な認証方法

ベーシック認証

HTTPに用意されている簡易的な認証方式ではあるが、セキュリティレベルが高くない。
認証を行うディレクトリに.htaccessファイルを配置することで認証が適用され、適用範囲は.htaccessファイルを配置したディレクトリ配下の全てのページが対象となる
基本的にログアウト機能がない為、ブラウザを閉じない限り何度でもアクセスが可能(ログイン情報を記憶する機能がある場合はブラウザを閉じてもアクセス可能な場合もある)

使用用途としては、開発中サイトなど限定したユーザーのみに公開したい際によく使われるようです。

セッションベース認証

セッションIDを活用しアクセスを行う認証方法
正常な認証を行うと、サーバーでセッションIDを発行し、セッションIDとログインユーザーを紐付ける
サーバーはブラウザにセッションIDを返し、受け取ったブラウザはCookie にセッション ID を保存する
セッション IDを確認し、紐付くユーザー情報を取得する
ログアウト時は、ブラウザのセッションIDを別の値に更新し、サーバー側は元のセッションIDとユーザー情報の紐付けを削除する

トークンベース認証

アクセストークンを活用しアクセスを行う認証方法
アクセストークンには有効期限やスコープ(アクセス可能なリソースの範囲)情報が含まれている
正常な認証を行うと、サーバーはブラウザにアクセストークンを返し、ブラウザは Cookie などにアクセストークンを保存する。
ユーザーがアクセスする際、ブラウザは保存しておいたアクセストークンを含めた形でサーバーにリクエストを送り、サーバーはアクセス可能なリソースを返す。
ログアウト時はブラウザに保存していたアクセストークンを破棄する。

セッションベース認証トークンベース認証の相違点

セッションベース認証がサーバーにセッション ID とユーザー情報の紐付け情報 を保持するが、トークンベース認証はトークンの検証のみによって認証を行うため、
これによりトークンベース認証は、ユーザーが増加した時のサーバー負荷がセッションベース認証よりも少なく、より拡張性のあるシステムを実現できる。
一方、トークンベース認証はログアウト時、ブラウザに保存していたアクセストークンを破棄するが
セッションベース認証と違い無効化される訳ではないため、アクセストークンが悪意あるユーザーの手に渡った際、アクセストークンが有効期限内であればリソースにアクセスできてしまう。

最後に

セッションベース認証とトークンベース認証の違いについて理解が深まりした、次回はワンタイム認証も調べてみたいと思います。