現代の認証プロトコル詳解:OAuth 2.0 からパスキー (Passkeys) まで
デジタル時代において、「あなたは誰か?(認証)」そして「あなたには何が許可されているか?(認可)」は、システムが回答すべき最も重要な問いです。認証 (AuthN) と認可 (AuthZ) はセキュリティの柱です。本ガイドでは、これらのプロセスを管理する現代的なプロトコルを紐解きます。
1. フェデレーションアイデンティティと認可
OAuth 2.0(認可)
OAuth 2.0 は、認可のための業界標準プロトコルです。ユーザーに代わって、Web サイトやアプリケーションが他のサービス上のリソースにアクセスすることを許可します(例:「Google でログイン」)。
- ベアラートークン (Bearer Token): OAuth 2.0 で最も一般的なアクセストークンの形式。トークンを持っている者がアクセス権を持ちます。
- API キー: マシン間通信などでよく使われる、より単純な認証形式。
OpenID Connect (OIDC)
OAuth 2.0 の上に構築された OIDC は、アイデンティティ層を追加します。OAuth が「認可」に関するものであるのに対し、OIDC は「アイデンティティ(本人確認)」に関するものです。認可サーバーが行った認証に基づいて、クライアントがエンドユーザーの身元を確認できるようにします。
SAML (Security Assertion Markup Language)
主にエンタープライズ環境の シングルサインオン (SSO) で使用される XML ベースの標準。アイデンティティプロバイダー (IdP) がサービスプロバイダー (SP) に認証情報を渡すために使用されます。
2. エンタープライズ・レガシーディレクトリサービス
LDAP (Lightweight Directory Access Protocol)
分散ディレクトリ情報サービスにアクセスし、維持するための成熟したプロトコル。多くの企業の従業員データベースの基盤となっています。
Kerberos
秘密鍵暗号を使用して、クライアント/サーバーアプリケーションに強力な認証を提供するネットワーク認証プロトコル。Windows Active Directory のデフォルトの認証方法です。
3. 多要素認証 (MFA)
OTP(ワンタイムパスワード)
- HOTP: HMAC ベースのワンタイムパスワード(イベントベース)。
- TOTP: 時間ベースのワンタイムパスワード(Google Authenticator などのアプリで使用)。
4. パスワードレスの未来:FIDO と WebAuthn
FIDO2 & WebAuthn
FIDO アライアンスは、パスワードを安全な公開鍵暗号に置き換えるためにこれらの標準を作成しました。WebAuthn は、これをブラウザで実現するための API です。
パスキー (Passkeys)
パスキー は FIDO 標準の具体的な実装で、ユーザーがデバイスのロック解除に使う生体認証(FaceID、指紋)や PIN を使用して Web サイトやアプリにサインインできるようにします。クラウド(Apple iCloud、Google パスワードマネージャー)を通じてデバイス間で同期されます。
U2F (Universal 2nd Factor)
古い FIDO 標準。通常、2 番目の要素として物理的なセキュリティキー(YubiKey など)を必要とします。
比較まとめ
| プロトコル | タイプ | 主な用途 | フォーマット |
|---|---|---|---|
| OAuth 2.0 | 認可 | API アクセス、外部連携 | JSON / JWT |
| OIDC | アイデンティティ | 「〜でログイン」ボタン | JWT (ID トークン) |
| SAML | アイデンティティ/SSO | 企業内ログイン | XML |
| WebAuthn | 認証 | パスワードレス / パスキー | 公開鍵暗号 |
| LDAP | ディレクトリ | 企業ユーザー管理 | バイナリ |
結論
パスワードから パスキー や OIDC への移行により、インターネットはより安全で使いやすいものになりつつあります。OAuth 2.0 は依然として API 認可の主流ですが、ユーザーログインの未来は間違いなくハードウェアに裏打ちされたパスワードレスなものになるでしょう。安全なアプリケーションを構築する開発者にとって、これらのプロトコルの理解は不可欠です。