OAuth/OIDCを3分で理解する
OAuthとOpen ID Connectはコンシューマ様向けIDサービスの元になっている原理原則を標準化した仕様です。この記事はOAuth/Open ID Connectの概要を3分で把握頂くことを目標としています。
用語の整理 - Just 4Words!
まずはじめに用語を整理します。必要なのは4つだけです。
認証 / 個人を特定することです。"あなたは誰ですか?免許証を見せて下さい。"
認可 / 個人にリソースの使用を許可することです。"あなたはこの部屋を使うことが許可されています。どうぞ中へお入り下さい。"
OAuth / 認可の仕組みを標準化した規定です。
Open ID Connect / OAuthに認証の要素を追加した規定です。
OAuthが誕生する前 - Password is being shared!
OAuthが誕生する前はどのような問題があったのでしょうか?
UserがブラウザでFacebookにアクセスしてFacebookからGoogleのAPIを呼び出すシーンを考えてみます。FacebookからGoogleのAPIにアクセスするために、Facebookが"あなたのGoogleのID/Passwordを入力して下さい"とUserに言っています。言われたとおりにGoogleのID/Passwordを入力します。Facebookは入力されたID/Passwordを使ってGoogle APIにアクセスできました。 ちょっと待ってみましょう。自分のID/Passwordを他のシステムに渡すのは、ID/Passwordを紙に書いて他人に渡すことと同じですよね? ID/Passwordを悪意のある誰かに盗まれたら困りますよね?
OAuthが誕生 - Password is never be shared!
前述したPassword Sharing!の問題を回避するためにOAuthが誕生して、以下のようなステップでPassword Sharing!を回避することが可能になりました。
1. FacebookはGoogle APIを呼び出すためにOAuth ServerにTokenを払い出して欲しいと要求します
2. OAuth ServerはUserにID/Passwordの入力を要求, Userは各々を入力します
3. OAuth ServerはID/Passwordを検証してTokenをFacebookに払い出します
4. FacebookはTokenを利用してGoogle APIを呼び出します
ID/Passwordを物理的にコピーするのではなく、OAuth Serverに認可情報を含んだTokenを発行してもらいTokenを利用してGoogle APIにアクセスすることでPassword is shared!の問題は回避できましたね。でも待ってみましょう。OAuthは認可の仕組みを標準化した規定ですよね? 認証はどうなるんでしたっけ?
Open ID Connectが誕生 - OAuth + Authentication!
OAuthに認証機能を追加したOpen ID Connectが誕生して認証も扱うことができるようになりました。OAuth Serverから認証情報を含むTokenがFacebookに発行されるようになったため、FacebookはそのTokenをチェックしてUserがOAuth Serverにいつ認証されていつ認証が切れるかをチェックして、認証されているUserだけに表示できるコンテンツを表示させたり、そのTokenに含まれているUserの名前等情報を取ってきてFacebookの画面に表示させたりすることができるようになりました。
最後までお付き合い頂き誠にありがとうございます。3分で概要を把握頂けたら嬉しいです。