Open棟梁Project - マイクロソフト系技術情報 Wiki
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>クレームベース認証#k66961ce]]
-[[戻る>OpenID / OAuth / OpenID Connect]]

* 目次 [#qc1590f2]
#contents

*概要 [#ff7046a2]
[[OAuth 1.0>#eb4fd2ef]]と[[OAuth 2.0>#h8e684ba]]にページを分割しました。

*変遷 [#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 1.0]] [#eb4fd2ef]
-OpenIDを使ってTwitterやMa.gnoliaのAPIの認証委譲する方法を議論を開始。

*OAuthの利用例 [#nb5a56c4]
**Instagramで共有した写真をFacebookやTwitterにも投稿 [#y50e86a3]
Instagramの設定画面から複数の外部サービスと連携するように設定できる。
-2007/4~
OAuthのコミュニティが誕生。

-InstagramはOAuthを用いて外部サービスに代理投稿するアクセス権限を受け取る。
-すると、Instagramは外部サービスに写真を投稿できるようになる。
-2007/7~
OAuthの仕様の草案が完成。

-外部サービス
--Twitter
--Facebook
-2007/10~
OAuth Core 1.0 の最終草案がリリース。

**Facebook Twitter IDでほかのサイトにログイン [#d2a34d61]
「Facebook IDでログイン」や「Twitter IDでログイン」といったボタンで利用されている。
-2008/11~
第73回のIETF会合でOAuthの非公式会合も開かれ、~
IETFにOAuthプロトコルを提案するかどうかを議論。

-本来、認証・ID連携のために設計されたものではないが、
--外部サービスにユーザのプロフィール情報を取得するAPIが存在する場合、~
このAPIへのアクセス権限を受け取ることで、認証・ID連携の代替が可能。
--誤った使い方をして脆弱性を生み出しているケースも多い。
-2009/4/23~
OAuth 1.0のセキュリティ問題が判明。~
この問題は、OAuth 1.0aで修正された。

-外部サービスの認証を信頼する場合
--Twitter
--Facebook
**[[OAuth 2.0]] [#h8e684ba]
-[[OAuth 1.0>#eb4fd2ef]]とは後方互換性を持たない。
-次世代のOAuthプロトコルとして、2012年にRFCとして発行された。

**参考 [#ae2863db]
-デジタル・アイデンティティ技術最新動向(1):~
「OAuth」の基本動作を知る (1-2) - @IT~
http://www.atmarkit.co.jp/ait/articles/1208/27/news129.html
**[[OpenID Connect]] [#q13700e0]

*OAuthのシーケンス [#e2a0d0ab]
**[[OAuth 2.1]] [#y3fecccd]

-OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜~
OAuth 2.0 Authorization Code Flow~
http://www.slideshare.net/kura_lab/openid-connect-id/21
**[[OAuth XYZ(3.0)>Transactional Authorization(XYZ)]] [#d0c682a4]

**Step 0:Client Registration [#m875246b]
準備
*違い [#c9173f21]

-クライアント登録の方法についてはOAuthの仕様では定められていない。
-OAuth Clientは、OAuth Serverに対してアプリ名やドメインなどを添えて自身を登録。
-通常はOAuth Serverのデベロッパー向けサイトでOAuth Clientを登録する。
**[[OAuth 1.0>#eb4fd2ef]]と[[OAuth 2.0>#h8e684ba]]の違い [#s44d10cb]
+HTTPSを必須にし、署名をなくし、Token取得も簡略化
+[[Access Token>OAuth 2.0#jb722a87]]のみでリソース取得が可能に
+Webアプリも含め、4つのClient Profileを仕様化
++Webサーバ(Web Server)~
Webアプリケーション
++User Agentベースアプリケーション~
WWWブラウザ上のJavaScript
++ネイティブアプリ(Native Application)~
モバイルやデスクトップアプリ(ガイドライン程度しか定義されていない)
++自立クライアント(Autonomous)~
既存の認証フレームワークとSAMLなどのプロトコルを使って連携する場合のフロー。

-Consumer KeyとConsumer Secret?
**[[OAuth 2.0>#h8e684ba]]と[[OpenID Connect>#q13700e0]]の違い [#z37db375]
-Tokenが[[JWT]]アサーション形式で暗号化・署名される。

**Step 1:Initiate [#gdaa4c60]
シーケンスの開始
-新しく、Hybrid Flowが追加されている。
--[[Authorization Codeグラント種別>OAuth 2.0#yfeb403d]] ---> [[Authorization Code Flow>OpenID Connect#mcde509a]]
--[[Implicitグラント種別>OAuth 2.0#m5c2d510]] ---> [[Implicit Flow>OpenID Connect#e7adf5c2]]
--上記の組合せたようなグラント種別 ---> [[Hybrid Flow>OpenID Connect#l565139a]]

-「Facebook IDでログイン」や「Twitter IDでログイン」といったボタンで開始する。
-OAuth ClientがResource OwnerからAPIアクセス権限の付与を受ける。
-OAuth 1.0とOAuth 2.0とでフローは多少異なる。
-コレ以外にも、多数のオプションが追加されている。

**Step 2:Authorization Request [#vc5a8f68]
ユーザ認証とアクセス権限付与のリクエスト
*参考 [#sd7d7875]
-OAuth - Wikipedia~
https://ja.wikipedia.org/wiki/OAuth

-事前にOAuth ClientはOAuth Serverにアクセスし、未認可のRequest Tokenを取得する。
-OAuth ClientはClient識別情報を付与しResource OwnerをOAuth Serverにリダイレクト
--OAuth 2.0:Request Token
--OAuth 2.0:Client識別情報をclient_idパラメータに含める。
-初心者のためのOAuth — OAuthの基本のキ | Rriver~
https://parashuto.com/rriver/development/learning-oauth-basics

**Step 3:Authenticate User & Get Approval [#i686ca48]
ユーザ認証とアクセス権限付与
-How is OAuth 2 different from OAuth 1? - Stack Overflow~
http://stackoverflow.com/questions/4113934/how-is-oauth-2-different-from-oauth-1

-リダイレクトを受けたOAuth Serverは
--ユーザを認証(OAuthの仕様には含まれない)する(Request Tokenを認可済にする)。
--ユーザが使用するOAuth ClientにOAuth Serverへのアクセス権限付与を許可する。
-IETF106参加記録 - OAuthの未来|株式会社レピダム~
https://lepidum.co.jp/blog/2019-12-03/future-of-oauth/

**Step 4:Authorization Response [#g8be73c7]
ユーザ認証とアクセス権限付与の結果をレスポンス
**@IT [#n0d6d892]
-デジタル・アイデンティティ技術最新動向 連載インデックス~
http://www.atmarkit.co.jp/fsecurity/index/index_digid.html
--デジタル・アイデンティティ技術最新動向(1):「OAuth」の基本動作を知る
---http://www.atmarkit.co.jp/ait/articles/1208/27/news129.html
---http://www.atmarkit.co.jp/ait/articles/1208/27/news129_2.html

-OAuth ServerはResource OwnerをOAuth Clientにリダイレクトして戻す。
-OAuth 2.0でWebサービスの利用方法はどう変わるか
--http://www.atmarkit.co.jp/fsmart/articles/oauth2/01.html
--http://www.atmarkit.co.jp/fsmart/articles/oauth2/02.html
--http://www.atmarkit.co.jp/fsmart/articles/oauth2/03.html

-リダイレクトURLには、アクセス権限を示すトークンが含まれる。
--OAuth 1.0では、認可済Request Token
--OAuth 2.0では、Client特性により、2種類のトークン形式が存在する。
---Web : code
---Native : access_token
----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]

**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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS