Open棟梁Project - マイクロソフト系技術情報 Wiki -[[戻る>クレームベース認証#k66961ce]] * 目次 [#qc1590f2] #contents *概要 [#ff7046a2] *変遷 [#k3aeda5b] -2009/4/23、OAuth 1.0のセキュリティ問題が判明した。この問題は、OAuth 1.0aで修正された。 -OAuth 2.0は次世代のOAuthプロトコルであり、OAuth 1.0とは後方互換性を持たない。 **OAuth 1.0とOAuth 2.0の違い [#s44d10cb] -OAuth 2.0でWebサービスの利用方法はどう変わるか(2-3)- @IT~ http://www.atmarkit.co.jp/fsmart/articles/oauth2/02.html +HTTPSを必須にし、署名をなくし、トークン取得も簡略化 +アクセストークンのみでリソース取得が可能に +Webアプリも含め、4つのクライアントプロファイルを仕様化 ++Webサーバ(Web Server)~ Webアプリケーション ++ユーザーエージェント(User-Agent) ~ JavaScript ++ネイティブアプリ(Native Application)~ モバイルやデスクトップアプリ(ガイドライン程度しか定義されていない) ++自立クライアント(Autonomous)~ 既存の認証フレームワークとSAMLなどのプロトコルを使って連携する場合のフロー。 *OAuthの利用例 [#nb5a56c4] **Instagramで共有した写真をFacebookやTwitterにも投稿 [#y50e86a3] Instagramの設定画面から複数の外部サービスと連携するように設定できる。 -InstagramはOAuthを用いて外部サービスに代理投稿するアクセス権限を受け取る。 -すると、Instagramは外部サービスに写真を投稿できるようになる。 -外部サービス --Twitter --Facebook **Facebook Twitter IDでほかのサイトにログイン [#d2a34d61] 「Facebook IDでログイン」や「Twitter IDでログイン」といったボタンで利用されている。 -本来、認証・ID連携のために設計されたものではないが、 --外部サービスにユーザのプロフィール情報を取得するAPIが存在する場合、~ このAPIへのアクセス権限を受け取ることで、認証・ID連携の代替が可能。 --誤った使い方をして脆弱性を生み出しているケースも多い。 -外部サービスの認証を信頼する場合 --Twitter --Facebook **参考 [#ae2863db] -デジタル・アイデンティティ技術最新動向(1):~ 「OAuth」の基本動作を知る (1-2) - @IT~ http://www.atmarkit.co.jp/ait/articles/1208/27/news129.html *OAuthのシーケンス [#e2a0d0ab] **Step 0:Client Registration [#m875246b] 準備 -クライアント登録の方法についてはOAuthの仕様では定められていない。 -OAuth Clientは、OAuth Serverに対してアプリ名やドメインなどを添えて自身を登録。 -通常はOAuth Serverのデベロッパー向けサイトでOAuth Clientを登録する。 -Consumer KeyとConsumer Secret? **Step 1:Initiate [#gdaa4c60] シーケンスの開始 -「Facebook IDでログイン」や「Twitter IDでログイン」といったボタンで開始する。 -OAuth ClientがResource OwnerからAPIアクセス権限の付与を受ける。 -OAuth 1.0とOAuth 2.0とでフローは多少異なる。 **Step 2:Authorization Request [#vc5a8f68] ユーザ認証とアクセス権限付与のリクエスト -事前にOAuth ClientはOAuth Serverにアクセスし、未認可のRequest Tokenを取得する。 -OAuth ClientはClient識別情報を付与しResource OwnerをOAuth Serverにリダイレクト --OAuth 2.0:Request Token --OAuth 2.0:Client識別情報をclient_idパラメータに含める。 **Step 3:Authenticate User & Get Approval [#i686ca48] ユーザ認証とアクセス権限付与 -リダイレクトを受けたOAuth Serverは --ユーザを認証(OAuthの仕様には含まれない)する(Request Tokenを認可済にする)。 --ユーザが使用するOAuth ClientにOAuth Serverへのアクセス権限付与を許可する。 **Step 4:Authorization Response [#g8be73c7] ユーザ認証とアクセス権限付与の結果をレスポンス -OAuth ServerはResource OwnerをOAuth Clientにリダイレクトして戻す。 -リダイレクトURLには、アクセス権限を示すトークンが含まれる。 --OAuth 1.0では、認可済Request Token --OAuth 2.0では、Client特性により、2種類のトークン形式が存在する。 ---Web : code ---Native : access_token **Step 5:Obtain Access Token [#v305cf48] -OAuth 1.0 :~ Request Tokenを実際のアクセス権を示すAccess Tokenと交換する -OAuth 2.0 :~ Step 4でaccess_tokenを得ていない場合、~ 受け取った「アクセス権限を示すトークン」とAccess Tokenを交換。 **Step 6:API Access [#tc7739ce] APIへのアクセス -Access Token使ってAPIにアクセス。 -Access Tokenは期限切れ、無効化されるまで利用可能。 **参考 [#t918c804] -デジタル・アイデンティティ技術最新動向(1):~ 「OAuth」の基本動作を知る (2-2) - @IT~ http://www.atmarkit.co.jp/ait/articles/1208/27/news129_2.html -第1回 OAuthとは?―OAuthの概念とOAuthでできること:~ ゼロから学ぶOAuth|gihyo.jp … 技術評論社~ http://gihyo.jp/dev/feature/01/oauth/0001?page=2 *参考 [#sd7d7875] -OAuth Core 1.0~ http://oauth.net/core/1.0/ -OAuth - Wikipedia~ https://ja.wikipedia.org/wiki/OAuth#OAuth_2.0 -ゼロから学ぶOAuth:特集|gihyo.jp … 技術評論社~ http://gihyo.jp/dev/feature/01/oauth -デジタル・アイデンティティ技術最新動向 連載インデックス - @IT~ http://www.atmarkit.co.jp/fsecurity/index/index_digid.html