認証の仕組みを理解しよう!:OAuth 2.0と2FAで安全にログイン

セキュリティ

はじめに

オンラインサービスを安全に使うために欠かせないのが「認証」です。認証とは、「あなたが本当に本人かどうかを確認する仕組み」 のことです。

この記事では、現代の認証技術で重要な OAuth 2.0OpenID Connect の基礎、さらに安全性を高める 二要素認証(2FA)多要素認証(MFA) について、初心者でもわかるように解説します!

OAuth 2.0とは?

OAuth 2.0(オーオース)は、第三者サービスがあなたの代わりに他のサービスにアクセスするための認証フレームワークです。

OAuth 2.0の例:Googleカレンダーへのアクセス

  1. あなたが「このタスク管理アプリにGoogleカレンダーの予定を読み取らせたい」と設定する。
  2. タスク管理アプリがGoogleに対して「この人のカレンダーにアクセスしてもいいですか?」とリクエストを送る。
  3. Googleがあなたに「このアプリにカレンダーの読み取り権限を与えていいですか?」と確認する。
  4. あなたが許可すると、Googleはアプリに アクセストークン を発行する。
  5. タスク管理アプリはアクセストークンを使い、GoogleカレンダーAPIにアクセスして予定を取得する。

ポイント:OAuth 2.0は「ユーザーが許可したデータ」にのみアクセスでき、ログインや本人確認は行いません。

OAuth 2.0の具体的なフロー解説

OAuth 2.0は、認可のフローが複数用意されているので、よく使われるフローについて詳しく説明すると良いです。

Authorization Code Flow(認可コードフロー)

認可コードフローは、クライアントアプリケーションがサーバーからアクセストークンを安全に取得するための方法です。

  1. リクエストの開始
    クライアント(アプリ)は認可サーバーに「認可コードがほしい」とリクエストを送ります
  2. 認可コードの取得
    ユーザーが認可画面で「許可」をクリックすると、認可コードがリダイレクト先に返されます
  3. アクセストークンの取得
    クライアントがサーバーに認可コードを送信し、アクセストークンを取得します
  4. トークンの利用
    サーバーがアクセストークンを返し、リソースサーバーへのアクセスが可能になります。

トークンの種類

  • アクセストークン: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)形式でデータを含みます。例えば、次のような情報が格納されています

JSON
{
  "iss": "https://auth.example.com",  // 発行者
  "sub": "1234567890",               // ユーザーID
  "aud": "YOUR_CLIENT_ID",           // 対象のクライアント
  "exp": 1712467200,                 // 有効期限
  "iat": 1712463600,                 // 発行日時
  "email": "user@example.com"        // ユーザー情報
}
  • JWTの構造
    JWTは「ヘッダー」「ペイロード」「署名」の3つから成り立ちます
Plaintext
HEADER.PAYLOAD.SIGNATURE
  • 署名の検証
    クライアントはJWTの署名を確認することで、データが改ざんされていないことを保証します。

OAuth 2.0とOpenID Connectの違い

項目OAuth 2.0OpenID Connect
目的権限の委譲(他サービスにアクセス)本人確認(認証)
トークンアクセストークンIDトークン(本人情報が含まれる)
使い方の例Googleカレンダーへのアクセス権限Googleアカウントでログイン

二要素認証(2FA)と多要素認証(MFA)

通常の認証は「IDとパスワード」だけですが、それだけだと攻撃者に突破される危険があります。そこで、安全性を高めるための仕組みが 二要素認証(2FA)多要素認証(MFA) です。

二要素認証(2FA)とは?

2FA(Two-Factor Authentication) は、2つの異なる要素を使って本人確認を行います。

2FAの2つの要素

  1. 知識情報:あなたが知っているもの(例:パスワード)
  2. 所持情報:あなたが持っているもの(例:スマホに送られる認証コード)

具体例:銀行のオンラインサービス

  1. IDとパスワードでログイン(知識情報)。
  2. 銀行があなたのスマホに認証コード(SMS)を送信。
  3. あなたがそのコードを入力して本人確認(所持情報)。

これにより、パスワードが漏れてもスマホがない限り不正ログインはできません。

二要素認証(2FA)の技術的実装

二要素認証の具体的な実装方法や仕組みについて解説すると、より実践的です。

TOTP(Time-based One-Time Password)による2FA

TOTPは、時間ベースでワンタイムパスワードを生成するアルゴリズムです。

  • 秘密鍵と現在時刻を元に6桁のコードを生成。
  • サーバー側でも同じアルゴリズムでコードを生成し、ユーザーが入力したコードと一致するか確認。

多要素認証(MFA)とは?

MFA(Multi-Factor Authentication) は、2つ以上の要素を使った認証です。2FAよりもさらに安全です。

MFAの3つの要素

  1. 知識情報:パスワードなど。
  2. 所持情報:スマホ、セキュリティキーなど。
  3. 生体情報:指紋認証、顔認証など。

具体例:スマホのロック解除(MFA)

  1. パスコードを入力(知識情報)。
  2. 顔認証(Face ID)で解除(生体情報)。

これで、他人がスマホを勝手に使うことはほぼ不可能になります。

認証の仕組みまとめ

認証技術内容具体例
OAuth 2.0権限を第三者に委譲する仕組み。Googleカレンダーへのアクセス許可。
OpenID ConnectOAuth 2.0に本人確認の機能を追加した仕組み。Googleアカウントで他サイトにログイン。
二要素認証(2FA)2つの要素で本人確認を行う認証。IDとパスワード + スマホの認証コード。
多要素認証(MFA)3つ以上の要素で安全性をさらに高める認証。パスワード + スマホ認証コード + 指紋認証。

安全な認証のポイント

  1. 二要素認証(2FA)を必ず設定する
    • SNS、メール、オンラインバンクなどは2FAをオンにしましょう。
  2. パスワードの使い回しはしない
    • 複雑なパスワードをパスワードマネージャーで管理する。
  3. OAuthを使った安全なログインを利用する
    • GoogleやAppleアカウントを使った「ログイン」ボタンを活用。
  4. MFAでさらに強固な認証を導入する
    • ビジネス用途や機密情報には指紋認証やセキュリティキーを組み合わせる。

まとめ

  • OAuth 2.0:他サービスへの権限委譲に使われる仕組み。
  • OpenID Connect:OAuth 2.0をベースに本人確認を行う認証の仕組み。
  • 二要素認証(2FA):パスワード + スマホ認証コードなど、2つの要素で安全性を高める。
  • 多要素認証(MFA):さらに指紋や顔認証を加え、最強のセキュリティを実現。

認証の仕組みを理解して、安全なオンライン生活を手に入れましょう!

コメント

タイトルとURLをコピーしました