/
787.txt
131 lines (109 loc) · 5.33 KB
/
787.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
[16] [DFN[[[OAuth 2.0]]]] は、 [[Webアプリケーション]]の[[認証]]に関する仕様です。
[17] [[OAuth 1.0]] を[[廃止]]し置き換える後継版ですが、 [[OAuth 1.0]]
との互換性はまったくありません。そのため [[OAuth 1.0]] を実装していた[[鯖]]は現在も引き続き
[[OAuth 1.0]] を使っていることが多いですし、[[クライアント]]は[[鯖]]に応じて
[[OAuth 1.0]] と [[OAuth 2.0]] を使い分ける必要があります。
* 仕様書
[REFS[
- [8] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749>
-- [9] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749#section-1.1>
-- [13] [CITE@en[RFC 6749 - The OAuth 2.0 Authorization Framework]] ([TIME[2014-12-15 14:15:35 +09:00]] 版) <http://tools.ietf.org/html/rfc6749#section-1.8>
]REFS]
* プロトコル
[10] [[OAuth 2.0]] では当事者が次の通り名付けられています。
[FIG(short list)[
- [[鯖]]
-- [[資源鯖]]
--- [[被保護資源]]
-- [[認可鯖]]
--- [[認可エンドポイント]]
--- [[トークンエンドポイント]]
- [[クライアント]]
-- [[リダイレクトエンドポイント]]
- [[資源所有者]]
]FIG]
[11] 次のような概念が存在します。
[FIG(short list)[
- [[クライアント登録]]
- [[クライアント認証]]
- [[認可承諾]]
-- [[認可符号]]
-- [[暗示的承諾]]
-- [[資源所有者合言葉credentials]]
-- [[クライアントcredentials]]
- [[アクセストークン]]
-- [[トークン型]]
- [[更新トークン]]
]FIG]
[12] [[OAuth 2.0]] では[[認可鯖]]から[[アクセストークン]]を得るための方法が幾つもありますが、
いずれにせよ最終的には[[クライアント]]が[[アクセストークン]]を得ることになりますから、
[[資源鯖]]は多数の[[認証]]方式に対応せずとも、[[アクセストークン]]にさえ対応すれば良いこととなります。
[19] [[HTTP]] などの次の機能を使います。
[FIG(short list)[
- [[基本認証]]
- [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]]
- [[JSON]]
]FIG]
[20] [[URL query]] では次の[[引数]]が使われます。
[FIG(short list)[
- [CODE(URI)@en[[[client_id]]]]
- [CODE(URI)@en[[[code]]]]
- [CODE(URI)@en[[[error]]]]
- [CODE(URI)@en[[[error_description]]]]
- [CODE(URI)@en[[[error_uri]]]]
- [CODE(URI)@en[[[response_type]]]]
- [CODE(URI)@en[[[redirect_uri]]]]
- [CODE(URI)@en[[[scope]]]]
- [CODE(URI)@en[[[state]]]]
]FIG]
[21] [[素片識別子]]では次の[[引数]]が使われます。
[FIG(short list)[
- [CODE(URI)@en[[[access_token]]]]
- [CODE(URI)@en[[[expires_in]]]]
- [CODE(URI)@en[[[scope]]]]
- [CODE(URI)@en[[[state]]]]
- [CODE(URI)@en[[[token_type]]]]
]FIG]
[18] [[payload body]] の [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]]
では次の[[引数]]が使われます。
[FIG(short list)[
- [CODE(URI)@en[[[client_id]]]]
- [CODE(URI)@en[[[client_secret]]]]
- [CODE(URI)@en[[[code]]]]
- [CODE(URI)@en[[[grant_type]]]]
- [CODE(URI)@en[[[redirect_uri]]]]
]FIG]
[22] [[payload body]] の [[JSON]] では次の[[引数]]が使われます。
[FIG(short list)[
- [CODE@en[[[access_token]]]]
- [CODE@en[[[token_type]]]]
- [CODE@en[[[expires_in]]]]
- [CODE@en[[[refresh_token]]]]
- [CODE@en[[[scope]]]]
]FIG]
[14] [[OAuth 2.0]] には沢山のオプション機能や未定義としている部分があり、
[[相互運用性]]を妨げる虞があることを [[RFC]] も認めています [SRC[>>13]]。
;; [15] [[RFC]] は将来の[[プロファイル]]や拡張により改善されることを期待する [SRC[>>13]]
としていますが、そのような態度で状況が良くなった例などあるのでしょうかね...
* 歴史
[1] [CITE@en[OAuth 2.0 — OAuth]]
([TIME[2010-12-10 09:38:02 +09:00]] 版)
<http://oauth.net/2/>
[2] [CITE[単なる OAuth 2.0 を認証に使うと、車が通れるほどのどでかいセキュリティー・ホールができる « .Nat Zone]]
([TIME[2012-02-03 12:55:56 +09:00]] 版)
<http://www.sakimura.org/2012/02/1487/>
[3] [CITE[OAuthにおける「クライアントサイドに対する認可」なのか「サーバーサイドに対する認可」なのか明確でない問題 - 金利0無利息キャッシング – キャッシングできます - subtech]]
( ([TIME[2012-02-19 10:46:54 +09:00]] 版))
<http://subtech.g.hatena.ne.jp/mala/20120214/1329199851>
[4] [CITE@en[RFC 6819 - OAuth 2.0 Threat Model and Security Considerations]]
( ([TIME[2013-06-28 00:10:34 +09:00]] 版))
<http://tools.ietf.org/html/rfc6819>
[5] [CITE@en[draft-ietf-oauth-v2-http-mac-05 - OAuth 2.0 Message Authentication Code (MAC) Tokens]]
( ([TIME[2014-10-16 11:57:15 +09:00]] 版))
<http://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05>
[6] [CITE@en[draft-yusef-sipcore-sip-oauth-01 - The Session Initiation Protocol (SIP) OAuth]]
( ([TIME[2014-10-15 09:03:21 +09:00]] 版))
<https://tools.ietf.org/html/draft-yusef-sipcore-sip-oauth-01>
[7] [CITE@en[draft-ietf-kitten-sasl-oauth-16 - A set of SASL Mechanisms for OAuth]]
( ([TIME[2014-10-16 12:17:28 +09:00]] 版))
<https://tools.ietf.org/html/draft-ietf-kitten-sasl-oauth-16>