OAuthって何?わかりやすく解説

「Googleでログイン」ってボタン、クリックしたことあるよね。あのとき、なんでGoogleのパスワードを入力するだけで、まったく別のサービスにログインできるんだろう……って不思議に思ったことない?それとも逆に、「このアプリにTwitterのデータへのアクセスを許可しますか?」みたいな画面が出てきて、よくわからないまま「許可」を押したことはないかな。その裏で動いてるのが「OAuth(オーオース)」という仕組みなんだ。この記事を読めば、OAuthが何をしているのか、なぜ安全なのか、「あーそういうことか!」とスッキリわかるようになるよ。

「Googleでログイン」ってよく見るんだけど、あれってどういう仕組みなの?Googleのパスワードが別のサービスに伝わってるってこと?

いい疑問!実はパスワードは別のサービスには渡ってないんだよ。これがOAuth(オーオース)の核心で、つまり「パスワードを教えなくても、あるサービスが別のサービスのデータにアクセスできる仕組み」のことなんだ。
パスワードを教えないのにアクセスできるの?それってどうやってるんだろう……?

ホテルのカードキーをイメージしてみて。フロントで「この部屋に入る許可」をもらったカードキーがあれば、自分の部屋には入れるけど、他の部屋や金庫は開けられないよね。OAuthも同じで、「この範囲だけアクセスしていいよ」というアクセストークン(つまり一時的な許可証)を発行する仕組みなんだ。
「この範囲だけ」って、どうやって範囲を決めるの?

それを決めるのがスコープ(つまりアクセスを許可する範囲の指定)だよ。たとえばGoogleカレンダーを使うアプリが「カレンダーの読み取りだけ許可して」とお願いしてきたら、「書き込みはダメだよ、読むだけね」って限定した許可証を出せるんだ。万が一アプリが悪意のあるものでも、被害を最小限にできるよ。
なるほど〜!じゃあOAuthって「認証」のことなの?

実はそこがよく間違えられるポイント!OAuthは認可(つまり「何をしていいか」を決めること)のための仕組みで、認証(つまり「あなたが誰か」を確認すること)とは別物なんだ。「ログイン」に見えても、OAuthがやってるのは「アクセスの許可を管理する」ことだよ。
📝 3行でまとめると
  1. OAuthは パスワードを渡さずに 他のサービスへのアクセスを安全に許可する仕組みだよ
  2. アクセスできる範囲を スコープ で細かく指定できるから、必要最低限の権限だけ渡せるんだ
  3. 「Googleでログイン」などの ソーシャルログイン はOAuthの代表的な使われ方のひとつだよ
目次

もうちょっと詳しく

OAuthの正式名称は「Open Authorization(オープン・オーソリゼーション)」。2006年ごろに誕生して、今使われているのは「OAuth 2.0」というバージョンだよ。Webサービスやスマホアプリのほぼすべてがこの仕組みを採用してるんだ。OAuthが登場する前は、他のサービスのデータを使いたいとき、ユーザーがそのサービスのIDとパスワードをアプリに直接入力するという危険な方法しかなかった。OAuthはその問題を解決するために作られたんだ。パスワードをやりとりする代わりに「アクセストークン」と呼ばれる一時的な許可証を使うことで、パスワードを守りながら安全にデータのやりとりができるようになったよ。現代のインターネットを支える重要な仕組みのひとつだよ。

💡 ポイント
OAuth 2.0は「認可」の仕組み。パスワードを渡さず、許可証(トークン)でアクセスを管理するよ

⚠️ よくある勘違い

❌ 「OAuthは”ログイン”するための仕組みだ」
→ ログインに使われることは多いけど、OAuthの本来の目的は「認可」、つまりアクセスの許可管理なんだ。「あなたが誰か」を確認する「認証」はOAuthの守備範囲じゃないよ。
⭕ 「OAuthは”アクセス許可を安全に委譲する”仕組みだ」
→ OAuthを使うと、パスワードを渡さずに「このアプリにはカレンダーの読み取りだけ許可する」という細かい権限管理ができるんだ。ログインへの応用はそのひとつに過ぎないよ。
なるほど〜、あーそういうことか!

[toc]

OAuthってそもそも何?基本の「き」から理解しよう

OAuthの正体はひとことで言うと?

OAuthとは、「Open Authorization(オープン・オーソリゼーション)」の略で、つまり「あるサービスが別のサービスのデータや機能に、パスワードなしで安全にアクセスできるようにする標準的な仕組み」のことだよ。

たとえば、料理レシピアプリを使い始めるとき「Googleアカウントで登録」を選んだとするじゃない。このとき、あなたはレシピアプリにGoogleのパスワードを教えてるわけじゃないよ。Googleが「このアプリにはあなたの名前とメールアドレスを見せてもいいよ」という許可証を発行して、レシピアプリはその許可証を使ってアクセスしてるんだ。パスワードを直接渡さないっていうのが、OAuthの一番大事なポイントだよ。

「認証」と「認可」の違いを押さえよう

OAuthを理解するうえで欠かせないのが、「認証」と「認可」の違いだよ。

  • 認証(Authentication):つまり「あなたが誰か」を確認すること。パスワードやスマホの顔認証がその例だよ。
  • 認可(Authorization):つまり「あなたが何をしていいか」を決めること。OAuthが担当しているのはこっちだよ。

図書館で例えると、図書館カードを見せて「この人は会員です」と確認してもらうのが認証。「この本は貸し出し可能です」「この資料室には入れます」と許可されるのが認可だよ。OAuthはこの「許可」の部分を安全にやりとりするための仕組みなんだ。ログインに見えても、やってることは認可の管理だよ。

OAuthが生まれた理由―昔はどうしてたの?

昔は危険な方法しかなかった

OAuthが登場する前、Webサービス同士がデータをやりとりしたいときはどうしてたと思う?答えはシンプルで、「ユーザーにIDとパスワードをアプリに直接入力してもらう」という方法だったんだ。

たとえば昔の家計簿アプリは、銀行のID・パスワードをそのまま入力させて、銀行のサイトに「なりすまし」でアクセスしてデータを取ってきてたんだよ。これって、考えてみるとかなり怖い話だよね。アプリが悪意を持っていたら、パスワードを盗み放題になっちゃうから。しかも「もうこのアプリには使わせたくない」と思っても、パスワードを変えるしか方法がなかったんだ。

OAuthが解決した3つの問題

2006年ごろ、TwitterやGoogleのエンジニアたちがこの問題を解決するために作り上げたのがOAuthだよ。OAuthを使えば次の3つが実現できるようになったんだ。

  • パスワードをアプリに渡さなくて済む
  • アクセスできる範囲を細かく指定できる(読むだけ・書き込みもOK、など)
  • 使わなくなったアプリへの許可をいつでも取り消せる

今では「OAuth 2.0」という改良版が世界中のサービスで使われていて、インターネットの安全を支える基盤になってるよ。身近なところでは、LINEやYahoo!・Apple IDでのログインも全部このOAuth 2.0の仕組みを使ってるんだ。

OAuthの仕組みをステップで見てみよう

登場人物を整理しよう

OAuthの仕組みを理解するには、まず「誰が何をしてるか」を整理するのが大事だよ。OAuthには4つの登場人物がいるんだ。

  • リソースオーナー:つまりデータの持ち主のこと。ほとんどの場合、あなた自身だよ。
  • クライアント:つまりデータにアクセスしたいアプリのこと。料理レシピアプリや家計簿アプリがこれにあたるよ。
  • 認可サーバー:つまり許可証(トークン)を発行するサーバーのこと。GoogleやTwitter・LINEがこの役割を担ってるよ。
  • リソースサーバー:つまり実際のデータが置いてあるサーバーのこと。Googleカレンダーのデータや、Twitterの投稿データがここにあるよ。

OAuthの流れをざっくり追ってみよう

実際にOAuthがどう動くか、スマホの天気アプリがGoogleカレンダーと連携するケースで見てみよう。

  1. 天気アプリが「Googleカレンダーにアクセスしたい」とGoogleにリクエストを送るよ。
  2. Googleが「あなたのカレンダーを天気アプリに見せてもいいですか?」とあなたに確認する画面を出すよ。
  3. あなたが「許可」を押すと、Googleが天気アプリにアクセストークン(つまり「このデータに入っていい」という許可証)を発行するよ。
  4. 天気アプリはそのトークンを使ってGoogleカレンダーのデータにアクセスするよ。この間、パスワードはどこにも登場しないんだ。

このトークンには「カレンダーの読み取りのみ」「有効期限は1時間」といった制限がついてることが多いよ。期限が切れたらまた新しいトークンをもらう必要があるんだ。ホテルのカードキーが翌朝には使えなくなる感じをイメージしてみてね。

日常のどこでOAuthが使われてるの?

ソーシャルログインが一番身近な例

OAuthの使われ方で一番身近なのがソーシャルログイン(つまり「Googleでログイン」「LINEでログイン」みたいに、すでに持ってる別サービスのアカウントで新しいサービスに登録・ログインする機能)だよ。

新しいサービスを使うたびに「メールアドレス入力して、パスワード設定して、メール認証して……」なんてやってたら大変だよね。ソーシャルログインを使えば、すでに持ってるアカウントでワンタップで登録できちゃうんだ。これがOAuthのおかげで安全に実現できてるよ。あなたのパスワードは新しいサービスには渡らず、許可証だけがやりとりされてるんだ。

アプリ連携もOAuthのおかげ

日常で使うアプリの連携にも、OAuthは大活躍してるよ。こんな例を見てみよう。

  • 家計簿アプリが銀行の入出金データを自動で取り込む
  • スケジュールアプリがGoogleカレンダーと同期する
  • SNS投稿ツールがTwitter・Instagram・Facebookに一括投稿する
  • 音楽アプリがSpotifyのプレイリストを読み込む

全部OAuthが使われてるんだ。それぞれのサービスが「どのデータまでアクセスしていいか」を許可証で管理してるから、パスワードを渡さずに安全な連携ができてるんだよ。「連携を解除」するボタンを押すだけで、そのアプリへのアクセストークンが無効になって、データへのアクセスをブロックできるのも便利なところだよ。

OAuthを使うときに知っておきたい注意点

許可画面のスコープをちゃんと確認しよう

OAuthの「許可」画面が出たとき、なんとなく「OK」を押してない?実はこの画面、ちゃんと確認することがとても大事なんだ。画面にはスコープ(つまりアプリがアクセスできる範囲)が書いてあるよ。

たとえば、単なるメモアプリなのに「連絡先へのフルアクセス」「メールの送受信」みたいな許可を求めてきたら、それは怪しいサインかも。本当に必要な権限だけを求めてくるのが正常なアプリの動作だよ。許可を出す前に、こんな点を確認しよう。

  • 「読み取りのみ」か「書き込みも可」かを確認する
  • アプリの目的と関係のない権限を求めてないか確認する
  • 信頼できないアプリや出所不明のアプリには許可を出さない

許可はいつでも取り消せるよ

OAuthのいいところのひとつが、許可をいつでも取り消せること。使わなくなったアプリへの許可は、Googleのアカウント設定(Googleの場合は「セキュリティ」→「サードパーティアプリ」)などから取り消せるんだ。

「昔連携したけど最近使ってないアプリ」「何に使ってるかよくわからないアプリ」への許可は、定期的に見直すのがおすすめだよ。アクセストークンを無効にすれば、そのアプリはあなたのデータにアクセスできなくなるんだ。パスワードを変えなくても、サクッと許可を切れるのがOAuthの便利なところだよ。

フィッシング詐欺にも気をつけよう

最後に大事な注意点を。OAuthの仕組みを悪用したフィッシング詐欺(つまり偽のサイトや偽のアプリでユーザーをだまして許可を取得しようとする攻撃)も存在するよ。「Googleの許可画面に見えるけど、URLが微妙に違う」というケースや、「全権限へのアクセスを求めてくる怪しいアプリ」などに気をつけてね。本物のOAuth許可画面はGoogleやTwitterなど信頼できるサービスのドメインで表示されるから、URLをちゃんと確認する習慣をつけておこう。OAuthは安全な仕組みだけど、使う人間側の注意も同じくらい大切なんだよ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大人になってから「これ知らなかった…」と恥ずかしい思いをした経験から、このサイトを作りました。お金・仕事・社会のしくみって、学校で教えてくれないのに知らないと損することだらけ。むずかしい言葉を「あーそういうことか!」って思えるまでかみ砕いて説明するのが得意です。主に経済・法律・税金・ライフイベント周りの用語を毎日更新中。

目次