OAuth

 

OAuthとは

OAuthOpen Authorization)とは、異なるWebサービス間で連携してデータのアクセス許可(認可)を行うためのプロトコル。「オー オース」と読む。
ソーシャルログイン(SNSログイン)などの外部アカウント連携機能で利用される。
現在広く使われているOAuth 2.0の仕様はRFC6749で定義されている。
 

OAuthの利用例

Webサイトのログイン画面にて、「Twitterでログイン」という機能を見かける事がある。この機能で使われているのがOAuthとなる。
以下、サンプルサイト(https://sample.site)へTwitter連携してログインする手順を示す。
 
  1. ユーザIDとパスワードを入力する代わりに「Twitterでログイン」ボタンをクリック。
 
  1. サンプルサイト(https://sample.site)にTwitterの情報へのアクセスを許可するならば、「連携アプリを認証」ボタンをクリック。
 
  1. ユーザIDとパスワードを入力せずにログインできる!
 

OAuthを利用するメリット

  • ユーザIDとパスワードの入力の手間が省ける。
  • 新しいユーザIDとパスワードの管理が不要となる。
  • 別サービスのSNSが提供する2段階認証が利用でき、セキュリティが向上する。
 

OAuthの構成と動作フロー

OAuthは以下の4つの役割(ロール)で構成されている。
リソースオーナー (resource owner)アクセスを許可する役割。 【下図での例】サンプルサイトへ訪問するユーザ
クライアント (client)リソースを要求する役割。 【下図での例】サンプルサイト
認可サーバ (authorization server)アクセストークンを発行する役割。 【下図での例】TwitterのAPIサーバ
リソースサーバ (resource server)リソースを管理する役割。 【下図での例】Twitter
 
サンプルサイトのログイン画面より、Twitterと連携してログイン処理するまでの動作フローを以下の図に示す。
 

動作フロー詳細

  1. ユーザはサンプルサイトのログイン画面へアクセスする。
  1. ユーザがログイン画面で「Twitterでログイン」ボタンをクリックすると、Twitterの認可サーバは連携要求画面を送信する。
  1. ユーザが連携を許可すると、Twitterの認可サーバは認可コードを送信する。
  1. サンプルサイトはユーザ経由で受け取った認可コードをTwitterの認可サーバに送信し、アクセストークンを受け取る
  1. サンプルサイトはTwitterのリソースサーバにアクセストークンを送信し、ユーザの情報を取得する。
  1. サンプルサイトはTwitterから取得したユーザ情報を元に認証実施し、ユーザにログイン後のWebページを送信する。