/
432.txt
54 lines (42 loc) · 3.76 KB
/
432.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
* 仕様書
[REFS[
- [1] [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.3.2>
- [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#section-4.2>'''
]REFS]
* 承諾フロー
[2] [DFN[[RUBYB[暗示的承諾]@en[implicit grant]]]]は、
[[JavaScript]] などの[[スクリプト言語]]で[[ブラウザー]]上で実装された[[クライアント]]のような、
[[クライアント型]]が[[公開]]であり特定の[[リダイレクトURL]]
を使うとわかっている[[クライアント]]に最適化された、
単純化されたフローです [SRC[>>1, >>8]]。
[11] [[クライアント]]は、まず[[資源所有者]] (の[[利用者エージェント]])
を[[認可エンドポイント]]に[[リダイレクト]]します。
この時[[クライアント]]は、[[クライアント識別子]] ([CODE(URI)@en[[[client_id]]]])、
[[適用範囲]] ([CODE(URI)@en[[[scope]]]])、
[[局所状態]] ([CODE(URI)@en[[[state]]]])、
[[リダイレクトURL]] ([CODE(URI)@en[[[redirect_uri]]]]) を指定します。 [SRC[>>8]]
[12] [[認可エンドポイント]]は[[資源所有者]]を[[認証]]し、
[[クライアント]]のアクセス要求を承認するか拒絶するかを確認します [SRC[>>8]]。
承認するなら、[[アクセストークン]]を[[素片識別子]]に添えて[[リダイレクトURL]]
へと[[クライアント]]を[[リダイレクト]]します [SRC[>>8]]。
[13] [[資源所有者]]の[[利用者エージェント]]は[[リダイレクト]]に従い[[クライアント]]の[[資源]]を[[要求]]しますが、
この時 [[HTTP要求]]には[[素片識別子]]は含まれません。
[[クライアント]]は [[Webページ]] (通常は[[スクリプト]]が埋め込まれた
[[HTML文書]]) を返します。 [[Webページ]]の[[スクリプト]]は[[素片識別子]]から[[アクセストークン]]その他の[[引数]]を取り出し、
[[クライアント]]へと渡します。 [SRC[>>8]]
;; [4] このように、[[クライアント]]は ([[認可符号]]を経ずに) [[アクセストークン]]を直接得ることができます [SRC[>>1, >>8]]。
[[認可符号]]のような中間の [[credentials]] を使わないので、
[RUBYB[暗示的]@en[implicit]]な[[承諾型]]と呼ばれています [SRC[>>1]]。
;; [10] [[リダイレクト]]を使っているので、
[[クライアント]]は[[資源所有者]]の[[利用者エージェント]] (通常は
[[Webブラウザー]]) と対話できるもので、[[リダイレクト]]により[[認可鯖]]から[[要求]]を受信できるものである必要があります [SRC[>>8]]。
[5] [[認可鯖]]は[[クライアント認証]]を行いません [SRC[>>1, >>8]]
([[クライアント]]から[[認可鯖]]への直接のアクセスが無いので、その機会もありません)。
[[資源所有者]]が存在していることと、[[リダイレクトURL]]
が登録されていることに依拠しています [SRC[>>8]]。
[6] [[アクセストークン]]は[[リダイレクトURL]]に指定されることとなるため、
[[資源所有者]]や、[[資源所有者]]と同じ[[装置]]にある他の[[応用]]に晒されるかもしれません
[SRC[>>1, >>8]]。
[7] [[暗示的承諾]]を使うと[[認証符号]]を使う場合のような[[アクセストークン]]を得るまでの往復を節減でき、
効率的ではありますが、便利さのために若干の[[セキュリティー]]を犠牲にしています [SRC[>>1]]。
[9] [[暗示的承諾型]]では、[[更新トークン]]は発行されません [SRC[>>8]]。