/
397.txt
65 lines (46 loc) · 3.47 KB
/
397.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
* 仕様書
[REFS[
- [1] [CITE@en[RFC 5849 - The OAuth 1.0 Protocol]] ([TIME[2014-12-28 14:19:21 +09:00]] 版) <http://tools.ietf.org/html/rfc5849#section-4.8>
- [3] '''[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-3.3>'''
- [15] [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-4.1.1>
- [16] [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-4.2.1>
]REFS]
* OAuth 1.0 における scope
[2] [[OAuth 1.0]] は [[scope]] のような仕組みが必要なことがよくあるとしつつも、
その方式の標準化には踏み込んでいません [SRC[>>1]]。
[4] 各[[鯖]]は、それぞれの方法で [[scope]] の指定を認めていました。
[[scope]] の概念を持たない[[鯖]]もありました。
* OAuth 2.0 における scope
[14] [DFN[[[scope]]]] ([[適用範囲]]) は、[[アクセストークン]]によって[[資源所有者]]がアクセスすることを[[クライアント]]から認められている[[資源]]や操作の範囲を表すものです。
短い [[ASCII]] 文字列によって表されます。
** 構文
[7] [CODE(URI)@en[[[scope]]]] [[引数]]の値は、
[CODE[[[U+0020]]]] で区切った[[認可鯖]]定義の[[文字列]]のリストです。
[[文字列]]の順序は意味を持ちません。 [SRC[>>3]]
[FIG(railroad)[
= 文字列
= *
== [CODE(char)[[[U+0020]]]]
== 文字列
]FIG]
[9] 各[[文字列]]は、[[印字可能ASCII文字]]のうち、 [CODE[[[U+0020]]]]、
[CODE[[[U+0022]]]]、[CODE[[[U+005C]]]] を除いたもので構成される1[[文字]]以上の列です
[SRC[>>3]]。
[REFS[
- [10] <http://chars.suikawiki.org/set/%24rfc6749:scope-token-char>
]REFS]
[8] 複数の[[文字列]]の指定は、それぞれの適用範囲を足していくことを表します [SRC[>>3]]。
** 文脈
[5] [[OAuth 2.0]] [[クライアント]]は、[[認可エンドポイント]]と[[トークンエンドポイント]]で[[要求]]の
[CODE(URI)@en[[[scope]]]] [[引数]]によってアクセス要求の[RUBYB[適用範囲]@en[scope]]を指定することができます [SRC[>>3, >>15, >>16]]。
[6] [[認可鯖]]は、発行した[[アクセストークン]]の適用範囲を[[クライアント]]に知らせるために[[応答]]で
[CODE(URI)@en[[[scope]]]] [[引数]]を指定します [SRC[>>3]]。
** 処理
[11] [[認可鯖]]は、[[認可鯖]]の方針や[[資源所有者]]の指示に基づき、
[[クライアント]]に指定された適用範囲の一部または全部を無視して構いません。
[[クライアント]]が要求した適用範囲と異なる[[アクセストークン]]を発行する時は、
[[応答]]に [CODE(URI)@en[[[scope]]]] [[引数]]を指定して[[アクセストークン]]の適用範囲を明示しなければ[['''なりません''']]。 [SRC[>>3]]
[12] [[クライアント]]が[[認可エンドポイント]]への要求で [CODE(URI)@en[[[scope]]]]
[[引数]]を指定しなかった時は、予め定義された既定値として処理するか、
妥当でない適用範囲として失敗にしなければ[['''なりません''']] [SRC[>>3]]。
[13] [[認可鯖]]は適用範囲の要件と既定値を明文化する[['''べきです''']] [SRC[>>3]]。