「Googleでログイン」ってボタン、クリックしたことあるよね。あのとき、なんでGoogleのパスワードを入力するだけで、まったく別のサービスにログインできるんだろう……って不思議に思ったことない?それとも逆に、「このアプリにTwitterのデータへのアクセスを許可しますか?」みたいな画面が出てきて、よくわからないまま「許可」を押したことはないかな。その裏で動いてるのが「OAuth(オーオース)」という仕組みなんだ。この記事を読めば、OAuthが何をしているのか、なぜ安全なのか、「あーそういうことか!」とスッキリわかるようになるよ。
- OAuthは パスワードを渡さずに 他のサービスへのアクセスを安全に許可する仕組みだよ
- アクセスできる範囲を スコープ で細かく指定できるから、必要最低限の権限だけ渡せるんだ
- 「Googleでログイン」などの ソーシャルログイン はOAuthの代表的な使われ方のひとつだよ
もうちょっと詳しく
OAuthの正式名称は「Open Authorization(オープン・オーソリゼーション)」。2006年ごろに誕生して、今使われているのは「OAuth 2.0」というバージョンだよ。Webサービスやスマホアプリのほぼすべてがこの仕組みを採用してるんだ。OAuthが登場する前は、他のサービスのデータを使いたいとき、ユーザーがそのサービスのIDとパスワードをアプリに直接入力するという危険な方法しかなかった。OAuthはその問題を解決するために作られたんだ。パスワードをやりとりする代わりに「アクセストークン」と呼ばれる一時的な許可証を使うことで、パスワードを守りながら安全にデータのやりとりができるようになったよ。現代のインターネットを支える重要な仕組みのひとつだよ。
OAuth 2.0は「認可」の仕組み。パスワードを渡さず、許可証(トークン)でアクセスを管理するよ
⚠️ よくある勘違い
→ ログインに使われることは多いけど、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カレンダーと連携するケースで見てみよう。
- 天気アプリが「Googleカレンダーにアクセスしたい」とGoogleにリクエストを送るよ。
- Googleが「あなたのカレンダーを天気アプリに見せてもいいですか?」とあなたに確認する画面を出すよ。
- あなたが「許可」を押すと、Googleが天気アプリにアクセストークン(つまり「このデータに入っていい」という許可証)を発行するよ。
- 天気アプリはそのトークンを使って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は安全な仕組みだけど、使う人間側の注意も同じくらい大切なんだよ。
