forked from nov/draft-ietf-oauth
-
Notifications
You must be signed in to change notification settings - Fork 5
/
rfc6749.xml
6497 lines (6287 loc) · 375 KB
/
rfc6749.xml
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<rfc category="std" ipr="trust200902" obsoletes="5849" number="6749" submissionType="IETF" consensus="yes">
<?rfc toc='yes' ?>
<?rfc tocdepth='3' ?>
<?rfc symrefs='yes' ?>
<?rfc sortrefs='yes' ?>
<?rfc compact='yes' ?>
<?rfc subcompact='no' ?>
<?rfc rfcedstyle="yes"?>
<front>
<title abbrev='OAuth 2.0'>The OAuth 2.0 Authorization Framework</title>
<author fullname='Dick Hardt' surname='Hardt' initials='D' role='editor'>
<organization>Microsoft</organization>
<address>
<email>[email protected]</email>
<uri>http://dickhardt.org/</uri>
</address>
</author>
<date month="October" year="2012" />
<area>Security</area>
<workgroup>OAuth Working Group</workgroup>
<abstract>
<t>
OAuth 2.0 は, サードパーティーアプリケーションによるHTTPサービスへの限定的なアクセスを可能にする認可フレームワークである.
サードパーティーアプリケーションによるアクセス権の取得には, リソースオーナーとHTTPサービスの間で同意のためのインタラクションを伴う場合もあるが,
サードパーティーアプリケーション自身が自らの権限においてアクセスを許可する場合もある.
本仕様書はRFC 5849に記載されているOAuth 1.0 プロトコルを廃止し, その代替となるものである.
<!--
The OAuth 2.0 authorization framework enables a third-party application to obtain limited
access to an HTTP service, either on behalf of a resource owner by orchestrating an approval
interaction between the resource owner and the HTTP service, or by allowing the third-party
application to obtain access on its own behalf. This specification replaces and obsoletes
the OAuth 1.0 protocol described in RFC 5849.
-->
</t>
</abstract>
</front>
<middle>
<section title='はじめに'>
<!-- <section title='Introduction'> -->
<t>
従来のクライアントサーバー型の認証モデルでは, クライアントはリソースオーナーのクレデンシャルを使ってサーバーに対して認証を行い, サーバー上の保護されたリソースにアクセスする.
つまり, サードパーティーアプリケーションに保護されたリソースへのアクセス権を与えるには, リソースオーナーは自身のクレデンシャルをサードパーティーと共有する必要がある.
これはいくつかの問題と制限をもたらす.
<!--
In the traditional client-server authentication model, the client requests an access-restricted
resource (protected resource) on the server by authenticating with the server using the resource
owner's credentials. In order to provide third-party applications access to restricted resources,
the resource owner shares its credentials with the third party.
This creates several problems and limitations:
-->
</t>
<t>
<list style='symbols'>
<t>
サードパーティーアプリケーションは, 後の利用のためにリソースオーナーのクレデンシャルを保存しておかなければならない.
特にパスワードは平文 (訳注: または復号可能な形) で保存されることになる.
<!--
Third-party applications are required to store the resource owner's credentials
for future use, typically a password in clear-text.
-->
</t>
<t>
パスワードを利用することでセキュリティが低下したとしても, サーバーはパスワードベースの認証方式をサポートしなければならない.
<!--
Servers are required to support password authentication, despite the security
weaknesses inherent in passwords.
-->
</t>
<t>
サードパーティーアプリケーションは, リソースオーナーの保護されたリソースに対して過度に広範囲のアクセス権を得ることになる一方で,
リソースオーナーは, アクセスをリソースのサブセットに限定したりアクセス可能期間を制限したりできない.
<!--
Third-party applications gain overly broad access to the resource owner's protected
resources, leaving resource owners without any ability to restrict duration or access
to a limited subset of resources.
-->
</t>
<t>
リソースオーナーは各サードパーティーごとにアクセス権を無効化することはできず, アクセス権を無効化する際にはすべてのサードパーティーが持つアクセス権を無効化しなければならない.
つまりそれはパスワード変更を意味する.
<!-- NOTE: 3rd-partyのパスワードを変更するってどゆこと? -->
<!--
Resource owners cannot revoke access to an individual third party without revoking
access to all third parties, and must do so by changing the third party's password.
-->
</t>
<t>
サードパーティーアプリケーションの情報漏えいはエンドユーザーのパスワードおよびパスワードによって保護されているすべての情報の漏洩につながる.
<!--
Compromise of any third-party application results in compromise of the end-user's
password and all of the data protected by that password.
-->
</t>
</list>
</t>
<t>
OAuthは, 認可レイヤーをもうけてクライアントとリソースオーナーの役割を分けることで, これらの問題の解決に取り組む.
OAuthでは, クライアントは, リソースオーナーのコントロール下にありリソースサーバーによってホストされているリソースへのアクセス権を要求する.
そしてリソースオーナーのクレデンシャルそのものとは別のクレデンシャルを取得する.
<!--
OAuth addresses these issues by introducing an authorization layer and separating the role
of the client from that of the resource owner. In OAuth, the client requests access to
resources controlled by the resource owner and hosted by the resource server, and is issued
a different set of credentials than those of the resource owner.
-->
</t>
<t>
保護されたリソースにアクセスする為にリソースオーナーのクレデンシャルを使う代わりに, クライアントはアクセストークンを取得する.
アクセストークンとは, ある特定のスコープ, 期間およびその他のアクセス権に関する情報を示す文字列である.
アクセストークンはリソースオーナーの同意をもって認可サーバーからサードパーティークライアントへ発行される.
クライアントはアクセストークンを用いてリソースサーバーがホストしている保護されたリソースにアクセスする.
<!--
Instead of using the resource owner's credentials to access protected resources, the client
obtains an access token -- a string denoting a specific scope, lifetime, and other access
attributes. Access tokens are issued to third-party clients by an authorization server with
the approval of the resource owner. The client uses the access token to access the
protected resources hosted by the resource server.
-->
</t>
<t>
例えば, あるユーザー (リソースオーナー) が, 印刷サービス (クライアント) に対して, 写真共有サービス上 (リソースサーバー) に保管されている彼女の保護された写真へのアクセス権を与えることを考える.
OAuthでは, その際彼女のユーザー名とパスワードを印刷サービスに与える必要はない.
そのかわり, 彼女は写真共有サービスの信任を得たサービス (認可サーバー) に対して認証を行い, 印刷サービスへのアクセス権限委譲用クレデンシャル (アクセストークン) を発行させる.
<!--
For example, an end-user (resource owner) can grant a printing service (client) access
to her protected photos stored at a photo-sharing service (resource server), without
sharing her username and password with the printing service. Instead, she authenticates
directly with a server trusted by the photo-sharing service (authorization server), which
issues the printing service delegation-specific credentials (access token).
-->
</t>
<t>
本仕様書はHTTP <xref target='RFC2616' /> での利用を想定して設計されている.
HTTP以外の通信プロトコルでのOAuth利用については対象としない.
<!--
This specification is designed for use with HTTP (<xref target='RFC2616' />). The use of
OAuth over any protocol other than HTTP is out of scope.
-->
</t>
<t>
Informationalドキュメントとして発行されたOAuth 1.0 (<xref target='RFC5849' />) は, 小規模のアドホックなコミュニティにより作られた.
Standard Trackである本仕様は, OAuth 1.0で得られた経験を元に, IETFコミュニティから発生したさらなるユースケースや拡張性を加味して策定されている.
OAuth 2.0はOAuth 1.0との互換性はない.
2つのバージョンは共存可能であり, 実装者は両方をサポートすることも可能である.
しかしながら本仕様は, 新規実装されるサービスではOAuth 2.0をサポートし, OAuth 1.0は既存サービスのサポートのためにのみ用いることを想定している.
OAuth 2.0プロトコルには, OAuth 1.0と共通の実装詳細はごく少ない.
OAuth 1.0に詳しい実装者は, OAuth 1.0の知識に基づく憶測を持たずに本仕様を理解すること.
<!--
The OAuth 1.0 protocol (<xref target='RFC5849' />), published as an informational document,
was the result of a small ad hoc community effort. This Standards Track specification builds
on the OAuth 1.0 deployment experience, as well as additional use cases and extensibility
requirements gathered from the wider IETF community. The OAuth 2.0 protocol is not backward
compatible with OAuth 1.0. The two versions may co-exist on the network, and implementations
may choose to support both. However, it is the intention of this specification that new
implementations support OAuth 2.0 as specified in this document and that OAuth 1.0 is used
only to support existing deployments. The OAuth 2.0 protocol shares very few implementation
details with the OAuth 1.0 protocol. Implementers familiar with OAuth 1.0 should approach
this document without any assumptions as to its structure and details.
-->
</t>
<section title='登場人物'>
<!-- <section title='Roles'> -->
<t>
OAuthは以下の4つのロールを定義する.
<!--
OAuth defines four roles:
-->
</t>
<t>
<list style='hanging'>
<t hangText='リソースオーナー (resource owner)'>
<vspace />
保護されたリソースへのアクセスを許可するエンティティー.
リソースオーナーが人間の場合, エンドユーザーと呼ばれる.
<!--
An entity capable of granting access to a protected resource. When the resource owner
is a person, it is referred to as an end&nbhy;user.
-->
</t>
<t hangText='リソースサーバー (resource server)'>
<vspace />
保護されたリソースをホストし, アクセストークンを用いた保護されたリソースへのリクエストを受理してレスポンスを返すことのできるサーバー.
<!--
The server hosting the protected resources, capable of accepting and responding to
protected resource requests using access tokens.
-->
</t>
<t hangText='クライアント (client)'>
<vspace />
リソースオーナーの認可を得て, リソースオーナーの代理として保護されたリソースに対するリクエストを行うアプリケーション.
「クライアント」という表現は, 該当アプリケーションの実装上の特徴には関係がない.
(OAuthクライアントは, サーバー上で動くアプリケーションであることもあれば, デスクトップアプリケーションやその他のデバイス上で動くアプリケーションであることもある)
<!--
An application making protected resource requests on behalf of the resource owner and
with its authorization. The term "client" does not imply any particular implementation
characteristics (e.g., whether the application executes on a server, a desktop, or
other devices).
-->
</t>
<t hangText='認可サーバー (authorization server)'>
<vspace />
リソースオーナーの認証とリソースオーナーからの認可取得が成功した後, アクセストークンをクライアントに発行するサーバー.
<!--
The server issuing access tokens to the client after successfully authenticating the
resource owner and obtaining authorization.
-->
</t>
</list>
</t>
<t>
認可サーバーとリソースサーバー間のやりとりについては本仕様書の範囲外である.
認可サーバーはリソースサーバーと同一のサーバーでも異なるサーバーでもよい.
単一の認可サーバーが複数のリソースサーバーにアクセス可能なアクセストークンを発行してもよい.
<!--
The interaction between the authorization server and resource server is beyond the scope
of this specification. The authorization server may be the same server as the resource
server or a separate entity. A single authorization server may issue access tokens
accepted by multiple resource servers.
-->
</t>
</section>
<section title='プロトコルフロー'>
<!-- <section title='Protocol Flow'> -->
<figure title='Abstract Protocol Flow' anchor='Figure-1'>
<artwork><![CDATA[
+--------+ +---------------+
| |--(A)- Authorization Request ->| Resource |
| | | Owner |
| |<-(B)-- Authorization Grant ---| |
| | +---------------+
| |
| | +---------------+
| |--(C)-- Authorization Grant -->| Authorization |
| Client | | Server |
| |<-(D)----- Access Token -------| |
| | +---------------+
| |
| | +---------------+
| |--(E)----- Access Token ------>| Resource |
| | | Server |
| |<-(F)--- Protected Resource ---| |
+--------+ +---------------+
]]></artwork>
</figure>
<t>
<xref target='Figure-1' />で示されたOAuth 2.0のフロー概要は, 4つのロール間での相互作用と以下のステップについて記載している.
<!--
The abstract OAuth 2.0 flow illustrated in <xref target='Figure-1' /> describes the interaction
between the four roles and includes the following steps:
-->
</t>
<t>
<list style='format (%C)'>
<t>
クライアントはリソースオーナーに対して認可を要求する.
その際 (図のように) リソースオーナーに直接認可要求を行うことも出来るが, 認可サーバーを経由して間接的に行うことがのぞましい.
<!--
The client requests authorization from the resource owner. The authorization request
can be made directly to the resource owner (as shown), or preferably indirectly via
the authorization server as an intermediary.
-->
</t>
<t>
クライアントは, リソースオーナーの認可を表すクレデンシャルとして認可グラントを受け取る.
認可グラントは本仕様で定義される4つのグラントタイプの内の1つ, または拡張されたグラントタイプで発行される.
どの認可グラントタイプを用いるかは, クライアントの利用する認可リクエストの方式と認可サーバーがサポートするグラントタイプに依存する.
<!--
The client receives an authorization grant, which is a credential representing
the resource owner's authorization, expressed using one of four grant types defined
in this specification or using an extension grant type. The authorization grant type
depends on the method used by the client to request authorization and the types
supported by the authorization server.
-->
</t>
<t>
クライアントは認可サーバーに対して自身を認証し, 認可グラントを提示することで, アクセストークンを要求する.
<!--
The client requests an access token by authenticating with the authorization server
and presenting the authorization grant.
-->
</t>
<t>
認可サーバーはクライアントを認証し, 認可グラントの正当性を確認する.
そして認可グラントが正当であれば, アクセストークンを発行する.
<!--
The authorization server authenticates the client and validates the authorization
grant, and if valid, issues an access token.
-->
</t>
<t>
クライアントはリソースサーバーの保護されたリソースへリクエストを行い, 発行されたアクセストークンにより認証を行う.
<!--
The client requests the protected resource from the resource server and authenticates
by presenting the access token.
-->
</t>
<t>
リソースサーバーはアクセストークンの正当性を確認し, 正当であればリクエストを受け入れる.
<!--
The resource server validates the access token, and if valid, serves the request.
-->
</t>
</list>
</t>
<t>
クライアントがリソースオーナーから認可グラントを取得する (図中AおよびB) 際には, 認可サーバーが仲介を行う方式が望ましい.
この方式は<xref target="grant-code"/>の<xref target='Figure-3'/>に示されている.
<!--
The preferred method for the client to obtain an authorization grant from the resource
owner (depicted in steps (A) and (B)) is to use the authorizatio server as an intermediary,
which is illustrated in <xref target='Figure-3'/>
in <xref target="grant-code"/>.
-->
</t>
</section>
<section title='認可グラント'>
<!-- <section title='Authorization Grant'> -->
<t>
認可グラントは, リソースオーナーによる (保護されたリソースへのアクセスを行うことに対する) 認可を示し, クライアントがアクセストークンを取得する際に用いられる.
本仕様では認可コード, インプリシット, リソースオーナーパスワードクレデンシャル, クライアントクレデンシャルの4つのグラントタイプを定義しており, 拡張仕様によってタイプを追加することもできる.
<!--
An authorization grant is a credential representing the resource owner's authorization
(to access its protected resources) used by the client to obtain an access token. This
specification defines four grant types -- authorization code, implicit, resource owner
password credentials, and client credentials -- as well as an extensibility mechanism for
defining additional types.
-->
</t>
<section title='認可コード'>
<!-- <section title='Authorization Code'> -->
<t>
認可コードは, 認可サーバーがクライアントとリソースオーナーの仲介となって発行する.
リソースオーナーへ直接認可を要求する代わりに, クライアントは (<xref target='RFC2616' /> に定義されたユーザーエージェントを経由して) リソースオーナーを認可サーバーへリダイレクトさせ, リソースオーナーがリダイレクトして戻ってきた際に認可コードを取得する.
<!--
The authorization code is obtained by using an authorization server as an intermediary
between the client and resource owner. Instead of requesting authorization directly
from the resource owner, the client directs the resource owner to an authorization
server (via its user&nbhy;agent as defined in <xref target='RFC2616' />), which in turn
directs the resource owner back to the client with the authorization code.
-->
</t>
<t>
リソースオーナーを認可コードとともにリダイレクト経由でクライアントに戻す前に, 認可サーバーはリソースオーナーを認証し認可を得る.
これによりリソースオーナーは認可サーバーによってのみ認証され, リソースオーナーのクレデンシャルはクライアントへ共有されない.
<!--
Before directing the resource owner back to the client with the authorization code, the
authorization server authenticates the resource owner and obtains authorization.
Because the resource owner only authenticates with the authorization server, the
resource owner's credentials are never shared with the client.
-->
</t>
<t>
認可コードは, クライアントを認証する機会を提供したり, リソースオーナーのユーザーエージェントを経由せずアクセストークンをクライアントに直接送信できるなど, いくつかの点で重要なセキュリティ的なメリットを提供する.
リソースオーナーのユーザーエージェントを経由してデータを送信した場合, そのデータはリソースオーナーを含む第三者に露出する可能性がある.
<!--
The authorization code provides a few important security benefits,
such as the ability to authenticate the client, as well as the
transmission of the access token directly to the client without
passing it through the resource owner's user-agent and potentially
exposing it to others, including the resource owner.
-->
</t>
</section>
<section title='インプリシット' anchor="ImplicitIntro">
<!-- <section title='Implicit' anchor="ImplicitIntro"> -->
<t>
インプリシットグラントは, 認可コードフローを単純化したものであり, JavaScriptの様なスクリプト言語を使用してブラウザ上で実行されるクライアントに最適化されている.
インプリシットフローでは, クライアントは (リソースオーナー認可の結果) 認可コードの代わりに直接アクセストークンを受け取る.
このグラントタイプは (認可コードのように後にアクセストークンを取得する際に用いられる) 仲介のクレデンシャルを利用しないため, インプリシット (訳注: implicit = 暗黙の) と呼ばれる.
<!--
The implicit grant is a simplified authorization code flow optimized for clients
implemented in a browser using a scripting language such as JavaScript. In the implicit
flow, instead of issuing the client an authorization code, the client is issued an
access token directly (as the result of the resource owner authorization). The grant
type is implicit, as no intermediate credentials (such as an authorization code) are
issued (and later used to obtain an access token).
-->
</t>
<t>
インプリシットグラントフローでアクセストークンを発行する場合, 認可サーバーはクライアントを認証しない.
ただし, クライアントにアクセストークンを渡す際に使用されるリダイレクトURIをもとに, クライアントの身元が検証可能なこともある.
アクセストークンはリソースオーナー, もしくはリソースオーナーのユーザーエージェントにアクセスすることで他のアプリケーションに晒される可能性がある.
<!--
When issuing an access token during the implicit grant flow, the authorization server
does not authenticate the client. In some cases, the client identity can be verified
via the redirection URI used to deliver the access token to the client. The access
token may be exposed to the resource owner or other applications with access to the
resource owner's user-agent.
-->
</t>
<t>
アクセストークンを得るのに必要な往復の回数を減らせるため, インプリシットグラントは (ブラウザにおけるアプリケーションとして実行されたクライアントなど) いくつかのクライアントで応答性と効率性を高める.
しかしながら, 特に認可コードグラントタイプが利用可能である場合, インプリシットグラントを用いた場合の利便性はセキュリティー面の影響とトレードオフの関係にあることを考慮すべきである.
セキュリティー面の影響についての詳細は, <xref target="AccessTokenSecurity" format="counter"/>および<xref target="ImplicitImpersonation" format="counter"/>を参照のこと.
<!--
Implicit grants improve the responsiveness and efficiency of some clients (such as a
client implemented as an in-browser application) since it reduces the number of round
trips required to obtain an access token. However, this convenience should be weighed
against the security implications of using implicit grants, especially when the
authorization code grant type is available.
Implicit grants improve the responsiveness and efficiency of some clients (such as a
client implemented as an in-browser application), since it reduces the number of round
trips required to obtain an access token. However, this convenience should be weighed
against the security implications of using implicit grants,
such as those described in Sections <xref target="AccessTokenSecurity" format="counter"/> and
<xref target="ImplicitImpersonation" format="counter"/>,
especially when the authorization code grant type is available.
-->
</t>
</section>
<section title="リソースオーナーパスワードクレデンシャル">
<!-- <section title="Resource Owner Password Credentials"> -->
<t>
リソースオーナーパスワードクレデンシャル (例えばユーザー名とパスワード) を直接アクセストークンを得るための認可グラントとして使用することも出来る.
このクレデンシャルは, (例えばクライアントがデバイスOSの一部となっていたり, 非常に特権のあるアプリケーションである場合のように) リソースオーナーとクライアントの間で高い信頼があり, (認可コードのような) 他の認可グラントタイプが利用できない場合のみ使用されるべきである.
<!--
The resource owner password credentials (i.e., username and password) can be used
directly as an authorization grant to obtain an access token. The credentials should
only be used when there is a high degree of trust between the resource owner and the
client (e.g., the client is part of the device operating system or a highly privileged
application), and when other authorization grant types are not available (such as an
authorization code).
-->
</t>
<t>
このグラントタイプでは, クライアントがリソースオーナークレデンシャルへ直接アクセスすることになるが, リソースオーナークレデンシャルは一度きりのリクエストにのみ使用され, アクセストークンに交換される.
このグラントタイプでは, クレデンシャルを寿命の長いアクセストークンやリフレッシュトークンと交換することにより, クライアントがリソースオーナークレデンシャルを後の利用のために保存しておく必要がなくなる.
<!--
Even though this grant type requires direct client access to the resource owner
credentials, the resource owner credentials are used for a single request and are
exchanged for an access token. This grant type can eliminate the need for the client
to store the resource owner credentials for future use, by exchanging the credentials
with a long-lived access token or refresh token.
-->
</t>
</section>
<section title='クライアントクレデンシャル'>
<!-- <section title='Client Credentials'> -->
<t>
認可範囲がクライアントの管理下にある保護されたリソース, もしくはあらかじめ認可サーバーとの間で調整済の保護されたリソースに制限されている場合は, 認可グラントとしてクライアントクレデンシャル (もしくは他のクライアント認証形式) が使用できる.
クライアントがクライアント自身の権限においてに行動している (つまりクライアントがリソースオーナーである) か, クライアントがあらかじめ認可サーバーとの間で調整済の保護されたリソースアクセスを求めている場合, クライアントクレデンシャルが認可グラントとして使用される.
<!--
The client credentials (or other forms of client authentication) can be used as an
authorization grant when the authorization scope is limited to the protected resources
under the control of the client, or to protected resources previously arranged with the
authorization server. Client credentials are used as an authorization grant typically
when the client is acting on its own behalf (the client is also the resource owner) or
is requesting access to protected resources based on an authorization previously
arranged with the authorization server.
-->
</t>
</section>
</section>
<section title='アクセストークン'>
<!-- <section title='Access Token'> -->
<t>
アクセストークンは保護されたリソースにアクセスするために使用されるクレデンシャルである.
アクセストークンはクライアントに対して発行される認可を表す文字列である.
この文字列は通常クライアントからみるとランダムな文字列になっている.
トークンはアクセス範囲とアクセス期間を表し, それらはリソースのオーナーによって許可され, リソースサーバーと認可サーバーによって適用される.
<!--
Access tokens are credentials used to access protected resources. An access token is a
string representing an authorization issued to the client. The string is usually opaque
to the client. Tokens represent specific scopes and durations of access, granted by the
resource owner, and enforced by the resource server and authorization server.
-->
</t>
<t>
トークンは認可情報を取り出すための識別子を表したり, 検証可能な方法でそれ自身に認可情報を含んでもよい (データと署名を含むトークン文字列など).
クライアントがトークンを使用するために, 本仕様で定めていない追加の認証クレデンシャルを要求することもできる.
<!--
The token may denote an identifier used to retrieve the authorization information or may
self-contain the authorization information in a verifiable manner (i.e., a token string
consisting of some data and a signature). Additional authentication credentials, which
are beyond the scope of this specification, may be required in order for the client to
use a token.
-->
</t>
<t>
アクセストークンによって, 様々な認可要素 (例えばユーザー名やパスワード) をリソースサーバーが解釈できる単体のトークンに置き換えるような抽象化レイヤーが提供される.
この抽象化は, これらの認可要素を取得するための認可グラントよりも制限の強いアクセストークンの発行を可能とするだけではなく, 広範囲の認証方式をリソースサーバーが解釈する必要性がなくなる.
<!--
The access token provides an abstraction layer, replacing different authorization
constructs (e.g., username and password) with a single token understood by the resource
server. This abstraction enables issuing access tokens more restrictive than the
authorization grant used to obtain them, as well as removing the resource server's need to
understand a wide range of authentication methods.
-->
</t>
<t>
アクセストークンはリソースサーバーのセキュリティ要件に基づいて異なるフォーマット, 構成, および利用方法を持つことができる (暗号の特性).
アクセストークンの属性と保護されたリソースにアクセスするための方法は本仕様に定めるところではなく, <xref target="RFC6750"/>のように本仕様と対になる仕様によって定義される.
<!--
Access tokens can have different formats, structures, and methods of utilization (e.g.,
cryptographic properties) based on the resource server security requirements. Access token
attributes and the methods used to access protected resources are beyond the scope of this
specification and are defined by companion specifications such as <xref target="RFC6750"/>.
-->
</t>
</section>
<section title='リフレッシュトークン'>
<!-- <section title='Refresh Token'> -->
<t>
リフレッシュトークンはアクセストークンを取得するために使用されるクレデンシャルである.
リフレッシュトークンは認可サーバーによってクライアントに対して発行され, 現在のアクセストークンが無効化されたあるいは期限切れの際に新しいアクセストークンを取得するため, または同一あるいは狭い範囲で追加のアクセストークンを取得するために利用される (アクセストークンはリソースオーナーによって認可されるよりも有効期限は短く, 権限が少なくてもよい).
リフレッシュトークンの発行はオプションであり, 認可サーバーの判断に委ねられる.
認可サーバーがリフレッシュトークンを発行する場合, アクセストークン発行 (<xref target='Figure-1' />中のDに該当) の際にリフレッシュトークンも含まれる.
<!--
Refresh tokens are credentials used to obtain access tokens. Refresh tokens are issued to
the client by the authorization server and are used to obtain a new access token when the
current access token becomes invalid or expires, or to obtain additional access tokens
with identical or narrower scope (access tokens may have a shorter lifetime and fewer
permissions than authorized by the resource owner). Issuing a refresh token is optional
at the discretion of the authorization server. If the authorization server issues a
refresh token, it is included when issuing an access token (i.e., step (D) in
<xref target='Figure-1' />).
-->
</t>
<t>
リフレッシュトークンはリソースオーナーによってクライアントに付与される認可を表す文字列である.
この文字列は通常クライアントからみるとランダムな文字列になっている.
そのトークンは認可情報を取り出すための識別子を意味してもよい.
アクセストークンとは異なり, リフレッシュトークンは認可サーバーでのみ使用されるものであり, リソースサーバーに送信されることはない.
<!--
A refresh token is a string representing the authorization granted to the client by the
resource owner. The string is usually opaque to the client. The token denotes an
identifier used to retrieve the authorization information. Unlike access tokens, refresh
tokens are intended for use only with authorization servers and are never sent to
resource servers.
-->
</t>
<figure title='Refreshing an Expired Access Token' anchor='Figure-2'>
<artwork><![CDATA[
+--------+ +---------------+
| |--(A)------- Authorization Grant --------->| |
| | | |
| |<-(B)----------- Access Token -------------| |
| | & Refresh Token | |
| | | |
| | +----------+ | |
| |--(C)---- Access Token ---->| | | |
| | | | | |
| |<-(D)- Protected Resource --| Resource | | Authorization |
| Client | | Server | | Server |
| |--(E)---- Access Token ---->| | | |
| | | | | |
| |<-(F)- Invalid Token Error -| | | |
| | +----------+ | |
| | | |
| |--(G)----------- Refresh Token ----------->| |
| | | |
| |<-(H)----------- Access Token -------------| |
+--------+ & Optional Refresh Token +---------------+
]]></artwork>
</figure>
<t>
<xref target='Figure-2' /> のフローは, 以下の各ステップからなる.
<!--
The flow illustrated in <xref target='Figure-2' /> includes the following steps:
-->
</t>
<t>
<list style='format (%C)'>
<t>
クライアントは, 認可サーバーに対して自身を認証して認可グラントを提示することによって, アクセストークンを要求する.
<!--
The client requests an access token by authenticating with the authorization server
and presenting an authorization grant.
-->
</t>
<t>
認可サーバーはクライアントを認証して認可グラントを確認し, 有効である場合はアクセストークンとリフレッシュトークンを発行する.
<!--
The authorization server authenticates the client and validates the authorization
grant, and if valid, issues an access token and a refresh token.
-->
</t>
<t>
クライアントはアクセストークンを提示してリソースサーバー上の保護されたリソースに対してリクエストを行う.
<!--
The client makes a protected resource request to the resource server by presenting
the access token.
-->
</t>
<t>
リソースサーバーはアクセストークンの正当性を確認し, 有効な場合はリクエストを処理する.
<!--
The resource server validates the access token, and if valid, serves the request.
-->
</t>
<t>
ステップ (C) と (D) はアクセストークンの有効期限が切れるまで繰り返される.
クライアントがアクセストークンの期限切れを検知した場合, ステップ (G) にスキップし, そうでなければ保護されたリソースへのリクエストを続ける.
<!--
Steps (C) and (D) repeat until the access token expires. If the client knows the
access token expired, it skips to step (G); otherwise, it makes another protected
resource request.
-->
</t>
<t>
アクセストークンが有効でないとき, リソースサーバーはエラーを返し, トークンが無効なことを伝える.
<!--
Since the access token is invalid, the resource server returns an invalid token
error.
-->
</t>
<t>
クライアントは, 認可サーバーに対して自身を認証してリフレッシュトークンを提示することによって, 新しいアクセストークンを要求する.
クライアント認証の必要条件はクライアントタイプと認可サーバーのポリシーによって異なる.
<!--
The client requests a new access token by authenticating with the authorization
server and presenting the refresh token. The client authentication requirements are
based on the client type and on the authorization server policies.
-->
</t>
<t>
認可サーバーはクライアントを認証しリフレッシュトークンの正当性を確認し, 正当であれば新たなアクセストークン (およびオプションで新たなリフレッシュトークン) を発行する.
<!--
The authorization server authenticates the client and validates the refresh token,
and if valid, issues a new access token (and, optionally, a new refresh token).
-->
</t>
</list>
</t>
<t>
<xref target='access-resource' />に述べる通り, (C), (D), (E) および (F) は本仕様の定めるところではない.
<!--
Steps (C), (D), (E), and (F) are outside the scope of this specification, as described in
<xref target='access-resource' />.
-->
</t>
</section>
<section title='TLSバージョン' anchor='tls'>
<!-- <section title='TLS Version' anchor='tls'> -->
<t>
本仕様でTransport Layer Security (TLS) を用いる場合, 将来的に実運用やセキュリティ上の脆弱性が発見されたりすることで, 適切なTLSのバージョンは変化しうる.
本仕様執筆時点では, TLSバージョン1.2 <xref target='RFC5246' /> が最新バージョンであるが, 現実にはその実装は限られており, すぐに利用可能な状態ではない可能性もある.
TLSバージョン1.0 <xref target='RFC2246' /> は最も広く実装されており, 最も広い相互運用性をもたらすであろう.
<!--
Whenever Transport Layer Security (TLS) is used by this specification, the appropriate version (or versions) of
TLS will vary over time, based on the widespread deployment and known security
vulnerabilities. At the time of this writing, TLS version 1.2 <xref target='RFC5246' />
is the most recent version, but has a very limited deployment base and might not be
readily available for implementation. TLS version 1.0 <xref target='RFC2246' /> is the
most widely deployed version and will provide the broadest interoperability.
-->
</t>
<t>
実装者は, 自身のセキュリティ要件に合わせて, TLSの他にさらにトランスポートレイヤーのセキュリティメカニズムをサポートすることも可能である.
<!--
Implementations MAY also support additional transport-layer security mechanisms
that meet their security requirements.
-->
</t>
</section>
<section title='HTTPリダイレクト'>
<!-- <section title='HTTP Redirections'> -->
<t>
本仕様では, クライアントもしくは認可サーバーがリソースオーナーのユーザーエージェントを別の場所にリダイレクトさせる際に, HTTPリダイレクトを用いる.
本仕様の例では302 HTTPステータスを用いるが, それ以外にもユーザーエージェントを通じてリダイレクトを行うことができる方法であれば, どのような手段を用いても良い.
どのような手段を用いるかは実装者に委ねる.
<!--
This specification makes extensive use of HTTP redirections, in which the client or the
authorization server directs the resource owner's user-agent to another destination. While
the examples in this specification show the use of the HTTP 302 status code, any other
method available via the user-agent to accomplish this redirection is allowed and is
considered to be an implementation detail.
-->
</t>
</section>
<section title='相互運用性'>
<!-- <section title='Interoperability'> -->
<t>
OAuth 2.0は明確に定義されたセキュリティ特性を持つリッチな認可フレームワークである.
しかしながら, リッチで多くのオプション要素を持つ高度に拡張可能なフレームワークであることから, 様々な要因によって相互運用性を損なう実装をもたらす可能性もある.
<!--
OAuth 2.0 provides a rich authorization framework with well-defined security properties.
However, as a rich and highly extensible framework with many optional components, on its
own, this specification is likely to produce a wide range of non-interoperable
implementations.
-->
</t>
<t>
加えて, 本仕様はいくつかの必須要素を部分的または完全に未定義な状態で残す.
(例: クライアント登録, 認可サーバーに求められる機能, エンドポイントのディスカバリーなど)
これらの要素が欠けているため, 相互運用性を確保するには, クライアントは各認可サーバーおよびリソースサーバーに対して個別に手動で設定される必要がある.
<!--
In addition, this specification leaves a few required components partially or fully
undefined (e.g., client registration, authorization server capabilities, endpoint
discovery). Without these components, clients must be manually and specifically
configured against a specific authorization server and resource server in order to
interoperate.
-->
</t>
<t>
将来的には, Web全体に渡る相互運用性獲得のために必要な規範的プロフィールや拡張が定義されることを期待する.
<!--
This framework was designed with the clear expectation that future work will define
prescriptive profiles and extensions necessary to achieve full web-scale
interoperability.
-->
</t>
</section>
<section title='表記規約'>
<!-- <section title='Notational Conventions'> -->
<t>
本仕様書で用いられる各キーワード「MUST (しなければならない)」, 「MUST NOT (してはならない)」, 「REQUIRED (必須である)」, 「SHALL (するものとする)」, 「SHALL NOT (しないものとする)」, 「SHOULD (すべきである)」, 「SHOULD NOT (すべきではない)」, 「RECOMMENDED (推奨される)」, 「MAY (してもよい)」, 「OPTIONAL (任意である)」は <xref target='RFC2119' /> で述べられている通りに解釈されるべきものである.
<!--
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted as
described in <xref target='RFC2119' />.
-->
</t>
<t>
本仕様書は <xref target='RFC5234' /> における Augmented Backus-Naur Form (ABNF) 表記法を使用している.
加えてURI-referenceの規則には "Uniform Resource Identifier (URI): Generic Syntax" <xref target='RFC3986' /> を用いる.
<xref target='RFC5234' />.
<!--
This specification uses the Augmented Backus-Naur Form (ABNF) notation of
<xref target='RFC5234' />.
Additionally, the rule URI-reference is included from
"Uniform Resource Identifier (URI): Generic Syntax" <xref target='RFC3986' />.
-->
</t>
<t>
特定のセキュリティ関連の用語は <xref target='RFC4949' /> で定義された意味で理解されるべきである.
これらの用語には, 「攻撃 (attack)」, 「認証 (authentication)」, 「認可 (authorization)」, 「証明書 (certificate)」, 「機密性 (confidentiality)」, 「クレデンシャル (credential)」, 「暗号化 (encryption)」, 「アイデンティティ (identity)」, 「記号 (sign)」, 「署名 (signature)」, 「信頼 (trust)」, 「正当性の確認 (validate)」, 「検証 (verify)」などがあるが, これらだけに限定はされない.
<!--
Certain security-related terms are to be understood in the sense defined in
<xref target='RFC4949' />. These terms include, but are not limited to, "attack",
"authentication", "authorization", "certificate", "confidentiality", "credential",
"encryption", "identity", "sign", "signature", "trust", "validate", and "verify".
-->
</t>
<t>
特に記載が無い限り, すべてのプロトコルパラメーター名と値は, 大文字・小文字を区別する.
<!--
Unless otherwise noted, all the protocol parameter names and values are case sensitive.
-->
</t>
</section>
</section>
<section title='クライアント登録'>
<!-- <section title='Client Registration'> -->
<t>
OAuth プロトコルフローを開始する前に, クライアントは認可サーバーに登録する.
クライアントが認可サーバーに登録する方法は本仕様での範囲外であるが, 通常エンドユーザーとの対話を伴うHTML登録フォームを持つ.
<!--
Before initiating the protocol, the client registers with the authorization server. The
means through which the client registers with the authorization server are beyond the
scope of this specification but typically involve end-user interaction with an HTML
registration form.
-->
</t>
<t>
クライアントの登録は, クライアントと認可サーバー間の直接的なやりとりを必須としない.
認可サーバーでサポートされている場合, 必要なクライアントのプロパティー (例えばリダイレクトURIやクライアントタイプ) を取得し信頼を確立する他の方法を用いて登録を行うことができる.
例えば, クライアント自身もしくはサードパーティーが発行したアサーションを使用したり, 認可サーバーが信頼できるチャネルを使用してクライアントのディスカバリーを行うことで, 登録を行うことができる.
<!--
Client registration does not require a direct interaction between the client and the
authorization server. When supported by the authorization server, registration can rely
on other means for establishing trust and obtaining the required client properties (e.g.,
redirection URI, client type). For example, registration can be accomplished using a
self-issued or third-party-issued assertion, or by the authorization server performing
client discovery using a trusted channel.
-->
</t>
<t>
クライアントを登録する場合, クライアント開発者は以下を満たすものとする (SHALL).
<!--
When registering a client, the client developer SHALL:
-->
</t>
<t>
<list style='symbols'>
<t>
<xref target='client-types' /> で説明されているようなクライアントタイプを指定し,
<!--
specify the client type as described in <xref target='client-types' />,
-->
</t>
<t>
<xref target='redirect-uri' /> で説明されているようなリダイレクトURIを提供し,
<!--
provide its client redirection URIs as described in
<xref target='redirect-uri' />, and
-->
</t>
<t>
認可サーバーが要求するその他の情報 (例えばアプリケーション名, Webサイト, 説明, ロゴイメージ, 利用規則など) を提供する.
<!--
include any other information required by the authorization server (e.g., application
name, website, description, logo image, the acceptance of legal terms).
-->
</t>
</list>
</t>
<section title='クライアントタイプ' anchor='client-types'>
<!-- <section title='Client Types' anchor='client-types'> -->
<t>
認可サーバーと安全に認証する能力 (クライアントクレデンシャルの機密性を維持できる能力など) に基づいて, OAuthは二つのクライアントタイプを定義している.
<!--
OAuth defines two client types, based on their ability to authenticate securely with the
authorization server (i.e., ability to maintain the confidentiality of their client
credentials):
-->
</t>
<t>
<list style='hanging'>
<t hangText='コンフィデンシャル (confidential)'>
<vspace />
クレデンシャルの機密性を維持することができるクライアント (例えば, クライアントクレデンシャルへのアクセスが制限されたセキュアサーバー上に実装されたクライアント), または他の手段を使用したセキュアなクライアント認証ができるクライアント.
<!--
Clients capable of maintaining the confidentiality of their credentials (e.g.,
client implemented on a secure server with restricted access to the client
credentials), or capable of secure client authentication using other means.
-->
</t>
<t hangText='パブリック (public)'>
<vspace />
(例えば, インストールされたネイティブアプリケーションやブラウザベースのWebアプリケーションなど, リソースオーナーのデバイス上で実行されるクライアントのように) クライアントクレデンシャルの機密性を維持することができず, かつ他の手段を使用したセキュアなクライアント認証もできないクライアント.
<!--
Clients incapable of maintaining the confidentiality of their credentials (e.g.,
clients executing on the device used by the resource owner, such as an installed
native application or a web browser-based application), and incapable of secure
client authentication via any other means.
-->
</t>
</list>
</t>
<t>
クライアントタイプは, 認可サーバーが定めるセキュア認証の定義とクライアントクレデンシャルの許容公開レベルに基づいて決定される.
認可サーバーは, クライアントタイプに関して憶測に頼るべきではない (SHOULD NOT).
<!--
The client type designation is based on the authorization server's definition of secure
authentication and its acceptable exposure levels of client credentials. The
authorization server SHOULD NOT make assumptions about the client type.
-->
</t>
<t>
クライアントによっては, 分散された複数のコンポーネントによって実装され, それぞれのコンポーネントが異なるクライアントタイプおよびセキュリティ特性を持つ場合もある.
(例: コンフィデンシャルなサーバーベースコンポーネントとパブリックなブラウザベースのコンポーネントからなるクライアントなど)
認可サーバーがこのようなクライアントをサポートしない, もしくはクライアント登録に関して何らかのガイダンスを提供していない場合, クライアントはそれぞれのコンポーネントを別のクライアントとして登録すべきである (SHOULD).
<!--
A client may be implemented as a distributed set of components, each with a different
client type and security context (e.g., a distributed client with both a confidential
server-based component and a public browser-based component). If the authorization server
does not provide support for such clients or does not provide guidance with regard to
their registration, the client SHOULD register each component as a separate client.
-->
</t>
<t>
本仕様は以下のようなクライアントプロファイルを考慮して設計されている,
<!--
This specification has been designed around the following client profiles:
-->
</t>
<t>
<list style='hanging'>
<t hangText='Webアプリケーション (web application)'>
<vspace />
Webアプリケーションは, Webサーバー上で実行されているコンフィデンシャルクライアントである.
リソースオーナーは, リソースオーナーのデバイス上のユーザーエージェントにレンダリングされたHTMLユーザーインターフェイスを通してクライアントにアクセスする.
クライアントに発行されたアクセストークンと同様にクライアントクレデンシャルはWebサーバー上に保存され, リソースオーナーによって公開されたりアクセス可能な状態にならない.
<!--
A web application is a confidential client running on a web server. Resource owners
access the client via an HTML user interface rendered in a user-agent on the device
used by the resource owner. The client credentials as well as any access token issued
to the client are stored on the web server and are not exposed to or accessible by
the resource owner.
-->
</t>
<t hangText='ユーザーエージェントベースアプリケーション (user-agent-based application)'>
<vspace />
ユーザーエージェントベースアプリケーションは, クライアントコードがWebサーバーからダウンロードされリソースオーナーのデバイス上のユーザーエージェント (例えばWebブラウザ) 内で実行されるパブリッククライアントである.
プロトコルのデータとクレデンシャルはリソースオーナーに簡単にアクセス (かつ多くの場合は閲覧) できる.
このようなアプリケーションはユーザーエージェント内にあるので, 認可を要求する時ユーザーエージェントの能力をシームレスに使用することができる.
<!--
A user-agent-based application is a public client in which the client code is
downloaded from a web server and executes within a user-agent (e.g., web browser) on
the device used by the resource owner. Protocol data and credentials are easily
accessible (and often visible) to the resource owner. Since such applications reside
within the user-agent, they can make seamless use of the user-agent capabilities when
requesting authorization.
-->
</t>
<t hangText='ネイティブアプリケーション (native application)'>
<vspace />
ネイティブアプリケーションは, リソースオーナーのデバイス上にインストールされ実行されるパブリッククライアントである.
リソースオーナーはプロトコルのデータとクレデンシャルにアクセス可能である.
アプリケーションに含まれるいかなるクライアント認証用のクレデンシャルも, 抽出可能であると想定される.
一方, アクセストークンやリフレッシュトークンといった動的に発行されたクレデンシャルは許容できるレベルの保護が得られる.
少なくとも, これらのクレデンシャルはアプリケーションと対話できる悪意のあるサーバーから保護されている.
プラットフォームによっては, これらのクレデンシャルは同じデバイス上に存在する他のアプリケーションからも保護されているであろう.
<!--
A native application is a public client installed and executed on the device used by
the resource owner. Protocol data and credentials are accessible to the resource
owner. It is assumed that any client authentication credentials included in the
application can be extracted. On the other hand, dynamically issued credentials such
as access tokens or refresh tokens can receive an acceptable level of protection. At a
minimum, these credentials are protected from hostile servers with which the
application may interact. On some platforms, these credentials might be protected
from other applications residing on the same device.
-->
</t>
</list>
</t>
</section>
<section title='クライアント識別子' anchor='client-identifier'>
<!-- <section title='Client Identifier' anchor='client-identifier'> -->
<t>
認可サーバーは登録済みのクライアントにクライアント識別子 (クライアントが提供した登録情報を表すユニーク文字列) を発行する.
クライアント識別子はシークレットと異なりリソースオーナーに露出されるため, その情報のみでクライアント認証を行ってはならない (MUST NOT).
クライアント識別子は認可サーバーごとにユニークである.
<!--
The authorization server issues the registered client a client identifier -- a unique
string representing the registration information provided by the client. The client
identifier is not a secret; it is exposed to the resource owner and MUST NOT be used
alone for client authentication. The client identifier is unique to the authorization
server.
-->
</t>
<t>
クライアント識別子の文字列長は本仕様の定めるところではない.
クライアントは識別子のサイズに関して憶測を持つべきではない.
認可サーバーは, 発行するいかなる識別子に関しても, そのサイズに関する情報を提供すべきである (SHOULD).
<!--
The client identifier string size is left undefined by this specification. The client
should avoid making assumptions about the identifier size. The authorization server
SHOULD document the size of any identifier it issues.
-->
</t>
</section>
<section title='クライアント認証' anchor='client-authentication'>
<!-- <section title='Client Authentication' anchor='client-authentication'> -->
<t>
クライアントタイプがコンフィデンシャルである場合, クライアントと認可サーバーは, 認可サーバーのセキュリティ要求を満たすクライアント認証方式を確立する.
認可サーバーは自身のセキュリティ要求さえ満たせば, どのような方式のクライアント認証に対応してもよい (MAY).
<!--
If the client type is confidential, the client and authorization server establish a client
authentication method suitable for the security requirements of the authorization server.
The authorization server MAY accept any form of client authentication meeting its
security requirements.
-->
</t>
<t>
コンフィデンシャルクライアントには, 通常は認可サーバーでの認証に使われるクライアントクレデンシャルのセットが発行 (もしくは確立) される.
例) パスワード, 公開鍵/秘密鍵のペア
<!--
Confidential clients are typically issued (or establish) a set of client credentials used for
authenticating with the authorization server (e.g., password, public/private key pair).
-->
</t>
<t>
認可サーバーはパブリッククライアントとクライアント認証によって信頼確立してもよい (MAY).
しかし, 認可サーバーはクライアントを識別する目的で, パブリッククライアントを信頼してはならない (MUST NOT).
<!--
The authorization server MAY establish a client authentication method with public clients.
However, the authorization server MUST NOT rely on public client authentication for the
purpose of identifying the client.
-->
</t>
<t>
クライアントは1回のリクエストにおいて二つ以上の認証方式を利用してはならない (MUST NOT).
<!--
The client MUST NOT use more than one authentication method in each request.
-->