1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【セキュリティ】OAuthとは何か?──歴史から理解する「パスワードを渡さない認可の仕組み」

Last updated at Posted at 2025-11-14

はじめに

現代のWebサービスでは、GoogleログインやGitHubログインなど、
「パスワードを相手アプリに渡さずに認証・認可する仕組み」 が当たり前になってきました。

その中心にある技術が OAuth(オーオース) です。

この記事では、OAuth の歴史から、主要概念、基本フローまでを
コーヒー片手に“するっと理解できる”ように解説します。


1. OAuthとは?

OAuthとは、

ユーザーのパスワードを第三者アプリに渡さず、限定されたアクセス権だけを委譲する仕組み(認可フレームワーク)

です。

  • パスワードは出さない
  • 必要な権限だけ発行
  • トークンはいつでも無効化できる
  • もう昔の “パスワード預け文化” には戻れません。

2. OAuth が必要とされた理由(歴史)

■ 1990〜2005年:ID/Password 時代の“危険な常識”

インターネット黎明期から 2000 年代半ばまでは、
「サービス連携=パスワードを相手アプリに渡す」 が普通でした。

  • ブログの投稿連携
  • メールクライアントの同期
  • 写真サービスの自動アップロード

便利ではあるけれど、

外部アプリがユーザーのパスワードをそのまま握る

という、現代から見れば恐ろしい時代。

もし悪意あるアプリにパスワードを渡してしまったら…

  • メール全部読まれる
  • 勝手に投稿される
  • パスワード使い回しなら他サービスも乗っ取られる

というリスクが常にありました。

■ 2006〜2007年:API 連携ブームと危機感

2006 年ごろから、Twitter や Flickr が API を公開し始め、
世界が「サービス同士をつなぐ」方向へ大きく動き出します。

ところが API 連携が盛り上がるほど、開発者の間では

「このままパスワード渡す文化は無理じゃない?」

という危機感が一気に高まりました。

そこで Twitter / Flickr / OpenID の技術者たち
メーリングリストで議論を開始し、「パスワードを共有しない仕組み」を模索します。


■ 2007年:OAuth 草案(Draft)誕生

2007年、ついに OAuth の最初の草案が公開されました。

中心となった人物は:

  • Blaine Cook(Twitter)
  • Chris Messina(“#ハッシュタグ”の提案者)
  • Larry Halff(Flickr)
  • Dick Hardt(OpenID)

彼らは「ベンダーがバラバラに独自認証を作るより、業界標準にした方が良い」と判断し、

“ユーザーのパスワードを一度も渡さずに連携できる仕組み”

をデザインします。


■ 2007〜2010年:OAuth 1.0 正式化

OAuth 1.0 は 2010 年に RFC 5849 として標準化されました。

しかし当時の OAuth 1.0 は…

  • 署名方式(HMAC-SHA1)が複雑
  • パラメータが多く、ミスが多発
  • モバイルアプリとの相性が悪い

という欠点があり、実装難易度が高すぎる という問題がありました。


■ 2010〜2012年:OAuth 2.0 の再設計

ここから、OAuth の進化が加速します。

背景には、世界の技術トレンドの急変がありました。

  • iPhone(2007)、Android(2008)が普及
  • スマホアプリが急増
  • JavaScript SPA が台頭(Backbone.js → later Angular/React へ)
  • IoT が始まり、デバイスが多様化
  • API 経済という言葉が生まれ始める

OAuth 1.0 の複雑な署名方式では、これらを全部安全に扱うのは困難でした。

そこで IETF WG(標準化委員会)は 「OAuth 2.0 の全面再設計」 を開始。


■ 2012年:OAuth 2.0 誕生(RFC 6749)

とうとう 2012 年、OAuth 2.0 がリリースされます。

OAuth 2.0 は、OAuth 1.0 のような複雑な署名計算を廃止し、
「HTTPS 前提でシンプルかつ拡張性の高いフレームワーク」 として再構築されました。

その結果:

  • Googleログイン
  • GitHubログイン
  • Facebookログイン
  • Apple Sign-in
  • LINEログイン

など、現代すべての “ログイン with 〇〇” が OAuth 2.0 ベースになりました。


■ 2014〜2020年:OIDC(OpenID Connect)の普及

OAuth はそもそも「認可」フレームワークであり、
「認証(ログイン)」にはそのままでは使えません。

そこで登場したのが OpenID Connect(OIDC)

  • OAuth 2.0 の上に “ID Token” を追加
  • JWT による自己完結型 ID
  • シングルサインオンの普及
  • モバイルアプリ、SPA と完璧にマッチ

実質、OAuth 2.0 は OIDC とセットで世界標準になりました。


■ 2020〜2024年:PKCE が必須へ(モバイルの安全性確保)

OAuth 2.0 が広く使われる中で、モバイルアプリにおける
認可コード強奪(Auth Code Interception)攻撃 が問題化します。

その対策として登場したのが PKCE(ピクシー)

2020年代以降は:

  • Google
  • Apple
  • LINE
  • GitHub

など、事実上 PKCE は必須 になりました。


■ 2021〜現在:OAuth 2.1(ドラフト)

OAuth 2.1 は、OAuth 2.0 のベストプラクティスをまとめ直した改訂版。

重要な変更:

  • PKCE が完全必須
  • Implicit Flow 廃止
  • Password Grant 廃止
  • ベストプラクティス仕様(Security BCP)反映

現代では 「認可コード + PKCE」一択 に近い状態です。


■ 現代:Zero Trust / FAPI への進化

OAuth の役割は「連携」だけではなく、
今は Zero Trust金融 API (FAPI) の中心技術にまで進化しました。

  • 多要素認証との連携(MFA)
  • 金融機関レベルの API 保護
  • 業務基盤システムの認証
  • IoT / 車載デバイス / 産業システム

OAuth はすでに「ログイン技術」ではなく、
“インターネットの信頼の基盤” へと成長しています。


3. OAuth 2.0 の主要概念

■ Resource Owner(リソースオーナー)

データの持ち主(=ユーザー)

■ Client(クライアント)

アクセスを要求するアプリ
例:スタバ注文アプリ

■ Authorization Server(認可サーバー)

同意画面を出し、トークンを発行するサーバー

■ Resource Server(リソースサーバー)

ユーザーのデータが保存されているサーバー
例:Google Calendar API

■ Access Token

ユーザーに代わって操作するための “一時的な鍵”
寿命は短め(例:30分)

■ Refresh Token

Access Token の更新に利用する長寿命トークン
※厳重に管理すべし

■ Scope(スコープ)

アプリが要求する「アクセス範囲」
例:

  • profile(プロフィール閲覧)
  • email(メールアドレス取得)
  • calendar.readonly

「必要な権限だけ」を要求するのがポイント。


4. OAuth の動きが最も理解できる例:コーヒーショップ

あなたがスタバアプリで「決済」をするとき…

  1. スタバアプリ
    「決済情報にアクセスしてもいい?」
  2. 決済会社
    「このアプリを信用しますか?」(同意画面)
  3. あなた
    「OK」
  4. 決済会社 → アプリ:Access Tokenを発行

鍵(パスワード)はどこにも渡っていません。
これこそ OAuth の本質です。


5. OAuth 2.0 の基本フロー(認可コードフロー)

もっとも利用されている標準フローです(Web/モバイルで必須)。

OAuthは「パスワードを守るために、トークンという仕組みを使う」技術なのです。


6. OAuth がもたらしたメリット

メリット 内容
パスワードを共有しない セキュリティ上の大革新
権限を細かく制御できる scope により最小権限で利用可能
権限の取り消しが簡単 トークン単位で revoke
マルチプラットフォーム対応 Web / モバイル / IoT なんでもOK

7. まとめ

  • OAuthは「パスワードを渡さずに第三者に権限を委譲する仕組み」
  • 2012年の OAuth 2.0 が現在の世界標準
  • Access Token / Refresh Token / Scope がキーワード
  • 代表的フローは「認可コード + PKCE」(特にモバイルで必須)
  • Google / Apple / GitHub / LINE / Facebook など全てこれを利用

“ユーザーが安心してデータを渡せる世界” を作ったのが OAuth です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?