-
Notifications
You must be signed in to change notification settings - Fork 1
/
openid-connect-basic-1_0.ja.xml
executable file
·4476 lines (4104 loc) · 212 KB
/
openid-connect-basic-1_0.ja.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"?>
<?xml-stylesheet type='text/xsl' href='http://xml2rfc.tools.ietf.org/authoring/rfc2629.xslt' ?>
<!DOCTYPE rfc PUBLIC "-//IETF//DTD RFC 2629//EN"
"http://xml2rfc.tools.ietf.org/authoring/rfc2629.dtd">
<!--
NOTE: This XML file is input used to produce the authoritative copy of an
OpenID Foundation specification. The authoritative copy is the HTML output.
This XML source file is not authoritative. The statement ipr="none" is
present only to satisfy the document compilation tool and is not indicative
of the IPR status of this specification. The IPR for this specification is
described in the "Notices" section. This is a public OpenID Foundation
document and not a private document, as the private="..." declaration could
be taken to indicate.
-->
<rfc category="std" docName="openid-connect-basic-1_0" ipr="none">
<?rfc toc="yes" ?>
<?rfc tocdepth="5" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc strict="yes" ?>
<?rfc iprnotified="no" ?>
<?rfc private="Draft" ?>
<front>
<title abbrev="OpenID Connect Basic Client Guide 1.0">OpenID Connect
Basic Client Implementer's Guide 1.0 - draft 37</title>
<author fullname="Nat Sakimura" initials="N." surname="Sakimura">
<organization abbrev="NRI">Nomura Research Institute, Ltd.</organization>
<address>
<email>[email protected]</email>
<uri>http://nat.sakimura.org/</uri>
</address>
</author>
<author fullname="John Bradley" initials="J." surname="Bradley">
<organization abbrev="Ping Identity">Ping Identity</organization>
<address>
<email>[email protected]</email>
<uri>http://www.thread-safe.com/</uri>
</address>
</author>
<author fullname="Michael B. Jones" initials="M.B." surname="Jones">
<organization abbrev="Microsoft">Microsoft</organization>
<address>
<email>[email protected]</email>
<uri>http://self-issued.info/</uri>
</address>
</author>
<author fullname="Breno de Medeiros" initials="B." surname="de Medeiros">
<organization abbrev="Google">Google</organization>
<address>
<email>[email protected]</email>
<uri>http://stackoverflow.com/users/311376/breno</uri>
</address>
</author>
<author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
<organization abbrev="Salesforce">Salesforce</organization>
<address>
<email>[email protected]</email>
<uri>https://twitter.com/cmort</uri>
</address>
</author>
<date day="3" month="August" year="2015" />
<workgroup>OpenID Connect Working Group</workgroup>
<abstract>
<t>
OpenID Connect 1.0 は, OAuth 2.0 プロトコルの上にシンプルなアイデンティティレイヤーを付与したものである.
このプロトコルは, Client が Authorization Server の認証結果に基づいて End-User のアイデンティティを検証することを可能にする.
また同時に End-User の必要最低限のプロフィール情報を, 相互運用可能かつ RESTful な形で取得することも可能にする.
</t>
<!--
<t>OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0
protocol. It enables Clients to verify the identity of the End-User based
on the authentication performed by an Authorization Server, as well as to
obtain basic profile information about the End-User in an interoperable and
REST-like manner.</t>
-->
<t>
本ドキュメント OpenID Connect Basic Client Implementer's Guide 1.0 は, OpenID Connect Core 1.0 仕様のサブセットであり, OAuth Authorization Code Flow を利用して Web ベースの Relying Party を実装する際に読みやすいように構成されている.
本ドキュメントは Core 仕様と重複したコンテンツを含んでいるが, それは実装者が本ドキュメントを読むだけで OAuth Authorization Code Flow を利用した Relying Party を実装できるよう意図したものである.
</t>
<!--
<t>
This OpenID Connect Basic Client Implementer's Guide 1.0 contains a subset of the
OpenID Connect Core 1.0 specification
that is designed to be easy to read and implement for basic
Web-based Relying Parties using the
OAuth Authorization Code Flow.
This document intentionally duplicates content from the Core
specification to provide a self-contained implementer's guide for basic
Web-based Relying Parties using the
OAuth Authorization Code Flow.
</t>
-->
<t>
OpenID Provider および Web ベース以外のアプリケーションの実装者は, Core 仕様を参照のこと.
</t>
<!--
<t>
OpenID Providers and non-Web-based applications
should instead consult the Core specification.
</t>
-->
</abstract>
</front>
<middle>
<section anchor="Introduction" title="Introduction">
<t>
本ドキュメント OpenID Connect Basic Client Implementer's Guide 1.0 は, <xref target="OpenID.Core">OpenID Connect Core 1.0</xref> 仕様のサブセットであり, OAuth 2.0 <xref target="RFC6749"/> Authorization Code Flow を利用して Web ベースの Relying Party を実装する際に読みやすいように構成されている.
本ドキュメントは Core 仕様と重複したコンテンツを含んでいるが, それは実装者が本ドキュメントを読むだけで OAuth Authorization Code Flow を利用した Relying Party を実装できるよう意図したものである.
本実装者ガイドと OpenID Connect Core 仕様の間に齟齬がある場合は, Core 仕様を優先する.
</t>
<!--
<t>
This OpenID Connect Basic Client Implementer's Guide 1.0 contains a subset of the
<xref target="OpenID.Core">OpenID Connect Core 1.0</xref> specification
that is designed to be easy to read and implement for basic
Web-based Relying Parties using the
OAuth 2.0 <xref target="RFC6749"/> Authorization Code Flow.
This document intentionally duplicates content from the Core
specification to provide a self-contained implementer's guide for basic
Web-based Relying Parties using the
OAuth Authorization Code Flow.
Should there be any conflicts between the contents of this implementer's guide
and the OpenID Connect Core specification, the latter takes precedence.
</t>
-->
<t>
OAuth Implicit Flow を利用する Web ベースの Relying Party を実装する場合には, <xref target="OpenID.Implicit">OpenID Connect Implicit Client Implementer's Guide 1.0</xref> を参照のこと.
OpenID Provider および Web ベース以外のアプリケーションの実装者は, Core 仕様を参照のこと.
本ガイドは OpenID Provider および Web ベース以外のアプリケーションに関する Implimentation Consideration および Security Considerations を省略している.
</t>
<!--
<t>
See the
<xref target="OpenID.Implicit">OpenID Connect Implicit Client Implementer's Guide 1.0</xref>
for a related guide for basic
Web-based Relying Parties using the
OAuth Implicit Flow.
OpenID Providers and non-Web-based applications
should instead consult the Core specification.
This guide omits implementation and security
considerations for OpenID Providers and non-Web-based applications.
</t>
-->
<t>
OpenID Connect のベースとなる <xref target="RFC6749">OAuth 2.0 Authorization Framework</xref> と <xref target="RFC6750">OAuth 2.0 Bearer Token Usage</xref> は, 3rd-party アプリケーションが HTTP リソースへの限定的アクセス権を取得および行使するための全般的フレームワークを提供している.
これらはリソースアクセスのための Access Token を取得および行使する方法は定義するが, アイデンティティ情報を提供するための標準的手段は定義しない.
とりわけ, OAuth 2.0 のプロファイリングを行わずに End-User の認証に必要な情報を提供することは不可能である.
本ドキュメント読者は上記2つの仕様を理解していることが期待される.
</t>
<!--
<t>
As background,
the <xref target="RFC6749">OAuth 2.0 Authorization Framework</xref>
and <xref target="RFC6750">OAuth 2.0 Bearer Token Usage</xref>
specifications provide a general framework for third-party applications
to obtain and use limited access to HTTP resources. They define
mechanisms to obtain and use Access Tokens to access resources but
do not define standard methods to provide identity information.
Notably, without profiling OAuth 2.0, it is incapable of
providing information about the authentication of an End-User.
Readers are expected to be familiar with these specifications.
</t>
-->
<t>
OpenID Connect は OAuth 2.0 認可プロセスを拡張し, 認証目的で利用できるようにする.
本拡張を利用する場合, Client は <spanx style="verb">openid</spanx> scope を指定して Authorization Request を送信する.
本拡張を利用した Authorization Request は, Authentication Request と呼ばれる.
</t>
<!--
<t>
OpenID Connect implements authentication as an extension to the
OAuth 2.0 authorization process.
Use of this extension is requested by Clients by including
the <spanx style="verb">openid</spanx> scope value
in the Authorization Request.
An Authorization Request using these extensions
is called an Authentication Request.
</t>
-->
<t>
認証結果は ID Token (<xref target="IDToken"/> 参照) と呼ばれる <xref target="JWT">JSON Web Token (JWT)</xref> として返される.
OpenID Connect をサポートする OAuth 2.0 Authentication Server は, OpenID Provider (OP) とも呼ばれる.
OpenID Connect を利用する OAuth 2.0 Client は Relying Party (RP) とも呼ばれる.
</t>
<!--
<t>
Information about the authentication performed is returned
in a <xref target="JWT">JSON Web Token (JWT)</xref>
called an ID Token (see <xref target="IDToken"/>).
OAuth 2.0 Authentication Servers implementing OpenID Connect
are also referred to as OpenID Providers (OPs).
OAuth 2.0 Clients using OpenID Connect
are also referred to as Relying Parties (RPs).
</t>
-->
<t>
本ドキュメントでは, Relying Party は Authorization Endpoint, Token Endpoint 等を含む OpenID Provider の設定情報を既に得ているものとする.
これらの情報は通常 <xref target="OpenID.Discovery">OpenID Connect Discovery 1.0</xref> にある Discovery を通じて得られるが, その他の手段で得られることもある.
</t>
<!--
<t>
This document assumes that the Relying Party has already obtained
configuration information about the OpenID Provider, including its
Authorization Endpoint and Token Endpoint locations.
This information is normally obtained via Discovery,
as described in <xref target="OpenID.Discovery">OpenID Connect Discovery 1.0</xref>,
or may be obtained via other mechanisms.
</t>
-->
<t>
また同様に, Relying Party は OpenID Provider 利用に必要なクレデンシャルを取得し, OP 利用に必要な情報を登録しているものとする.
これの処理は通常 <xref target="OpenID.Registration">OpenID Connect Dynamic Client Registration 1.0</xref> にある Dynamic Registration を通じて行われるが, その他の手段で行われることもある.
</t>
<!--
<t>
Likewise, this document assumes that the Relying Party has already obtained
sufficient credentials and provided information needed to use the OpenID Provider.
This is normally done via Dynamic Registration,
as described in
<xref target="OpenID.Registration">OpenID Connect Dynamic Client Registration 1.0</xref>,
or may be obtained via other mechanisms.
</t>
-->
<section anchor="rnc" title="Requirements Notation and Conventions">
<t>
本ドキュメント中の "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" の意味するところは, <xref target="RFC2119"/> の定める通りである.
</t>
<!--
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref
target="RFC2119"/>.</t>
-->
<t>
本ドキュメントの .txt バージョンでは, 表記そのままで利用される値についてはクオートで囲んでいる.
このような値をプロトコルメッセージ中で用いる場合, クオートを含めてはならない (MUST NOT).
HTML バージョンではクオートで囲う代わりに <spanx style="verb">this fixed-width font</spanx> を用いる.
</t>
<!--
<t>
In the .txt version of this document,
values are quoted to indicate that they are to be taken literally.
When using these values in protocol messages,
the quotes MUST NOT be used as part of the value.
In the HTML version of this document,
values to be taken literally are indicated by
the use of <spanx style="verb">this fixed-width font</spanx>.
</t>
-->
<t>
<xref target="JWS">JSON Web Signature (JWS)</xref> を用いる場合, シリアライゼーションには JWS Compact Serialization を用いる.
JWS JSON Serialization は利用しない.
</t>
<!--
<t>
All uses of <xref target="JWS">JSON Web Signature (JWS)</xref>
data structures in this document utilize
the JWS Compact Serialization;
the JWS JSON Serialization is not used.
</t>
-->
<t>
本ドキュメント中の RFC 2119 に定義されるキーワードが OpenID Provider の挙動に言及する場合, それはあくまで Client 実装者が OpenID Provider の挙動を理解しやすいように用いられているに過ぎない.
</t>
<!--
<t>
When the RFC 2119 language applies to the behavior of OpenID Providers,
it is in this document for explanatory value to help Client
implementers understand the expected behavior of OpenID Providers.
</t>
-->
</section>
<section anchor="Terminology" title="Terminology">
<t>
本ドキュメントでは,
<xref target="RFC6749">OAuth 2.0</xref> で定義された "Access Token", "Authorization Code",
"Authorization Endpoint", "Authorization Grant", "Authorization Server",
"Client", "Client Authentication", "Client Identifier", "Client Secret",
"Grant Type", "Protected Resource", "Redirection URI", "Refresh Token",
"Resource Owner", "Resource Server", "Response Type" および "Token Endpoint",
<xref target="JWT">JSON Web Token (JWT)</xref> で定義された "Claim Name", "Claim Value", "JSON Web Token (JWT)" および "JWT Claims Set",
<xref target="JWS">JSON Web Signature (JWS)</xref> で定義された "Header Parameter" および "JOSE Header",
<xref target="RFC7230">RFC 7230</xref> で定義された "User Agent" という用語を用いる.
</t>
<!--
<t>
This document uses the terms "Access Token", "Authorization Code",
"Authorization Endpoint", "Authorization Grant", "Authorization Server",
"Client", "Client Authentication", "Client Identifier", "Client Secret",
"Grant Type", "Protected Resource", "Redirection URI", "Refresh Token",
"Resource Owner", "Resource Server", "Response Type", and "Token Endpoint"
defined by <xref target="RFC6749">OAuth 2.0</xref>,
the terms "Claim Name", "Claim Value", "JSON Web Token (JWT)",
and "JWT Claims Set"
defined by <xref target="JWT">JSON Web Token (JWT)</xref>,
the terms "Header Parameter" and "JOSE Header"
defined by <xref target="JWS">JSON Web Signature (JWS)</xref>,
and the term "User Agent" defined by <xref target="RFC7230">RFC 7230</xref>.
</t>
-->
<t>
本ドキュメントはその他に以下の用語を用いる.
<!--
This document also defines the following terms:
-->
<list style="hanging">
<t hangText="Authentication">
<vspace/>
提示された Identity と実際の Entity が紐づいているという十分な確信を得るためのプロセス.
<!--
Process used to achieve sufficient confidence in the binding
between the Entity and the presented Identity.
-->
</t>
<t hangText="Authentication Request">
<vspace/>
OpenID Connect が定める拡張パラメータおよびスコープを利用して, Authorization Server に End-User の認証を要求する OAuth 2.0 Authorization Request.
このとき Authorization Server は OpenID Connect Provider, Client は OpenID Connect Relying Party となる.
<!--
OAuth 2.0 Authorization Request using extension parameters and scopes
defined by OpenID Connect to request that the End-User be authenticated
by the Authorization Server, which is an OpenID Connect Provider,
to the Client, which is an OpenID Connect Relying Party.
-->
</t>
<t hangText="Claim">
<vspace/>
Entity に関する情報の部分集合.
<!--
Piece of information asserted about an Entity.
-->
</t>
<t hangText="Claims Provider">
<vspace/>
Entity の Claim を返すサーバー.
<!--
Server that can return Claims about an Entity.
-->
</t>
<t hangText="End-User">
<vspace/>
一連のフローに参加する人間.
<!--
Human participant.
-->
</t>
<t hangText="Entity">
<vspace/>
あるコンテキストの中で識別される, 他と独立した個.
End-User は Entity の一例.
<!--
Something that has a separate and distinct existence and that can be
identified in a context. An End-User is one example of an Entity.
-->
</t>
<t hangText="ID Token">
<vspace/>
Authentication イベントに関する Claim を含む <xref target="JWT">JSON Web Token (JWT)</xref>.
その他の Claim を含むこともある (MAY).
<!--
<xref target="JWT">JSON Web Token (JWT)</xref> that contains Claims about the Authentication event.
It MAY contain other Claims.
-->
</t>
<t hangText="Identifier">
<vspace/>
あるコンテキスト中で Entity をユニークに特徴づける値.
<!--
Value that uniquely characterizes an Entity in a specific context.
-->
</t>
<t hangText="Issuer">
<vspace/>
Claim を発行する Entity.
<!--
Entity that issues a set of Claims.
-->
</t>
<t hangText="Issuer Identifier">
<vspace/>
検証可能な Issuer の識別子.
Issuer Identifier は, 大文字小文字を区別する URL である.
この URL は <spanx style="verb">https</spanx> スキーム, ホスト, そして任意でポート番号およびパス要素からなり, クエリーとフラグメント要素は含まない.
<!--
Verifiable Identifier for an Issuer.
An Issuer Identifier is a case-sensitive URL
using the <spanx style="verb">https</spanx> scheme that
contains scheme, host, and optionally, port number and path
components and no query or fragment components.
-->
</t>
<t hangText="OpenID Provider (OP)">
<vspace/>
End-User を Authenticate できる OAuth 2.0 Authorization Server.
End-User の Authentication イベントに関する Claim を Relying Party に提供する.
<!--
OAuth 2.0 Authorization Server that is capable of
Authenticating the End-User and
providing Claims to a Relying Party
about the Authentication event and the End-User.
-->
</t>
<t hangText="Pairwise Pseudonymous Identifier (PPID)">
<vspace/>
ある Relying Party に対してのみ, ある Entity の識別子として提供される値.
他の Relying Party には, 当該 PPID を当該 Entity と関連づけることはできない.
<!--
Identifier that identifies the Entity to a Relying Party that cannot be correlated
with the Entity's PPID at another Relying Party.
-->
</t>
<t hangText="Personally Identifiable Information (PII)">
<vspace/>
特定の人物に紐づき, 実際の人物の識別に用いることができる情報.
もしくは特定の人物に直接および間接的にリンクされる可能性のある情報.
<!--
Information that (a) can be used to identify the natural person
to whom such information relates, or
(b) is or might be directly or indirectly linked to a
natural person to whom such information relates.
-->
</t>
<t hangText="Relying Party (RP)">
<vspace/>
OpenID Provider に End-User Authentication と Claim を要求する OAuth 2.0 Client.
<!--
OAuth 2.0 Client application requiring End-User Authentication
and Claims from an OpenID Provider.
-->
</t>
<t hangText="Subject Identifier">
<vspace/>
Issuer にとって局地的にユニークで再利用されることのない End-User 識別子.
この値は Client に利用されることを想定する.
<!--
Locally unique and never
reassigned identifier within the Issuer for the End-User,
which is intended to be consumed by the Client.
-->
</t>
<t hangText="UserInfo Endpoint">
<vspace/>
Protected Resource のひとつ.
Access Token を提示する Client に対して, Authorization Grant に従って End-User に関する情報を提供する.
<!--
Protected Resource that, when presented with an Access Token by the Client,
returns authorized information about the End-User represented by the corresponding
Authorization Grant.
-->
</t>
<t hangText="Validation">
<vspace/>
あるものごとの健全性および正当性を確立するためのプロセス.
<!--
Process intended to establish the soundness or correctness of a construct.
-->
</t>
<t hangText="Verification">
<vspace/>
ある事実や値の正確さを検査もしくは証明するためのプロセス.
<!--
Process intended to test or prove the truth or accuracy of a fact or value.
-->
</t>
<t hangText="Voluntary Claim">
<vspace/>
Client が End-User が要求するあるタスクを実行する際に, 有用ではあるが Essential ではないとを Client が指定した Claim.
<!--
Claim specified by the Client as being useful but not Essential
for the specific task requested by the End-User.
-->
</t>
</list>
</t>
<t>
IMPORTANT NOTE TO READERS:
上記の用語定義は本ドキュメントが定めるところであり, 本ドキュメントの実装においてはこれらの定義に従うこと.
"Issuer Identifier" をはじめとして, 本ドキュメントで大文字表記されている用語はすべて上記の定義に従う.
本ドキュメントの読者は必ずこれらの用語定義に従うこと.
</t>
<!--
<t>
IMPORTANT NOTE TO READERS: The terminology definitions in
this section are a normative portion of this document,
imposing requirements upon implementations. All the
capitalized words in the text of this document, such as
"Issuer Identifier", reference these defined terms.
Whenever the reader encounters them, their definitions
found in this section must be followed.
</t>
-->
</section>
<section anchor="Overview" title="Overview">
<t>
OpenID Connect プロトコルは, おおまかに言って以下のステップに従う.
</t>
<!--
<t>The OpenID Connect protocol, in abstract, follows the following
steps.</t>
-->
<t>
<list style="numbers">
<t>
RP (Client) が OpenID Provider (OP) にリクエストを送る.
</t>
<!--
<t>The RP (Client) sends a request to the OpenID Provider (OP).</t>
-->
<t>
OP は End-User を認証し, 認可を受ける.
</t>
<!--
<t>The OP authenticates the End-User and obtains authorization.</t>
-->
<t>
OP は ID Token および (通常は) Access Token を返す.
</t>
<!--
<t>The OP responds with an ID Token and usually an Access Token.</t>
-->
<t>
RP は Access Token を添えて UserInfo Endpoint にリクエストを送る.
</t>
<!--
<t>The RP can send a request with the Access Token to the UserInfo Endpoint.</t>
-->
<t>
UserInfo Endpoint は End-User の Claim を返す.
</t>
<!--
<t>The UserInfo Endpoint returns Claims about the End-User.</t>
-->
</list>
</t>
<figure>
<preamble>
これら一連のステップを以下に図示する.
<!--
These steps are illustrated in the following diagram:
-->
</preamble>
<artwork><![CDATA[
+--------+ +--------+
| | | |
| |---------(1) AuthN Request-------->| |
| | | |
| | +--------+ | |
| | | | | |
| | | End- |<--(2) AuthN & AuthZ-->| |
| | | User | | |
| RP | | | | OP |
| | +--------+ | |
| | | |
| |<--------(3) AuthN Response--------| |
| | | |
| |---------(4) UserInfo Request----->| |
| | | |
| |<--------(5) UserInfo Response-----| |
| | | |
+--------+ +--------+
]]></artwork>
</figure>
</section>
</section>
<section anchor="ProtocolElements" title="Protocol Elements">
<t>
Authentication Request は Authorization Code Flow, Implicit Flow および Hybrid Flow のいずれかのフローに従う.
Authorization Code Flow は, Authorization Server と Client 自身との間でセキュアに Client Secret を管理できる Client 向けのフローである.
それが不可能な Client は Implicit Flow を用いる.
しかしながら, Client Secret をセキュアに保持できないにも関わらず, Refresh Token 取得のためにしばしば Native アプリケーションやその他の Client が Authorization Code flow を利用することもある.
Hybrid Flow は Authorization Code Flow と Implicit Flow をあわせたものであり, Client が Authorization Server から直接 ID Token およびオプションで Access Token を受け取ることでレイテンシ低下を防ぎつつも, 後から Client が Token Endpoint にアクセスして各種トークン (特に Refresh Token) を取得できるようにするものである.
</t>
<!--
<t>
Authentication Requests can follow one of three paths:
the Authorization Code Flow,
the Implicit Flow, or
the Hybrid Flow.
The Authorization Code Flow is
intended for Clients that can securely maintain a Client Secret between
themselves and the Authorization Server, whereas the Implicit Flow is
intended for Clients that cannot.
However, the Authorization Code flow is sometimes also used by Native applications
and other Clients in order to be able to obtain a Refresh Token,
even when they cannot ensure the secrecy of the Client Secret value.
The Hybrid Flow combines aspects of the Authorization Code Flow
and the Implicit Flow.
It enables Clients to obtain an ID Token and optionally an Access Token with only
one round trip to the Authorization Server, possibly minimizing latency,
while still enabling Clients to later get tokens from the Token Endpoint
-- especially a Refresh Token.
</t>
-->
<t>
このドキュメントは Code Flow を利用する Client に対して必要十分な情報のみを提供する.
</t>
<!--
<t>
This document only provides information that is sufficient for
basic Clients using the Code Flow.
</t>
-->
<section anchor="CodeFlow" title="Code Flow">
<t>
Code Flow は以下のステップからなる.
</t>
<!--
<t>The Code Flow consists of the following steps:</t>
-->
<t>
<list style="numbers">
<t>
Client は必要なリクエストパラメータを含んだ Authentication Request を構築する.
</t>
<!--
<t>Client prepares an Authentication Request containing the desired
request parameters.</t>
-->
<t>
Client は Authorization Server にリクエストを送信する.
</t>
<!--
<t>Client sends the request to the Authorization Server.</t>
-->
<t>
Authorization Server は End-User を認証する.
</t>
<!--
<t>Authorization Server authenticates the End-User.</t>
-->
<t>
Authorization Server は End-User の Consent/Authorization を取得する.
</t>
<!--
<t>Authorization Server obtains End-User Consent/Authorization.</t>
-->
<t>
Authorization Server は End-User を <spanx style="verb">code</spanx> とともに Client に戻す.
</t>
<!--
<t>Authorization Server sends the End-User back to the Client with
<spanx style="verb">code</spanx>.</t>
-->
<t>
Client は <spanx style="verb">code</spanx> を Token Endpoint に送信し, Access Token と ID Token を受け取る.
</t>
<!--
<t>Client sends the <spanx style="verb">code</spanx> to the
Token Endpoint to receive an Access Token and ID Token in the response.</t>
-->
<t>
Client はそれらのトークンを検証し, End-User の Subject Identifier を取得する.
</t>
<!--
<t>Client validates the tokens and retrieves the End-User's
Subject Identifier.</t>
-->
</list>
</t>
<section anchor="AuthenticationRequest" title="Client Prepares Authentication Request">
<t>
RP が End-User を Authenticate したい, もしくは End-User が既に Authenticated であるかどうか知りたい場合, Client は Authorization Endpoint に Authentication Request を送る.
</t>
<!--
<t>
When the RP wishes to Authenticate the End-User
or determine whether the End-User is already Authenticated,
the Client prepares an Authentication Request
to be sent to the Authorization Endpoint.
</t>
-->
<t>
Authorization Endpoint との間の通信は TLS を利用しなければならない (MUST).
TLS の詳細については <xref target="TLSRequirements"/> を参照のこと.
</t>
<!--
<t>
Communication with the Authorization Endpoint MUST utilize TLS.
See <xref target="TLSRequirements"/> for more information on using TLS.
</t>
-->
<t>
Client は <xref target="RFC7231">RFC 7231</xref> に定義される HTTP <spanx style="verb">GET</spanx> もしくは HTTP <spanx style="verb">POST</spanx> を利用できる (MAY).
</t>
<!--
<t>Clients MAY construct the request using the HTTP
<spanx style="verb">GET</spanx> or the HTTP
<spanx style="verb">POST</spanx> method as defined in
<xref target="RFC7231">RFC 7231</xref>.</t>
-->
<t>
HTTP <spanx style="verb">GET</spanx> を利用する場合, パラメータは <xref target="QuerySerialization"/> にある Query String Serialization を用いてシリアライズされる.
HTTP <spanx style="verb">POST</spanx> を利用する場合, パラメータは <xref target="W3C.REC-html401-19991224"/> にある <spanx style="verb">application/x-www-form-urlencoded</spanx> フォーマットを用いてエンティティボディ中に含まれる.
</t>
<!--
<t>If using the HTTP <spanx style="verb">GET</spanx> method, the
parameters are serialized using
the Query String Serialization, per <xref target="QuerySerialization"/>.
If using the HTTP
<spanx style="verb">POST</spanx> method, the request parameters are
added to the HTTP request entity-body using the
<spanx style="verb">application/x-www-form-urlencoded</spanx> format
as defined by <xref target="W3C.REC-html401-19991224"/>.</t>
-->
<figure>
<preamble>
以下は Authentication Request URL の一例である.
(改行は掲載上の都合による)
</preamble>
<!--
<preamble>The following is a non-normative example of an
Authentication Request URL
(with line wraps within values for display purposes only):</preamble>
-->
<artwork><![CDATA[
https://server.example.com/authorize?
response_type=code
&client_id=s6BhdRkqt3
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
&scope=openid%20profile
&state=af0ifjsldkj
]]></artwork>
</figure>
<section anchor="RequestParameters" title="Request Parameters">
<t>
OpenID Connect は以下の OAuth 2.0 リクエストパラメータを利用する.
</t>
<!--
<t>
This subset of
OpenID Connect uses the following OAuth 2.0 request parameters:
</t>
-->
<t>
<list style="hanging">
<t hangText="response_type">
<vspace/>
REQUIRED.
値は <spanx style="verb">code</spanx> とすること (MUST).
これにより Authorization Endpoint から返される <spanx style="verb">code</spanx> と交換で, Access Token および ID Token が Token Endpoint から返されることになる.
<!--
REQUIRED.
This value MUST be <spanx style="verb">code</spanx>.
This requests that both an Access Token and an ID Token be returned
from the Token Endpoint in exchange for
the <spanx style="verb">code</spanx> value returned from the
Authorization Endpoint.
-->
</t>
<t hangText="client_id">
<vspace/>
REQUIRED.
Authorization Server における OAuth 2.0 Client Identifier の値.
<!--
REQUIRED.
OAuth 2.0 Client Identifier
valid at the Authorization Server.
-->
</t>
<t hangText="scope">
<vspace/>
REQUIRED.
OpenID Connect リクエストは scope に <spanx style="verb">openid</spanx> を含まねばならない (MUST).
OPTIONAL な scope としては,
<spanx style="verb">profile</spanx>,
<spanx style="verb">email</spanx>,
<spanx style="verb">address</spanx>,
<spanx style="verb">phone</spanx>,
および <spanx style="verb">offline_access</spanx> が定義されている.
それぞれの scope 値についての詳細は <xref target="Scopes"/> を参照のこと.
<!--
REQUIRED.
OpenID Connect requests MUST contain the <spanx style="verb">openid</spanx> scope value.
OPTIONAL scope values of
<spanx style="verb">profile</spanx>,
<spanx style="verb">email</spanx>,
<spanx style="verb">address</spanx>,
<spanx style="verb">phone</spanx>,
and <spanx style="verb">offline_access</spanx>
are also defined.
See <xref target="Scopes"/> for more about the scope values defined by this document.
-->
</t>
<t hangText="redirect_uri">
<vspace/>
REQUIRED.
レスポンスが返される Redirection URI.
この URI は, Client が OpenID Provider に対して事前に登録済みの Redirection URI のいずれかと完全一致しなければならない (MUST).
マッチングルールは <xref target="RFC3986"/> (Simple String Comparison) の Section 6.2.1 に従うこと.
Redirection URI は <spanx style="verb">https</spanx> スキーマを利用することが望まれる (SHOULD) が, Client Type が <spanx style="verb">confidential</spanx> であり, かつ OP が <spanx style="verb">http</spanx> の利用を容認する場合に限り, <spanx style="verb">http</spanx> スキーマを利用してもよい (MAY).
Client Type 等の定義については OAuth 2.0 の Section 2.1 を参照のこと.
Redirection URI には, ネイティブアプリケーションにコールバックを送る目的などで, 上記以外のスキーマを利用することもできる.
<!--
REQUIRED.
Redirection URI to which the response will be sent.
This URI MUST exactly match one of the Redirection URI values
for the Client pre-registered at the OpenID Provider,
with the matching performed as described in
Section 6.2.1 of <xref target="RFC3986"/> (Simple String Comparison).
The Redirection URI
SHOULD use the <spanx style="verb">https</spanx> scheme;
however, it MAY use the <spanx style="verb">http</spanx> scheme,
provided that the Client Type is
<spanx style="verb">confidential</spanx>,
as defined in Section 2.1 of OAuth 2.0, and
provided the OP allows the use of
<spanx style="verb">http</spanx> Redirection URIs in this case.
The Redirection URI MAY use an alternate scheme,
such as one that is intended to identify a callback into a native application.
-->
</t>
<t hangText="state">
<vspace/>
RECOMMENDED.
リクエストとコールバックの間で維持されるランダムな値.
一般的に Cross-Site Request Forgery (CSRF, XSRF) 対策の目的で利用される, ブラウザ Cookie と紐づく暗号論的にセキュアな値を取る.
<!--
RECOMMENDED.
Opaque value used
to maintain state between the request and the callback.
Typically, Cross-Site Request Forgery (CSRF, XSRF)
mitigation is done by cryptographically binding the value of
this parameter with a browser cookie.
-->
</t>
</list>
</t>
<t>
本ドキュメントは上記に加えて以下のリクエストパラメータを定義する.
</t>
<!--
<t>
This document also defines the following request parameters:
</t>
-->
<t>
<list style="hanging">
<t hangText="nonce">
<vspace/>
OPTIONAL.
Client セッションと ID Token を紐づける文字列であり, リプレイアタック対策に用いられる.
この値は Authentication Request で指定され, そのままの値で ID Token に含まれる.
<spanx style="verb">nonce</spanx> 値には, 推測不可能なように十分なエントロピーを持たせること (MUST).
この条件を満たすには, 暗号論的にセキュアな乱数を HttpOnly なセッションクッキーとして用い, その暗号論的ハッシュ値を <spanx style="verb">nonce</spanx> として利用するといった方法が考えられる.
この場合, ID Token に含まれて返される <spanx style="verb">nonce</spanx> 値をセッションクッキーのハッシュ値と比較することで, 第三者によるリプレイアタックを検知することができる.
Code Flow を利用する場合, nonce の利用は OPTIONAL である.
<!--
OPTIONAL.
String value used to associate a Client session
with an ID Token, and to mitigate replay attacks.
The value is passed through unmodified from the Authentication Request to the ID Token.
Sufficient entropy MUST be present in the
<spanx style="verb">nonce</spanx> values used to prevent
attackers from guessing values.
One method to achieve this is to store a cryptographically random value
as an HttpOnly a session cookie and use a cryptographic hash of the value
as the <spanx style="verb">nonce</spanx> parameter.
In that case, the <spanx style="verb">nonce</spanx> in the returned
ID Token is compared to the hash of the session cookie
to detect ID Token replay by third parties.
Use of the nonce is OPTIONAL when using the code flow.
-->
</t>
<t hangText="display">
<vspace/>
OPTIONAL.
Authorization Server が認証および同意のためのユーザーインタフェースを End-User にどのように表示するかを指定するための ASCII 値 <xref target="RFC20"/>.
以下の値が定義されている.
<!--
OPTIONAL.
ASCII <xref target="RFC20"/> string value that specifies
how the Authorization Server displays the authentication and
consent user interface pages to the End-User.
The defined values are:
-->
<list style="hanging">
<t hangText="page">
<vspace/>
Authorization Server は認証および同意 UI を User Agent の全画面に表示すべきである (SHOULD).
display パラメータが指定されていない場合, この値がデフォルトとなる.
<!--
The Authorization Server SHOULD display the
authentication and consent UI consistent with a full User Agent page
view. If the display parameter is not specified, this is the
default display mode.
-->
</t>
<t hangText="popup">
<vspace/>
Authorization Server は認証および同意 UI を User Agent のポップアップウィンドウに表示すべきである (SHOULD).
User Agent のポップアップウィンドウはログインダイアログに適切なサイズで, 親ウィンドウ全体を覆うことのないようにすべきである.
<!--
The Authorization Server SHOULD display the
authentication and consent UI consistent with a popup User Agent
window.
The popup User Agent window should be of an appropriate size
for a login-focused dialog and should not obscure
the entire window that it is popping up over.
-->
</t>
<t hangText="touch">
<vspace/>
Authorization Server は認証および同意 UI をタッチインタフェースを持つデバイスに適した形で表示すべきである (SHOULD).
<!--
The Authorization Server SHOULD display the
authentication and consent UI consistent with a device that
leverages a touch interface.
-->
</t>
<t hangText="wap">
<vspace/>
Authorization Server は認証および同意 UI を "feature phone" に適した形で表示すべきである (SHOULD).
<!--
The Authorization Server SHOULD display the
authentication and consent UI consistent with a "feature phone"
type display.
-->
</t>
</list>
Authorization Server は User Agent の機能を検知して適切な表示を行うようにしても良い (MAY).
<!--
The Authorization Server MAY also attempt to detect the capabilities
of the User Agent and present an appropriate display.
-->
</t>
<t hangText="prompt">
<vspace/>
OPTIONAL.
Authorization Server が End-User に再認証および同意を再度要求するかどうか指定するための, スペース区切りの ASCII 文字列のリスト.
以下の値が定義されている.
<!--
OPTIONAL.
Space-delimited, case-sensitive list of ASCII string values
that specifies whether the Authorization Server prompts
the End-User for reauthentication and consent.