Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モダンWeb認証入門

 モダンWeb認証入門

モダンWeb認証入門

パスワードからOAuth、そしてパスワードレスの未来へ

データサイエンスAI実践(2025年度版)

Avatar for MIKIO KUBO

MIKIO KUBO

October 01, 2025
Tweet

More Decks by MIKIO KUBO

Other Decks in Education

Transcript

  1. 全体の流れ 1. 基礎の理解 認証(Authentication)と認可(Authorization) 2. 過去の課題 パスワードが抱える根本的な問題 3. 現代の解決策 認可のための

    OAuth 2.0 認証のための OpenID Connect 4. 未来への展望 パスワードレスを実現する WebAuthn と パスキー 4
  2. 認証の3 要素 認証は、これらの要素の組み合わせで行われます。 知識情報 (Something you know) パスワード、PINコード、秘密の質問 所持情報 (Something

    you have) ワンタイムパスワード、物理セキュリティキー 生体情報 (Something you are) 指紋、顔、虹彩 7
  3. 認証 vs 認可 まとめ 特徴 認証 (Authentication) 認可 (Authorization) 答える問い

    「あなたは誰ですか?」 「あなたは何をする権限がありま すか?」 主な目的 本人確認 権限付与 プロセスの例 ユーザー名とパスワードの 入力 ログイン後に特定のファイルへア クセス 例え話 空港でパスポートを提示 搭乗券でVIPラウンジに入る HTTP ステー タス 401 Unauthorized (認証失 敗) 403 Forbidden (権限なし) 11
  4. 解決策:OAuth 2.0 インターネットの「バレーキー」 OAuth 2.0は、 「委任された認可 (Delegated Authorization) 」 の問題を解決する

    標準プロトコルです。 重要: OAuth 2.0は 認可のためのプロトコルであり、 認証のためではありません。 車のバレーキーのように、 限定的で一時的な権限だけを第三者アプリに安全に渡す 仕組みです。 20
  5. OAuth 2.0 の登場人物 (4 つの役割) 1. リソースオーナー データの所有者 (例: あなた)

    2. クライアント データにアクセスしたいアプリ (例: 写真印刷サービス) 3. 認可サーバー 権限を許可し、トークンを発行する (例: Google) 4. リソースサーバー データが保管されている場所 (例: Google フォトのAPI) 21
  6. 認可コードフローの流れ ( 前半) 1. ユーザー操作: ユーザーが写真印刷サービスで「Googleフォトと連携」をクリック。 2. リダイレクト: ブラウザがGoogleの認可サーバーへ移動。 3.

    ユーザーの同意: Googleにログインし、「このアプリに写真へのアクセスを許可します か?」という画面で「許可」をクリック。 4. 認可コードの発行: Googleは、一時的な 認可コードを付けてブラウザを写真印刷サービスへ戻 す。 23
  7. 認可コードフローの流れ ( 後半) 5. コードとトークンの交換 ( サーバー間通信): 写真印刷サービスの サーバーが、受け取った認可コードを使って裏側で Googleにリクエスト。

    6. アクセストークンの取得: Googleはコードを検証し、正式な アクセストークンを写真印刷サービスの サーバーに渡す。 7. リソースへのアクセス: 写真印刷サービスは、そのアクセストークンを使ってGoogleフォトにアク セスし、写真を読み込む。 24
  8. OAuth の重要用語 スコープ (Scope) クライアントが要求する権限の範囲。「写真の読み取り専用」のように、 必要最小限の権限を指定します。 アクセストークン (Access Token) リソースサーバーへのアクセス権を示す「チケット」。通常、有効期限は

    短い(例: 1時間)。 リフレッシュトークン (Refresh Token) アクセストークンが切れた際に、新しいアクセストークンを再取得するた めの、より有効期限の長いトークン。 26
  9. 解決策:OpenID Connect (OIDC) OAuth 2.0 上のアイデンティティレイヤー OpenID Connect (OIDC)は、OAuth 2.0プロトコルの上に作られた薄いレイヤーで

    す。 その 唯一の目的は「認証」、つまりクライアントがユーザーの本人確認を行うこと です。 29
  10. JWT の構造 JWTは . で区切られた3つの部分から構成されます。 1. ヘッダー (Header) 署名アルゴリズムなどのメタ情報。 2.

    ペイロード (Payload) ユーザーID、発行者、有効期限などの情報(クレーム)。 3. 署名 (Signature) ヘッダーとペイロードを、IDプロバイダーの 秘密鍵で電子署名したもの。 この署名があるおかげで、受け取った側はID プロバイダーの公開鍵を使って、トー クンが本物で改ざんされていないことを検証できます。 32
  11. OAuth 2.0 vs OpenID Connect 項目 OAuth 2.0 OpenID Connect

    (OIDC) 主な目的 認可 (Authorization) 認証 (Authentication) 答える問い 「このアプリは何ができます か?」 「このユーザーは誰ですか?」 ベース ベースとなるプロトコル OAuth 2.0上のレイヤー 主要なトー クン アクセストークン ID トークン (+アクセストーク ン) ユースケー ス 「連絡先へのアクセスを許可」 「Google アカウントでログイ ン」 33
  12. WebAuthn の基盤:公開鍵暗号方式 WebAuthnはパスワードの代わりに、実績のある 公開鍵暗号方式を利用します。 1. 鍵ペアの生成 デバイス上で「秘密鍵」と「公開鍵」のペアを生成。 2. 秘密鍵 (Private

    Key) デバイス内の安全な領域に保管され、決して外に出ない。 3. 公開鍵 (Public Key) サーバーに登録し、アカウントと紐付ける。サーバーが知っているのはこ の安全な公開鍵だけ。 サーバーは秘密鍵を一切知らないため、情報漏洩のリスクが根本的にありません。 36
  13. WebAuthn のフロー ②:認証 (Authentication) 1. ユーザーがログインしようとする。 2. サーバーが新しい「チャレンジ」を送信。 3. ユーザーが指紋などで操作を承認。

    4. デバイス内の 秘密鍵が「チャレンジ」に電子署名を行う。 5. サーバーは、登録済みの 公開鍵を使って署名を検証。 6. 検証が成功すれば、本人であると証明され、ログインが許可される。 38
  14. パスキー (Passkeys) とは? パスキーは、WebAuthnの仕組みをより使いやすくした ブランド名であり、 実装形 態です。 最大の特徴: WebAuthnで作成された認証情報(秘密鍵と公開鍵のペア)を、iCloud やGoogle

    パスワードマネージャーを介して、複数のデバイス間で安全に同期できる点です。 これにより、スマホで作ったパスキーを使ってPCからもシームレスにログインでき ます。 39
  15. WebAuthn の最強の利点:フィッシング耐性 WebAuthnは、設計段階からフィッシング攻撃に耐性を持つように作られていま す。 オリジン・バインディング 認証情報は、生成されたサイトのドメイン(例: https://my-bank.com ) と暗号学的に強く結びつけられます。 攻撃者が巧妙な偽サイト(例:

    https://my-bank-login.com )を作って も、ドメインが違うため認証は 自動的に失敗します。 フィッシングを見破る責任が、間違いを犯しやすい人間から、間違いを犯さないプ ロトコルに移されます。 40
  16. 本日のまとめ:各技術の役割 パスワード 共有された秘密という 根本的な課題を抱える。 OAuth 2.0 認可を担当。「あなたは何ができますか?」 OpenID Connect (OIDC)

    認証を担当。「あなたは誰ですか?」 WebAuthn / パスキー パスワードレス認証を実現。「共有された秘密」を完全に排除。 42