見出し画像

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分で概要を把握頂けたら嬉しいです。

この記事が気に入ったらサポートをしてみませんか?