OAuth 1.0

API認証プロトコル

目次一覧

 状態:-  閲覧数:494  投稿日:2018-07-20  更新日:2019-02-12  
Service Provider / Consumer / User
Consumer Key / Consumer Secret / Request Token / OAuth Verifier
処理の流れ1.「Consumer」 は「Service Provider」より、予めOAuth利用許可を得ておく
処理の流れ2.「Consumer」 は、「Consumer Key」「Consumer Secret」 を元に、「Service Provider」より「Request Token」を取得
処理の流れ3.「Consumer」 は、「Request Token」をもとに認証用URLを作成
処理の流れ4. 「Consumer」 は、作成した認証用URLへリダイレクト
処理の流れ5.「Consumer」が規定内容に関して「Service Provider」へアクセスを行い、データ操作すること を「User」が認証
処理の流れ6.「Consumer」はバックグラウンドで「Service Provider」と通信を行い、認可済の「Request Token」を実際のアクセス権を示す「Access Token」と交換
処理の流れ7.「Consumer」 は、取得した Access Token を用い、予めユーザーが許可した範囲内で、自由に「Service Provider」と通信を行い、データ操作を実施

Service Provider / Consumer / User

 閲覧数:197 投稿日:2018-07-21 更新日:2018-07-21 

Service Provider


片仮名表記
・サービスプロバイダー

アプリケーションの認証を行う
・Twitter など

Consumer


片仮名表記
・コンシューマー

アプリケーション
・ 認証を受け、サービスプロバイダーが持つユーザーリソースを操作

User


片仮名表記
・ユーザー

リソースの持ち主


Consumer Key / Consumer Secret / Request Token / OAuth Verifier

 閲覧数:205 投稿日:2018-07-21 更新日:2019-02-11 

Consumer Key


登録証明書
・Service Provider → Consumer

Consumer Secret


登録証明書
・Service Provider → Consumer

Request Token


「Consumer」が「Service Provider」からアクセス・トークンを発行してもらうまでの間、通信の際に合言葉として使われていくもの(利用許可証)
・取得した段階で、セッションへ保存するととともに、認証用URLを作成するために利用する
・なお、「Request Token」を発行するためには、「Consumer Key」「Consumer Secret」が必要
・Service Provider → Consumer



OAuth Verifier


証明情報

Access Token


APIを利用するための鍵(アカウント情報や使用アプリなどの環境情報を紐付けしてハッシュ化した文字列)
・「Request Token」「OAuth Verifier 」が揃っていて、かつ、正しい場合のみ発行される
・コンシューマーは、一旦アクセストークンを手に入れたら、パスワードの変更などを除いて、サービスプロバイダーでできることは、「post」「DM 送信」等ほとんどなんでも操作可能(但し、予めユーザーが許可した範囲内に限る。逆に言えば、ユーザーが、「読み書き全部許可」等する際には、細心の注意が必要)
・なお、 ユーザは、このコンシューマーへの許可を取り消すことで、いつでも好きなときにアクセストークンを無効にすることが出来る
・Service Provider → Consumer

処理の流れ1.「Consumer」 は「Service Provider」より、予めOAuth利用許可を得ておく

 閲覧数:202 投稿日:2018-07-21 更新日:2018-07-23 

「Consumer Key」と「Consumer Secret」値を取得


「Service Provider」に「Consumer」登録を行い、「登録証明書」にあたる「Consumer Key」と「Consumer Secret」値を取得
・ この操作は、「User」がリクエストを行う前に、「Service Provider」と「Consumer」の間で1回だけ行えばよい
・ つまり、「User」に対してサービスを提供する前に、Webサービス(「Service Provider」とアプリケーション)間での登録処理が必要
※ 登録処理そのものは、サービス提供者があらかじめ行っておくケースと、「User」が初回利用時に自分で行うケースがある
※ Twitterでは、「Twitterアプリの登録」を行なうことで、「Consumer Key」「Consumer Secret」などが取得出来る

処理の流れ2.「Consumer」 は、「Consumer Key」「Consumer Secret」 を元に、「Service Provider」より「Request Token」を取得

 閲覧数:217 投稿日:2018-07-22 更新日:2018-07-23 

リクエストトークンを取得


「Consumer」 は、「Consumer Key」「Consumer Secret」 を元に、「Service Provider」より「Request Token」を取得
・この操作は、ユーザー操作がトリガー
・「Consumer Key」と「Consumer Secret」で身の証を立てて、「Request Token」を取得
・具体的には、「利用許可証」にあたる「Request Token」が、「Service Provider」から「Consumer」へ渡る

コード例


1.
$to = new TwitterOAuth($consumer_key, $consumer_secret);
$r_tokenset = $to->getRequestToken();

2.Abraham Williams 「PHP Library to support OAuth」を利用した「ツイッターでログインするWebサービス」
▼redirect.php
$oauth = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
$requestToken = $oauth->getRequestToken();


処理の流れ3.「Consumer」 は、「Request Token」をもとに認証用URLを作成

 閲覧数:209 投稿日:2018-07-22 更新日:2018-07-23 

認証用URLを作成


「Consumer」 は、「Request Token」をもとに認証用URLを作成
・ token と token_secret がセットで返ってくるので取得し、一旦セッションへ保存(6で再びサービスプロバイダへ投げる)
・ token から 認証用URL を作成( 未認可のRequest TokenをURL Parameterに付加 )
・ 引数をいろいろセットしたり、確認用のパラメータを計算したりといろいろめんどくさい  
・ だいたいライブラリが URL を作る関数を用意してくれている
・Abraham Williams 「PHP Library to support OAuth」の場合は、OAuth.php にあるTwitterOAuthクラスのgetAuthorizeURLメソッドが該当

コード例


1.
$_SESSION['request_token']        = $r_tokenset['oauth_token'];
$_SESSION['request_token_secret'] = $r_tokenset['oauth_token_secret'];
$url = $to->getAuthorizeURL($_SESSION['request_token']);

2.Abraham Williams 「PHP Library to support OAuth」を利用した「ツイッターでログインするWebサービス」
▼redirect.php
$_SESSION['oauth_token'] = $requestToken['oauth_token'];
$_SESSION['oauth_token_secret'] = $requestToken['oauth_token_secret'];

$url = $oauth->getAuthorizeUrl($requestToken['oauth_token'], false);


処理の流れ4. 「Consumer」 は、作成した認証用URLへリダイレクト

 閲覧数:211 投稿日:2018-07-22 更新日:2018-07-22 

作成した認証用URLへ、実際にリダイレクト


具体的には、「User」が「Consumer」のWebページのリンクをクリックすることで、「Service Provider」のWebページへと画面遷移する、行為を指す

コード例


Abraham Williams 「PHP Library to support OAuth」を利用した「ツイッターでログインするWebサービス」
▼redirect.php
header('Location: '.$url);
exit;

画面表示例


認証用URLへのテキストリンク表示



(遷移先画面である)認証用URLの画面表示



処理の流れ5.「Consumer」が規定内容に関して「Service Provider」へアクセスを行い、データ操作すること を「User」が認証

 閲覧数:189 投稿日:2018-07-22 更新日:2018-07-23 

2択


「User」は、「許可する(Allow)」「拒否する(Deny)」の何れかを選ぶ
・ 「何を許可するか」が明記されている(例えば、データを更新する、消去する、といった操作)ので、選択する前に必ず確認  
「許可」を選ぶと、「Consumer」による「Service Provider」のユーザーリソースへのアクセスに、「User」が同意したことになる
「許可」が終わると、 Twitter はアプリケーションを登録したときに設定した「コールバックURL」へリダイレクトする。その際「Service Provider」は、認可済の「Request Token」をURLに含める

画面表示例


「コールバックURL」設定ページ


※リダイレクトではなく暗証番号(PIN)を使う方法もある




処理の流れ6.「Consumer」はバックグラウンドで「Service Provider」と通信を行い、認可済の「Request Token」を実際のアクセス権を示す「Access Token」と交換

 閲覧数:192 投稿日:2018-07-23 更新日:2018-07-23 

「Access Token」取得


「Request Token」をもとに「Access Token」を取得
・ 「3」で、セッションへ保存しておいた「Request Token」を利用して、「Service Provider」へアクセス
・ 「5」で、ユーザにより許可されていれば 「Service Provider」は「Access Token」を返す
$to = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['request_token'], $_SESSION['request_token_secret']);
$a_tokenset = $to->getAccessToken();


Abraham Williams 「PHP Library to support OAuth」
▼callback.php
session_start();

$oauth = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);



$accessToken = $oauth->getAccessToken($_GET['oauth_verifier']);
// var_dump($accessToken);
$me = $oauth->get('account/verify_credentials');


処理の流れ7.「Consumer」 は、取得した Access Token を用い、予めユーザーが許可した範囲内で、自由に「Service Provider」と通信を行い、データ操作を実施

Twitter検索結果。「OAuth 1.0」に関する最新ツイート

𝚌𝚒𝚝𝚛𝚞𝚜🍋7/18狐ドレア集会 @citrus_DQ

OpenID

コメント投稿(ログインが必要)



類似度ページランキング
順位 ページタイトル抜粋
1 OAuth 2.0 89
2 OAuth 71
3 Apache JMeter 36
4 Git BASH 35
5 Apache Solr 30
6 YouTube Data API v3 29
7 stable build 29
8 latest build 29
9 httpie 27
10 attribute 22
11 Cross-Origin Resource Sharing 21
12 O/Rマッピング 21
13 Chromecast 21
14 Flash Video 20
15 共用体 / union 20
16 Morris-Pratt algorithm 19
17 Ordinal Scale 18
18 リスト探索(list search)アルゴリズム 18
19 Knuth–Morris–Pratt algorithm border 18
20 Hyper Estraier 17
2022/7/03 1:58 更新
週間人気ページランキング / 6-26 → 7-2
順位 ページタイトル抜粋 アクセス数
1 ベクトル | 数学 | プログラミング用語 268
1 curl | HTTPクライアント(ネットワーク) | プログラミング用語 268
2 ルーター | ネットワーク | プログラミング用語 267
3 Flash Video | コンテナフォーマット | プログラミング用語 265
4 正規表現 | プログラミング | プログラミング用語 261
5 デーモン | Linux | プログラミング用語 258
6 ユースケース | 開発 | プログラミング用語 237
7 チェックアウト | バージョン管理システム(開発) | プログラミング用語 158
8 YouTube | API | プログラミング用語 128
9 Linux | プログラミング用語 45
10 PowerShell | スクリプト | プログラミング用語 44
11 可搬性 | プログラミング | プログラミング用語 33
12 クローラ | 検索エンジン | プログラミング用語 25
13 Subversion | バージョン管理システム(開発) | プログラミング用語 23
14 アンチパターン | プログラミング | プログラミング用語 11
15 プログラミング用語 9
16 deflate | ネットワーク | プログラミング用語 8
17 Nginx / Nginxとは?/ Apacheとの違い | プログラミング用語 6
17 YouTubeに掲載されている動画を、ユーザーが作成したWebサービス上で再生する方法 | プログラミング用語 6
17 WebLogic | アプリケーションサーバ(サーバ) | プログラミング用語 6
2022/7/3 1:01 更新