はじめに
認証方式についての知識があいまいだったので自分なりに調べてまとめてみました。
メモ程度なのでざっくりとした内容ですが、認証方式を知るための取っ掛かりになれば幸いです。
認証方式の種類
- Basic認証
- Digest認証
- セッションベース認証
- トークンベース認証
- シングルサインオン(OAuth, OpenID Connect, SAML)
Basic認証とは
ユーザIDとパスワードのみで制限をかける簡易的なHTTP認証
メリット
・容易に設定可能
デメリット
・平文で送信するためセキュリティの脆弱性がある
・リクエストごとに認証を行う必要がある
Digest認証とは
Basic認証と同じくユーザIDとパスワードのみで制限をかけるが、ハッシュ化して送信するためBasic認証より脆弱性を改善
メリット
・Basic認証よりセキュリティ性が高い
デメリット
・リクエストごとに認証を行う必要がある
セッションベース認証とは
セッションIDをCookieに保存し、それを利用して認証を行う
セッションIDにはユーザ情報を含むためステートフル
メリット
・ログアウト時点でアクセス不可となりセキュリティ性が高い
デメリット
・サーバ負荷がトークンベース認証より高い
トークンベース認証とは
アクセストークンをCookieに保存し、それを利用して認証を行う
アクセストークンにはユーザ情報を含まないためステートレス
メリット
・サーバーに認証のための情報を持つ必要がないためスケーラビリティが高い
デメリット
・ステートレスであるためアクセストークンの流出による不正アクセスのリスクあり
シングルサインオン(OAuth, OpenID Connect, SAML)とは
1度のユーザー認証で複数のシステムの利用が可能になる仕組みがシングルサインオン
OAuth, OpenID Connect, SAML等は上記を実現するためのプロトコル
メリット
・ユーザのログインする負担を軽減できる
デメリット
・同一のIDパスワードを使用するためログイン情報漏洩時のリスクが大きい
認可と認証の違い
認証:誰であるかを特定すること
認可:権限を与えること
SSOについて
SAML認証
SSO実現における認証・認可プロトコル
OAuth2.0
SSO実現における認可プロトコル
Open ID Connect
OAuth2.0を認可に加えて認証として活用するための拡張仕様であり、アクセストークンに加えてIDトークン(ユーザ情報を含む)を発行する
- 認証・認可においてOAuth2.0を利用する場合は、Open ID ConnectまたはSAMLのいずれかを併用する
- Open ID ConnectおよびSAMLは単体での利用が可能
SAML認証の流れ
・IdP Initiated方式
IdPにログインし、その後に利用するSPを選択してログイン
・SP Initiated方式
SPにアクセスし、SPからIdPに認証リクエストを送り、IdPからSPにSAMLアサーションが送信されてログイン
※ IdP(認証プロバイダー)とSP(サービスプロバイダー)
IDaaSについて
読み方:「アイダース」や「アイディーアース」
複数のサービス(Webサービスやアプリケーションなど)に登録されているIDやパスワードを一元的に管理できるクラウドサービスであり、SaaSの一種
日本語では「クラウド型ID管理サービス」
IDaaSを提供しているのがIdP(認証プロバイダー)
主な機能
・シングルサインオン
・多要素認証
・IDの一元管理
・ID連携
・アクセス管理
・認可
代表サービス
okta, AzureAD, Oneloginなど