OAuth
OAuthとは
OAuth(Open Authorization)とは、異なるWebサービス間で連携してデータのアクセス許可(認可)を行うためのプロトコル。「オー オース」と読む。
ソーシャルログイン(SNSログイン)などの外部アカウント連携機能で利用される。
OAuthの利用例
Webサイトのログイン画面にて、「Twitterでログイン」という機能を見かける事がある。この機能で使われているのがOAuthとなる。
以下、サンプルサイト(https://sample.site)へTwitter連携してログインする手順を示す。
- ユーザIDとパスワードを入力する代わりに「Twitterでログイン」ボタンをクリック。
- サンプルサイト(https://sample.site)にTwitterの情報へのアクセスを許可するならば、「連携アプリを認証」ボタンをクリック。
- ユーザIDとパスワードを入力せずにログインできる!
OAuthを利用するメリット
- ユーザIDとパスワードの入力の手間が省ける。
- 新しいユーザIDとパスワードの管理が不要となる。
- 別サービスのSNSが提供する2段階認証が利用でき、セキュリティが向上する。
OAuthの構成と動作フロー
OAuthは以下の4つの役割(ロール)で構成されている。
リソースオーナー (resource owner) | アクセスを許可する役割。 【下図での例】サンプルサイトへ訪問するユーザ |
---|---|
クライアント (client) | リソースを要求する役割。 【下図での例】サンプルサイト |
認可サーバ (authorization server) | アクセストークンを発行する役割。 【下図での例】TwitterのAPIサーバ |
リソースサーバ (resource server) | リソースを管理する役割。 【下図での例】Twitter |
サンプルサイトのログイン画面より、Twitterと連携してログイン処理するまでの動作フローを以下の図に示す。
動作フロー詳細
- ユーザはサンプルサイトのログイン画面へアクセスする。
- ユーザがログイン画面で「Twitterでログイン」ボタンをクリックすると、Twitterの認可サーバは連携要求画面を送信する。
- ユーザが連携を許可すると、Twitterの認可サーバは認可コードを送信する。
- サンプルサイトはユーザ経由で受け取った認可コードをTwitterの認可サーバに送信し、アクセストークンを受け取る
- サンプルサイトはTwitterのリソースサーバにアクセストークンを送信し、ユーザの情報を取得する。
- サンプルサイトはTwitterから取得したユーザ情報を元に認証実施し、ユーザにログイン後のWebページを送信する。