はじめに
オンラインサービスを安全に使うために欠かせないのが「認証」です。認証とは、「あなたが本当に本人かどうかを確認する仕組み」 のことです。
この記事では、現代の認証技術で重要な OAuth 2.0 と OpenID Connect の基礎、さらに安全性を高める 二要素認証(2FA) や 多要素認証(MFA) について、初心者でもわかるように解説します!
OAuth 2.0とは?
OAuth 2.0(オーオース)は、第三者サービスがあなたの代わりに他のサービスにアクセスするための認証フレームワークです。
OAuth 2.0の例:Googleカレンダーへのアクセス
- あなたが「このタスク管理アプリにGoogleカレンダーの予定を読み取らせたい」と設定する。
- タスク管理アプリがGoogleに対して「この人のカレンダーにアクセスしてもいいですか?」とリクエストを送る。
- Googleがあなたに「このアプリにカレンダーの読み取り権限を与えていいですか?」と確認する。
- あなたが許可すると、Googleはアプリに アクセストークン を発行する。
- タスク管理アプリはアクセストークンを使い、GoogleカレンダーAPIにアクセスして予定を取得する。
ポイント:OAuth 2.0は「ユーザーが許可したデータ」にのみアクセスでき、ログインや本人確認は行いません。
OAuth 2.0の具体的なフロー解説
OAuth 2.0は、認可のフローが複数用意されているので、よく使われるフローについて詳しく説明すると良いです。
Authorization Code Flow(認可コードフロー)
認可コードフローは、クライアントアプリケーションがサーバーからアクセストークンを安全に取得するための方法です。
- リクエストの開始
クライアント(アプリ)は認可サーバーに「認可コードがほしい」とリクエストを送ります - 認可コードの取得
ユーザーが認可画面で「許可」をクリックすると、認可コードがリダイレクト先に返されます - アクセストークンの取得
クライアントがサーバーに認可コードを送信し、アクセストークンを取得します - トークンの利用
サーバーがアクセストークンを返し、リソースサーバーへのアクセスが可能になります。

トークンの種類
- アクセストークン:APIへのアクセス権限を持つトークン。
- リフレッシュトークン:アクセストークンの有効期限が切れた際に、新しいアクセストークンを発行するためのトークン。
OAuth 2.0の特徴
- パスワードを共有しなくていい
サービス同士が直接パスワードをやり取りしないので安全です。 - トークンでアクセスを管理
「このサービスにはこの情報だけ見せる」といった細かな制限ができます。
OpenID Connect(OIDC)とは?
OpenID Connectは、OAuth 2.0をベースにした「認証の仕組み」です。OAuth 2.0だけでは「本人であることの証明」ができないので、それを補うものです。
OpenID Connectの例:本人確認付きログイン
- あなたがあるサービス(例:動画サイト)にGoogleアカウントでログインする。
- OpenID Connectを使うことで、Googleが「この人は本人で間違いない」という情報(IDトークン)をサービス側に伝えます。
OpenID ConnectのIDトークン解説
OpenID ConnectはOAuth 2.0の拡張で、IDトークンを発行して「ユーザーの認証情報」をやり取りします。
IDトークンの中身
IDトークンは、JSON Web Token(JWT)形式でデータを含みます。例えば、次のような情報が格納されています
{
"iss": "https://auth.example.com", // 発行者
"sub": "1234567890", // ユーザーID
"aud": "YOUR_CLIENT_ID", // 対象のクライアント
"exp": 1712467200, // 有効期限
"iat": 1712463600, // 発行日時
"email": "user@example.com" // ユーザー情報
}
- JWTの構造
JWTは「ヘッダー」「ペイロード」「署名」の3つから成り立ちます
HEADER.PAYLOAD.SIGNATURE
- 署名の検証
クライアントはJWTの署名を確認することで、データが改ざんされていないことを保証します。
OAuth 2.0とOpenID Connectの違い
項目 | OAuth 2.0 | OpenID Connect |
---|---|---|
目的 | 権限の委譲(他サービスにアクセス) | 本人確認(認証) |
トークン | アクセストークン | IDトークン(本人情報が含まれる) |
使い方の例 | Googleカレンダーへのアクセス権限 | Googleアカウントでログイン |
二要素認証(2FA)と多要素認証(MFA)
通常の認証は「IDとパスワード」だけですが、それだけだと攻撃者に突破される危険があります。そこで、安全性を高めるための仕組みが 二要素認証(2FA) と 多要素認証(MFA) です。
二要素認証(2FA)とは?
2FA(Two-Factor Authentication) は、2つの異なる要素を使って本人確認を行います。
2FAの2つの要素
- 知識情報:あなたが知っているもの(例:パスワード)
- 所持情報:あなたが持っているもの(例:スマホに送られる認証コード)
具体例:銀行のオンラインサービス
- IDとパスワードでログイン(知識情報)。
- 銀行があなたのスマホに認証コード(SMS)を送信。
- あなたがそのコードを入力して本人確認(所持情報)。
これにより、パスワードが漏れてもスマホがない限り不正ログインはできません。
二要素認証(2FA)の技術的実装
二要素認証の具体的な実装方法や仕組みについて解説すると、より実践的です。
TOTP(Time-based One-Time Password)による2FA
TOTPは、時間ベースでワンタイムパスワードを生成するアルゴリズムです。
- 秘密鍵と現在時刻を元に6桁のコードを生成。
- サーバー側でも同じアルゴリズムでコードを生成し、ユーザーが入力したコードと一致するか確認。
多要素認証(MFA)とは?
MFA(Multi-Factor Authentication) は、2つ以上の要素を使った認証です。2FAよりもさらに安全です。
MFAの3つの要素
- 知識情報:パスワードなど。
- 所持情報:スマホ、セキュリティキーなど。
- 生体情報:指紋認証、顔認証など。
具体例:スマホのロック解除(MFA)
- パスコードを入力(知識情報)。
- 顔認証(Face ID)で解除(生体情報)。
これで、他人がスマホを勝手に使うことはほぼ不可能になります。
認証の仕組みまとめ
認証技術 | 内容 | 具体例 |
---|---|---|
OAuth 2.0 | 権限を第三者に委譲する仕組み。 | Googleカレンダーへのアクセス許可。 |
OpenID Connect | OAuth 2.0に本人確認の機能を追加した仕組み。 | Googleアカウントで他サイトにログイン。 |
二要素認証(2FA) | 2つの要素で本人確認を行う認証。 | IDとパスワード + スマホの認証コード。 |
多要素認証(MFA) | 3つ以上の要素で安全性をさらに高める認証。 | パスワード + スマホ認証コード + 指紋認証。 |
安全な認証のポイント
- 二要素認証(2FA)を必ず設定する
- SNS、メール、オンラインバンクなどは2FAをオンにしましょう。
- パスワードの使い回しはしない
- 複雑なパスワードをパスワードマネージャーで管理する。
- OAuthを使った安全なログインを利用する
- GoogleやAppleアカウントを使った「ログイン」ボタンを活用。
- MFAでさらに強固な認証を導入する
- ビジネス用途や機密情報には指紋認証やセキュリティキーを組み合わせる。
まとめ
- OAuth 2.0:他サービスへの権限委譲に使われる仕組み。
- OpenID Connect:OAuth 2.0をベースに本人確認を行う認証の仕組み。
- 二要素認証(2FA):パスワード + スマホ認証コードなど、2つの要素で安全性を高める。
- 多要素認証(MFA):さらに指紋や顔認証を加え、最強のセキュリティを実現。
認証の仕組みを理解して、安全なオンライン生活を手に入れましょう!
コメント