2014年4月17日 dstnhub発表スライド...
TRANSCRIPT
OAuth 2.0 認証を実現してDropbox に繋いでみたLightning Talk @ dstn HUB, April 2014
株式会社アプレッソ開発部 開発 1G 陳映融
DataSpider Servista で
簡単な自己紹介
• 2014 年 1 月 アプレッソに入社 (まだピチピチ?)
• 台湾出身 (寒いのは苦手)
• 日本語でおk (いま発表しているわけだし)
2
OAuth 2.0 認証って?
• OAuth (オー オース)– Web サービスと連携するための認証– 連携対象のリソースへのアクセス認可も扱う
⇒ Web サービスの API のアクセス認証
• OAuth 2.0 = 次世代の OAuth– その仕組みはちょっと複雑なので…
3
OAuth 2.0 認証の仕組みを寸劇風で説明します!
※ Authorization Code Grant Flow の場合
登場人物
• SP :サービスプロバイダ• AS@SP :認証サーバ( authorization
server )• RS@SP :リソースサーバ( resource
server )• DEV :開発者• APP :アプリ• USER :利用者=リソースの所有者
5
シーン0~本番前
• 開発者がサービスプロバイダにアプリ登録
SP さん、紹介するよ~ うちの新人の APP ちゃんだ!
APP です。今後ともよろしくお願いします。 m(_ _)m
お、よろしく! APP さんのID カードを発行するから、
無くさないようにしまってね~
IDカード:クライアント識別用の ID と秘密鍵
6
シーン1~認証開始• ユーザがアプリに仕事を依頼
APP ちゃん、あとで用事を頼みたいけど、先に SP さ
んの所に行ってくれない?
はい、お安いご用です。行ってきま
す。
7
シーン2~認証コードリクエスト• アプリが認証サーバに認証コードをリク
エストUSER さんに用事を頼まれまし
た。ロッカーの合鍵引換証をくださ
い。
ID カードを拝見します。USER さんに連絡して確認を取るから、少々ちょっとお待ちを。
ロッカー合鍵引換証:認証コード、リソース(ロッカー)のアクセス(合鍵)を引き換えるための一時的認可
8
• ユーザにログインして、アプリのアクセスを承認してもらう
シーン3~ユーザ承認
USER さん、 APP さんに用事を依頼したのは間違
いないですか?
はい、間違いないです。
大丈夫です。ボクのロッカーを APP ちゃんに使
わせてください。では、 USER さんのロッカーを APP さんに使わ
せて大丈夫でしょうか?
ロッカー:ウェブサービス上にある、ユーザが所有しているリソース 9
シーン4~認証コード発行• 認証サーバが認証コードを発行
ありがとうございます。
USER さんに確認を取れたので、引換証を発行します。
10
シーン5~アクセストークン発行• アプリが認証コードをアクセストークン
に交換USER さんのロッカーですね。
ID カードを確認させてください。
USER さんのロッカーの合鍵をくださ
い。合鍵引換証あります。
はい、 ID カードはここにありま
す。
うん、問題ないですね。はい、合鍵です。
11
シーン6~認証完了• アプリが許可されたリソースにアクセス
さて、仕事はじめますか。
12
早速、 OAuth2.0 認証用のスクリプトを見てみましょう!
アクセストークン取得スクリプト
※HTTP トリガーに登録しておく (リダイレクト URI として使用)
14
アクセストークン取得の流れ
【変数代入】リクエストの識別情報用の実行 ID を取得して、スクリプト変数に保存する。
15
アクセストークン取得の流れ
【外部アプリケーション起動】ブラウザ起動して、認証サーバにリクエスト送信する。パラメータ:・ client_id = クライアント ID・ redirect_uri = リダイレクト URI・ state = リクエスト・レスポンス同定用情報(実行 ID )
16
アクセストークン取得の流れ
【繰り返し(条件指定)】認証コードのレスポンスが処理されて、一時ファイルが作成されるまで待つ
17
アクセストークン取得の流れ
( HTTP トリガー発火)スクリプトパラメータ:・ code = 認証コード・ state = リクエスト・レスポンス 同定用情報(実行 ID )
18
アクセストークン取得の流れ
【変数代入】リクエスト・レスポンス同定用情報(実行 ID )を保存先ファイル名に設定する。
19
アクセストークン取得の流れ
【マッピング】【 CSV ファイル書き込み】認証コードを一時ファイルに保存する。
20
アクセストークン取得の流れ
【繰り返し(条件指定)】ファイルが作成されたのでループ終了。
21
アクセストークン取得の流れ
【 CSV ファイル読み取り】【マッピング】認証コード一時ファイルから認証コードを抽出して、スクリプト変数に保存。
22
アクセストークン取得の流れ
【 POST 実行】認証コードでアクセストークンを取得する。パラメータ:・ code = 認証コード・ client_id = クライアント ID・ client_secret = クライアント秘密鍵・ redirect_uri = リダイレクト先 URI (確認用)
23
アクセストークン取得の流れ
【マッピング】【 CSV ファイル書き込み】レスポンスからアクセストークンを抽出して、ファイルに保存する。
24
アクセストークン取得の流れ
【ファイル /ディレクトリ削除】認証コードの一時ファイルを削除する。
25
(おまけ)Dropbox の連携スクリプト
リソースへのアクセス例
【 CSV ファイル読み取り】ファイルからアクセストークンを読み取る。
【変数代入】アクセストークンをスクリプトに設定する。
【 GET 実行】/account/info ⇒ アカウント情報を取得する/files ⇒ ファイルをダウンロードする
27