-
Notifications
You must be signed in to change notification settings - Fork 17
/
openid-connect-core-1_0.ja.html
8678 lines (7065 loc) · 449 KB
/
openid-connect-core-1_0.ja.html
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en"><head><title>Final: OpenID Connect Core 1.0 incorporating errata set 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="OpenID Connect Core 1.0 incorporating errata set 1">
<meta name="generator" content="xml2rfc v1.37pre1 (http://xml.resource.org/)">
<style type='text/css'><!--
body {
font-family: verdana, charcoal, helvetica, arial, sans-serif;
font-size: small; color: #000; background-color: #FFF;
margin: 2em;
}
h1, h2, h3, h4, h5, h6 {
font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
font-weight: bold; font-style: normal;
}
h1 { color: #900; background-color: transparent; text-align: right; }
h3 { color: #333; background-color: transparent; }
td.RFCbug {
font-size: x-small; text-decoration: none;
width: 30px; height: 30px; padding-top: 2px;
text-align: justify; vertical-align: middle;
background-color: #000;
}
td.RFCbug span.RFC {
font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
font-weight: bold; color: #666;
}
td.RFCbug span.hotText {
font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
font-weight: normal; text-align: center; color: #FFF;
}
table.TOCbug { width: 30px; height: 15px; }
td.TOCbug {
text-align: center; width: 30px; height: 15px;
color: #FFF; background-color: #900;
}
td.TOCbug a {
font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
font-weight: bold; font-size: x-small; text-decoration: none;
color: #FFF; background-color: transparent;
}
td.header {
font-family: arial, helvetica, sans-serif; font-size: x-small;
vertical-align: top; width: 33%;
color: #FFF; background-color: #666;
}
td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
td.author-text { font-size: x-small; }
/* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
a.info {
/* This is the key. */
position: relative;
z-index: 24;
text-decoration: none;
}
a.info:hover {
z-index: 25;
color: #FFF; background-color: #900;
}
a.info span { display: none; }
a.info:hover span.info {
/* The span will display just on :hover state. */
display: block;
position: absolute;
font-size: smaller;
top: 2em; left: -5em; width: 15em;
padding: 2px; border: 1px solid #333;
color: #900; background-color: #EEE;
text-align: left;
}
a { font-weight: bold; }
a:link { color: #900; background-color: transparent; }
a:visited { color: #633; background-color: transparent; }
a:active { color: #633; background-color: transparent; }
p { margin-left: 2em; margin-right: 2em; }
p.copyright { font-size: x-small; }
p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }
ol.text { margin-left: 2em; margin-right: 2em; }
ul.text { margin-left: 2em; margin-right: 2em; }
li { margin-left: 3em; }
/* RFC-2629 <spanx>s and <artwork>s. */
em { font-style: italic; }
strong { font-weight: bold; }
dfn { font-weight: bold; font-style: normal; }
cite { font-weight: normal; font-style: normal; }
tt { color: #036; }
tt, pre, pre dfn, pre em, pre cite, pre span {
font-family: "Courier New", Courier, monospace; font-size: small;
}
pre {
text-align: left; padding: 4px;
color: #000; background-color: #CCC;
}
pre dfn { color: #900; }
pre em { color: #66F; background-color: #FFC; font-weight: normal; }
pre .key { color: #33C; font-weight: bold; }
pre .id { color: #900; }
pre .str { color: #000; background-color: #CFF; }
pre .val { color: #066; }
pre .rep { color: #909; }
pre .oth { color: #000; background-color: #FCF; }
pre .err { background-color: #FCC; }
/* RFC-2629 <texttable>s. */
table.all, table.full, table.headers, table.none {
font-size: small; text-align: center; border-width: 2px;
vertical-align: top; border-collapse: collapse;
}
table.all, table.full { border-style: solid; border-color: black; }
table.headers, table.none { border-style: none; }
th {
font-weight: bold; border-color: black;
border-width: 2px 2px 3px 2px;
}
table.all th, table.full th { border-style: solid; }
table.headers th { border-style: none none solid none; }
table.none th { border-style: none; }
table.all td {
border-style: solid; border-color: #333;
border-width: 1px 2px;
}
table.full td, table.headers td, table.none td { border-style: none; }
hr { height: 1px; }
hr.insert {
width: 80%; border-style: none; border-width: 0;
color: #CCC; background-color: #CCC;
}
--></style>
</head>
<body>
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
<tr><td class="header">Final</td><td class="header">N. Sakimura</td></tr>
<tr><td class="header"> </td><td class="header">NRI</td></tr>
<tr><td class="header"> </td><td class="header">J. Bradley</td></tr>
<tr><td class="header"> </td><td class="header">Ping Identity</td></tr>
<tr><td class="header"> </td><td class="header">M. Jones</td></tr>
<tr><td class="header"> </td><td class="header">Microsoft</td></tr>
<tr><td class="header"> </td><td class="header">B. de Medeiros</td></tr>
<tr><td class="header"> </td><td class="header">Google</td></tr>
<tr><td class="header"> </td><td class="header">C. Mortimore</td></tr>
<tr><td class="header"> </td><td class="header">Salesforce</td></tr>
<tr><td class="header"> </td><td class="header">November 8, 2014</td></tr>
</table></td></tr></table>
<h1><br />OpenID Connect Core 1.0 incorporating errata set 1</h1>
<h3>Abstract</h3>
<p>
OpenID Connect 1.0 は, OAuth 2.0 プロトコルの上にシンプルなアイデンティティレイヤーを付与したものである.
このプロトコルは Client が Authorization Server の認証結果に基づいて End-User のアイデンティティを検証可能にする.
また同時に End-User の必要最低限のプロフィール情報を, 相互運用可能かつ RESTful な形で取得することも可能にする.
</p>
<p>
この仕様は, OpenID Connect の主要な機能である OAuth 2.0 上で End-User の情報伝達のために Claim を用いる認証機能 を定義する.
この仕様はまた, OpenID Connect を利用するための Security, Privacy Considerations を説明する.
</p><a name="toc"></a><br /><hr />
<h3>Table of Contents</h3>
<p class="toc">
<a href="#Introduction">1.</a>
Introduction<br />
<a href="#rnc">1.1.</a>
Requirements Notation and Conventions<br />
<a href="#Terminology">1.2.</a>
Terminology<br />
<a href="#Overview">1.3.</a>
Overview<br />
<a href="#IDToken">2.</a>
ID Token<br />
<a href="#Authentication">3.</a>
Authentication<br />
<a href="#CodeFlowAuth">3.1.</a>
Authentication using the Authorization Code Flow<br />
<a href="#CodeFlowSteps">3.1.1.</a>
Authorization Code Flow Steps<br />
<a href="#AuthorizationEndpoint">3.1.2.</a>
Authorization Endpoint<br />
<a href="#AuthRequest">3.1.2.1.</a>
Authentication Request<br />
<a href="#AuthRequestValidation">3.1.2.2.</a>
Authentication Request Validation<br />
<a href="#Authenticates">3.1.2.3.</a>
Authorization Server Authenticates End-User<br />
<a href="#Consent">3.1.2.4.</a>
Authorization Server Obtains End-User Consent/Authorization<br />
<a href="#AuthResponse">3.1.2.5.</a>
Successful Authentication Response<br />
<a href="#AuthError">3.1.2.6.</a>
Authentication Error Response<br />
<a href="#AuthResponseValidation">3.1.2.7.</a>
Authentication Response Validation<br />
<a href="#TokenEndpoint">3.1.3.</a>
Token Endpoint<br />
<a href="#TokenRequest">3.1.3.1.</a>
Token Request<br />
<a href="#TokenRequestValidation">3.1.3.2.</a>
Token Request Validation<br />
<a href="#TokenResponse">3.1.3.3.</a>
Successful Token Response<br />
<a href="#TokenErrorResponse">3.1.3.4.</a>
Token Error Response<br />
<a href="#TokenResponseValidation">3.1.3.5.</a>
Token Response Validation<br />
<a href="#CodeIDToken">3.1.3.6.</a>
ID Token<br />
<a href="#IDTokenValidation">3.1.3.7.</a>
ID Token Validation<br />
<a href="#CodeFlowTokenValidation">3.1.3.8.</a>
Access Token Validation<br />
<a href="#ImplicitFlowAuth">3.2.</a>
Authentication using the Implicit Flow<br />
<a href="#ImplicitFlowSteps">3.2.1.</a>
Implicit Flow Steps<br />
<a href="#ImplicitAuthorizationEndpoint">3.2.2.</a>
Authorization Endpoint<br />
<a href="#ImplicitAuthRequest">3.2.2.1.</a>
Authentication Request<br />
<a href="#ImplicitValidation">3.2.2.2.</a>
Authentication Request Validation<br />
<a href="#ImplicitAuthenticates">3.2.2.3.</a>
Authorization Server Authenticates End-User<br />
<a href="#ImplicitConsent">3.2.2.4.</a>
Authorization Server Obtains End-User Consent/Authorization<br />
<a href="#ImplicitAuthResponse">3.2.2.5.</a>
Successful Authentication Response<br />
<a href="#ImplicitAuthError">3.2.2.6.</a>
Authentication Error Response<br />
<a href="#ImplicitCallback">3.2.2.7.</a>
Redirect URI Fragment Handling<br />
<a href="#ImplicitAuthResponseValidation">3.2.2.8.</a>
Authentication Response Validation<br />
<a href="#ImplicitTokenValidation">3.2.2.9.</a>
Access Token Validation<br />
<a href="#ImplicitIDToken">3.2.2.10.</a>
ID Token<br />
<a href="#ImplicitIDTValidation">3.2.2.11.</a>
ID Token Validation<br />
<a href="#HybridFlowAuth">3.3.</a>
Authentication using the Hybrid Flow<br />
<a href="#HybridFlowSteps">3.3.1.</a>
Hybrid Flow Steps<br />
<a href="#HybridAuthorizationEndpoint">3.3.2.</a>
Authorization Endpoint<br />
<a href="#HybridAuthRequest">3.3.2.1.</a>
Authentication Request<br />
<a href="#HybridValidation">3.3.2.2.</a>
Authentication Request Validation<br />
<a href="#HybridAuthenticates">3.3.2.3.</a>
Authorization Server Authenticates End-User<br />
<a href="#HybridConsent">3.3.2.4.</a>
Authorization Server Obtains End-User Consent/Authorization<br />
<a href="#HybridAuthResponse">3.3.2.5.</a>
Successful Authentication Response<br />
<a href="#HybridAuthError">3.3.2.6.</a>
Authentication Error Response<br />
<a href="#HybridCallback">3.3.2.7.</a>
Redirect URI Fragment Handling<br />
<a href="#HybridAuthResponseValidation">3.3.2.8.</a>
Authentication Response Validation<br />
<a href="#HybridTokenValidation">3.3.2.9.</a>
Access Token Validation<br />
<a href="#CodeValidation">3.3.2.10.</a>
Authorization Code Validation<br />
<a href="#HybridIDToken">3.3.2.11.</a>
ID Token<br />
<a href="#HybridIDTValidation">3.3.2.12.</a>
ID Token Validation<br />
<a href="#HybridTokenEndpoint">3.3.3.</a>
Token Endpoint<br />
<a href="#HybridTokenRequest">3.3.3.1.</a>
Token Request<br />
<a href="#HybridTokenRequestValidation">3.3.3.2.</a>
Token Request Validation<br />
<a href="#HybridTokenResponse">3.3.3.3.</a>
Successful Token Response<br />
<a href="#HybridTokenErrorResponse">3.3.3.4.</a>
Token Error Response<br />
<a href="#HybridTokenResponseValidation">3.3.3.5.</a>
Token Response Validation<br />
<a href="#HybridIDToken2">3.3.3.6.</a>
ID Token<br />
<a href="#HybridIDTValidation2">3.3.3.7.</a>
ID Token Validation<br />
<a href="#HybridAccessToken2">3.3.3.8.</a>
Access Token<br />
<a href="#HybridTokenValidation2">3.3.3.9.</a>
Access Token Validation<br />
<a href="#ThirdPartyInitiatedLogin">4.</a>
Initiating Login from a Third Party<br />
<a href="#Claims">5.</a>
Claims<br />
<a href="#StandardClaims">5.1.</a>
Standard Claims<br />
<a href="#AddressClaim">5.1.1.</a>
Address Claim<br />
<a href="#AdditionalClaims">5.1.2.</a>
Additional Claims<br />
<a href="#ClaimsLanguagesAndScripts">5.2.</a>
Claims Languages and Scripts<br />
<a href="#UserInfo">5.3.</a>
UserInfo Endpoint<br />
<a href="#UserInfoRequest">5.3.1.</a>
UserInfo Request<br />
<a href="#UserInfoResponse">5.3.2.</a>
Successful UserInfo Response<br />
<a href="#UserInfoError">5.3.3.</a>
UserInfo Error Response<br />
<a href="#UserInfoResponseValidation">5.3.4.</a>
UserInfo Response Validation<br />
<a href="#ScopeClaims">5.4.</a>
Requesting Claims using Scope Values<br />
<a href="#ClaimsParameter">5.5.</a>
Requesting Claims using the "claims" Request Parameter<br />
<a href="#IndividualClaimsRequests">5.5.1.</a>
Individual Claims Requests<br />
<a href="#acrSemantics">5.5.1.1.</a>
Requesting the "acr" Claim<br />
<a href="#IndividualClaimsLanguages">5.5.2.</a>
Languages and Scripts for Individual Claims<br />
<a href="#ClaimTypes">5.6.</a>
Claim Types<br />
<a href="#NormalClaims">5.6.1.</a>
Normal Claims<br />
<a href="#AggregatedDistributedClaims">5.6.2.</a>
Aggregated and Distributed Claims<br />
<a href="#AggregatedExample">5.6.2.1.</a>
Example of Aggregated Claims<br />
<a href="#DistributedExample">5.6.2.2.</a>
Example of Distributed Claims<br />
<a href="#ClaimStability">5.7.</a>
Claim Stability and Uniqueness<br />
<a href="#JWTRequests">6.</a>
Passing Request Parameters as JWTs<br />
<a href="#RequestObject">6.1.</a>
Passing a Request Object by Value<br />
<a href="#RequestParameter">6.1.1.</a>
Request using the "request" Request Parameter<br />
<a href="#RequestUriParameter">6.2.</a>
Passing a Request Object by Reference<br />
<a href="#CreateRequestUri">6.2.1.</a>
URL Referencing the Request Object<br />
<a href="#UseRequestUri">6.2.2.</a>
Request using the "request_uri" Request Parameter<br />
<a href="#GetRequestUri">6.2.3.</a>
Authorization Server Fetches Request Object<br />
<a href="#RequestUriRationale">6.2.4.</a>
"request_uri" Rationale<br />
<a href="#JWTRequestValidation">6.3.</a>
Validating JWT-Based Requests<br />
<a href="#EncryptedRequestObject">6.3.1.</a>
Encrypted Request Object<br />
<a href="#SignedRequestObject">6.3.2.</a>
Signed Request Object<br />
<a href="#RequestParameterValidation">6.3.3.</a>
Request Parameter Assembly and Validation<br />
<a href="#SelfIssued">7.</a>
Self-Issued OpenID Provider<br />
<a href="#SelfIssuedDiscovery">7.1.</a>
Self-Issued OpenID Provider Discovery<br />
<a href="#SelfIssuedRegistration">7.2.</a>
Self-Issued OpenID Provider Registration<br />
<a href="#RegistrationParameter">7.2.1.</a>
Providing Information with the "registration" Request Parameter<br />
<a href="#SelfIssuedRequest">7.3.</a>
Self-Issued OpenID Provider Request<br />
<a href="#SelfIssuedResponse">7.4.</a>
Self-Issued OpenID Provider Response<br />
<a href="#SelfIssuedValidation">7.5.</a>
Self-Issued ID Token Validation<br />
<a href="#SubjectIDTypes">8.</a>
Subject Identifier Types<br />
<a href="#PairwiseAlg">8.1.</a>
Pairwise Identifier Algorithm<br />
<a href="#ClientAuthentication">9.</a>
Client Authentication<br />
<a href="#SigEnc">10.</a>
Signatures and Encryption<br />
<a href="#Signing">10.1.</a>
Signing<br />
<a href="#RotateSigKeys">10.1.1.</a>
Rotation of Asymmetric Signing Keys<br />
<a href="#Encryption">10.2.</a>
Encryption<br />
<a href="#RotateEncKeys">10.2.1.</a>
Rotation of Asymmetric Encryption Keys<br />
<a href="#OfflineAccess">11.</a>
Offline Access<br />
<a href="#RefreshTokens">12.</a>
Using Refresh Tokens<br />
<a href="#RefreshingAccessToken">12.1.</a>
Refresh Request<br />
<a href="#RefreshTokenResponse">12.2.</a>
Successful Refresh Response<br />
<a href="#RefreshErrorResponse">12.3.</a>
Refresh Error Response<br />
<a href="#Serializations">13.</a>
Serializations<br />
<a href="#QuerySerialization">13.1.</a>
Query String Serialization<br />
<a href="#FormSerialization">13.2.</a>
Form Serialization<br />
<a href="#JSONSerialization">13.3.</a>
JSON Serialization<br />
<a href="#StringOps">14.</a>
String Operations<br />
<a href="#ImplementationConsiderations">15.</a>
Implementation Considerations<br />
<a href="#ServerMTI">15.1.</a>
Mandatory to Implement Features for All OpenID Providers<br />
<a href="#DynamicMTI">15.2.</a>
Mandatory to Implement Features for Dynamic OpenID Providers<br />
<a href="#DiscoReg">15.3.</a>
Discovery and Registration<br />
<a href="#RPMTI">15.4.</a>
Mandatory to Implement Features for Relying Parties<br />
<a href="#ImplementationNotes">15.5.</a>
Implementation Notes<br />
<a href="#CodeNotes">15.5.1.</a>
Authorization Code Implementation Notes<br />
<a href="#NonceNotes">15.5.2.</a>
Nonce Implementation Notes<br />
<a href="#FragmentNotes">15.5.3.</a>
Redirect URI Fragment Handling Implementation Notes<br />
<a href="#CompatibilityNotes">15.6.</a>
Compatibility Notes<br />
<a href="#PreFinalIETFSpecs">15.6.1.</a>
Pre-Final IETF Specifications<br />
<a href="#GoogleIss">15.6.2.</a>
Google "iss" Value<br />
<a href="#RelatedSpecs">15.7.</a>
Related Specifications and Implementer's Guides<br />
<a href="#Security">16.</a>
Security Considerations<br />
<a href="#RequestDisclosure">16.1.</a>
Request Disclosure<br />
<a href="#ServerMasquerading">16.2.</a>
Server Masquerading<br />
<a href="#TokenManufacture">16.3.</a>
Token Manufacture/Modification<br />
<a href="#AccessTokenDisclosure">16.4.</a>
Access Token Disclosure<br />
<a href="#ResponseDisclosure">16.5.</a>
Server Response Disclosure<br />
<a href="#ServerResponseRepudiation">16.6.</a>
Server Response Repudiation<br />
<a href="#RequestRepudation">16.7.</a>
Request Repudiation<br />
<a href="#AccessTokenRedirect">16.8.</a>
Access Token Redirect<br />
<a href="#TokenReuse">16.9.</a>
Token Reuse<br />
<a href="#AuthCodeCapture">16.10.</a>
Eavesdropping or Leaking Authorization Codes (Secondary Authenticator Capture)<br />
<a href="#TokenSubstitution">16.11.</a>
Token Substitution<br />
<a href="#TimingAttack">16.12.</a>
Timing Attack<br />
<a href="#OtherCryptoAttacks">16.13.</a>
Other Crypto Related Attacks<br />
<a href="#SigningOrder">16.14.</a>
Signing and Encryption Order<br />
<a href="#IssuerIdentifier">16.15.</a>
Issuer Identifier<br />
<a href="#ImplicitFlowThreats">16.16.</a>
Implicit Flow Threats<br />
<a href="#TLSRequirements">16.17.</a>
TLS Requirements<br />
<a href="#TokenLifetime">16.18.</a>
Lifetimes of Access Tokens and Refresh Tokens<br />
<a href="#SymmetricKeyEntropy">16.19.</a>
Symmetric Key Entropy<br />
<a href="#NeedForSignedRequests">16.20.</a>
Need for Signed Requests<br />
<a href="#NeedForEncryptedRequests">16.21.</a>
Need for Encrypted Requests<br />
<a href="#Privacy">17.</a>
Privacy Considerations<br />
<a href="#PII">17.1.</a>
Personally Identifiable Information<br />
<a href="#AccessMonitoring">17.2.</a>
Data Access Monitoring<br />
<a href="#Correlation">17.3.</a>
Correlation<br />
<a href="#OfflineAccessPrivacy">17.4.</a>
Offline Access<br />
<a href="#IANA">18.</a>
IANA Considerations<br />
<a href="#ClaimsRegistry">18.1.</a>
JSON Web Token Claims Registration<br />
<a href="#ClaimsContents">18.1.1.</a>
Registry Contents<br />
<a href="#OAuthParametersRegistry">18.2.</a>
OAuth Parameters Registration<br />
<a href="#ParametersContents">18.2.1.</a>
Registry Contents<br />
<a href="#OAuthErrorRegistry">18.3.</a>
OAuth Extensions Error Registration<br />
<a href="#ErrorContents">18.3.1.</a>
Registry Contents<br />
<a href="#rfc.references1">19.</a>
References<br />
<a href="#rfc.references1">19.1.</a>
Normative References<br />
<a href="#rfc.references2">19.2.</a>
Informative References<br />
<a href="#AuthorizationExamples">Appendix A.</a>
Authorization Examples<br />
<a href="#codeExample">A.1.</a>
Example using response_type=code<br />
<a href="#id_tokenExample">A.2.</a>
Example using response_type=id_token<br />
<a href="#id_token-tokenExample">A.3.</a>
Example using response_type=id_token token<br />
<a href="#code-id_tokenExample">A.4.</a>
Example using response_type=code id_token<br />
<a href="#code-tokenExample">A.5.</a>
Example using response_type=code token<br />
<a href="#code-id_token-tokenExample">A.6.</a>
Example using response_type=code id_token token<br />
<a href="#ExampleRSAKey">A.7.</a>
RSA Key Used in Examples<br />
<a href="#Acknowledgements">Appendix B.</a>
Acknowledgements<br />
<a href="#Notices">Appendix C.</a>
Notices<br />
<a href="#rfc.authors">§</a>
Authors' Addresses<br />
</p>
<br clear="all" />
<a name="Introduction"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.1"></a><h3>1.
Introduction</h3>
<p>
OpenID Connect 1.0 は, OAuth 2.0 <a class='info' href='#RFC6749'>[RFC6749]<span> (</span><span class='info'>Hardt, D., Ed., “The OAuth 2.0 Authorization Framework,” October 2012.</span><span>)</span></a> プロトコルの上にシンプルなアイデンティティレイヤーを付与したものである.
このプロトコルは Client が Authorization Server の認証結果に基づいて End-User のアイデンティティを検証可能にする.
また同時に End-User の必要最低限のプロフィール情報を, 相互運用可能かつ RESTful な形で取得することも可能にする.
</p>
<p>
OpenID Connect Core 1.0 仕様は, OpenID Connect の主要な機能である OAuth 2.0 上で End-User の情報伝達のために Claim を用いる認証機能 を定義する.
この仕様はまた, OpenID Connect を利用するための Security, Privacy Considerations を説明する.
</p>
<p>
OpenID Connect のベースとなる <a class='info' href='#RFC6749'>OAuth 2.0 Authorization Framework<span> (</span><span class='info'>Hardt, D., Ed., “The OAuth 2.0 Authorization Framework,” October 2012.</span><span>)</span></a> [RFC6749] と <a class='info' href='#RFC6750'>OAuth 2.0 Bearer Token Usage<span> (</span><span class='info'>Jones, M. and D. Hardt, “The OAuth 2.0 Authorization Framework: Bearer Token Usage,” October 2012.</span><span>)</span></a> [RFC6750] は, 3rd-party アプリケーションが HTTP リソースへの制限付きアクセス権を取得および行使するための全般的フレームワークを提供している.
これらはリソースアクセスのための Access Token を取得および行使する方法は定義するが, アイデンティティ情報を提供するための標準的手段は定義しない.
とりわけ, OAuth 2.0 のプロファイリングを行わずに End-User の認証に必要な情報を提供することは不可能である.
本ドキュメント読者は上記2つの仕様を理解していることが期待される.
</p>
<p>
OpenID Connect は OAuth 2.0 認可プロセスを拡張し, 認証目的で利用できるようにする.
本拡張を利用する場合, Client は <tt>openid</tt> scope を指定して Authorization Request を送信する.
認証結果は ID Token (<a class='info' href='#IDToken'>Section 2<span> (</span><span class='info'>ID Token</span><span>)</span></a> 参照) と呼ばれる <a class='info' href='#JWT'>JSON Web Token (JWT)<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Token (JWT),” July 2014.</span><span>)</span></a> [JWT] として返される.
OpenID Connect をサポートする OAuth 2.0 Authentication Server は, OpenID Provider (OP) とも呼ばれる.
OpenID Connect を利用する OAuth 2.0 Client は Relying Party (RP) とも呼ばれる.
</p>
<p>
本ドキュメントでは, Relying Party は既に Authorization Endpoint, Token Endpoint 等を含む OpenID Provider の設定情報を既に得ているものとする.
これらの情報は通常 <a class='info' href='#OpenID.Discovery'>OpenID Connect Discovery 1.0<span> (</span><span class='info'>Sakimura, N., Bradley, J., Jones, M., and E. Jay, “OpenID Connect Discovery 1.0,” November 2014.</span><span>)</span></a> [OpenID.Discovery] にある Discovery を通じて得られるが, その他の手段で得られることもある.
</p>
<p>
また同様に, Relying Party は OpenID Provider 利用に必要なクレデンシャルを取得し, OP 利用に必要な情報を登録しているものとする.
これの処理は通常 <a class='info' href='#OpenID.Registration'>OpenID Connect Dynamic Client Registration 1.0<span> (</span><span class='info'>Sakimura, N., Bradley, J., and M. Jones, “OpenID Connect Dynamic Client Registration 1.0,” November 2014.</span><span>)</span></a> [OpenID.Registration] にある Dynamic Registration を通じて行われるが, その他の手段で行われることもある.
</p>
<a name="rnc"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.1.1"></a><h3>1.1.
Requirements Notation and Conventions</h3>
<p>
本ドキュメント中の "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", および "OPTIONAL" の意味するところは, <a class='info' href='#RFC2119'>[RFC2119]<span> (</span><span class='info'>Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.</span><span>)</span></a> の定める通りである.
</p>
<p>
本ドキュメントの .txt バージョンでは, 表記そのままで利用される値についてはクオートで囲んでいる.
このような値をプロトコルメッセージ中で用いる場合, クオートを含めてはならない (MUST NOT).
HTML バージョンではクオートで囲う代わりに <tt>this fixed-width font</tt> を用いる.
</p>
<p>
<a class='info' href='#JWS'>JSON Web Signature (JWS)<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Signature (JWS),” July 2014.</span><span>)</span></a> [JWS] と <a class='info' href='#JWE'>JSON Web Encryption (JWE)<span> (</span><span class='info'>Jones, M., Rescorla, E., and J. Hildebrand, “JSON Web Encryption (JWE),” July 2014.</span><span>)</span></a> [JWE] を用いる場合, シリアライゼーションには JWS Compact Serialization と JWE Compact Serialization を用いる.
JWS JSON Serialization と JWE JSON Serialization は利用しない.
</p>
<a name="Terminology"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.1.2"></a><h3>1.2.
Terminology</h3>
<p>
本ドキュメントでは,
<a class='info' href='#RFC6749'>OAuth 2.0<span> (</span><span class='info'>Hardt, D., Ed., “The OAuth 2.0 Authorization Framework,” October 2012.</span><span>)</span></a> [RFC6749] で定義された "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"
<a class='info' href='#JWT'>JSON Web Token (JWT)<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Token (JWT),” July 2014.</span><span>)</span></a> [JWT] で定義された "Claim Name", "Claim Value", "JSON Web Token (JWT)", "JWT Claims Set", および "Nested JWT",
<a class='info' href='#JWS'>JSON Web Signature (JWS)<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Signature (JWS),” July 2014.</span><span>)</span></a> [JWS] で定義された "Header Parameter" および "JOSE Header",
<a class='info' href='#RFC2616'>RFC 2616<span> (</span><span class='info'>Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, “Hypertext Transfer Protocol -- HTTP/1.1,” June 1999.</span><span>)</span></a> [RFC2616] で定義された "User Agent",
<a class='info' href='#OAuth.Responses'>OAuth 2.0 Multiple Response Type Encoding Practices<span> (</span><span class='info'>de Medeiros, B., Ed., Scurtescu, M., Tarjan, P., and M. Jones, “OAuth 2.0 Multiple Response Type Encoding Practices,” February 2014.</span><span>)</span></a> [OAuth.Responses] で定義された "Response Mode" という用語を用いる.
</p>
<p>
本ドキュメントはその他に以下の用語を用いる.
</p>
<blockquote class="text"><dl>
<dt>Authentication</dt>
<dd>
提示された Identity と実際の Entity が紐づいていることを確認するプロセス.
</dd>
<dt>Authentication Request</dt>
<dd>
OpenID Connect が定める拡張パラメータおよびスコープを利用して, Authorization Server に End-User の認証を要求する OAuth 2.0 Authorization Request.
このとき Authorization Server は OpenID Connect Provider, Client は OpenID Connect Relying Party となる.
</dd>
<dt>Authentication Context</dt>
<dd>
認証応答に関する意思決定を行う前に Relying Party が要求できる情報.
そのようなコンテキストは実際に用いられた認証方式や <a class='info' href='#ISO29115'>ISO/IEC 29115<span> (</span><span class='info'>International Organization for Standardization, “ISO/IEC 29115:2013 -- Information technology - Security techniques - Entity authentication assurance framework,” March 2013.</span><span>)</span></a> [ISO29115] entity authentication assurance level のような保障レベルを含むが, これに限定されるものではない.
</dd>
<dt>Authentication Context Class</dt>
<dd>
特定のコンテキストで互いに等しいと考えられる認証方式もしくは手続きの集合.
</dd>
<dt>Authentication Context Class Reference</dt>
<dd>
Authentication Context Class の識別子.
</dd>
<dt>Authorization Code Flow</dt>
<dd>
Authorization Code が Authorization Endpoint から返され, 全てのトークンが Token Endpoint から返されるOAuth 2.0 のフロー.
</dd>
<dt>Authorization Request</dt>
<dd>
<a class='info' href='#RFC6749'>[RFC6749]<span> (</span><span class='info'>Hardt, D., Ed., “The OAuth 2.0 Authorization Framework,” October 2012.</span><span>)</span></a> にて定義された OAuth 2.0 Authorization Request.
</dd>
<dt>Claim</dt>
<dd>
Entity に関する情報の部分集合.
</dd>
<dt>Claim Type</dt>
<dd>
Claim の値を表現する構文.
本仕様では Normal, Aggregated, および Distributed という Claim Type を定義する.
</dd>
<dt>Claims Provider</dt>
<dd>
Entity の Claim を返すサーバー.
</dd>
<dt>Credential</dt>
<dd>
Identity や他のリソースを使用する権利があることの証拠として提示されるデータ.
</dd>
<dt>End-User</dt>
<dd>
一連のフローに参加する人間.
</dd>
<dt>Entity</dt>
<dd>
あるコンテキストの中で識別される, 他と独立した個.
End-User は Entity の一例.
</dd>
<dt>Essential Claim</dt>
<dd>
Client により指定される Claim.
End-User により要求された特定のタスクに対して円滑な認可処理を確保するために必要とされている.
</dd>
<dt>Hybrid Flow</dt>
<dd>
Authorization Code といくつかのトークンが Authorization Endpoint から返され, その他のトークンが Token Endpoint から返される OAuth 2.0 のフロー.
</dd>
<dt>ID Token</dt>
<dd>
Authentication イベントに関する Claim を含む <a class='info' href='#JWT'>JSON Web Token (JWT)<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Token (JWT),” July 2014.</span><span>)</span></a> [JWT].
その他の Claim を含むこともある (MAY).
</dd>
<dt>Identifier</dt>
<dd>
あるコンテキスト中で Entity をユニークに特徴づける値.
</dd>
<dt>Identity</dt>
<dd>
Entity に関する属性の集合.
</dd>
<dt>Implicit Flow</dt>
<dd>
全てのトークンが Authorization Endpoint から返され, Token Endpoint も Authorization Code も利用されない OAuth 2.0 のフロー.
</dd>
<dt>Issuer</dt>
<dd>
Claim の集合を発行する Entity.
</dd>
<dt>Issuer Identifier</dt>
<dd>
検証可能な Issuer の識別子.
Issuer Identifier は, 大文字小文字を区別する URL である.
この URL は <tt>https</tt> スキーム, ホスト, そして任意でポート番号およびパス要素からなり, クエリーとフラグメント要素は含まない.
</dd>
<dt>Message</dt>
<dd>
OpenID Relying Party と OpenID Provider の間でやりとりされるリクエストもしくはレスポンス.
</dd>
<dt>OpenID Provider (OP)</dt>
<dd>
End-User を Authenticate できる OAuth 2.0 Authorization Server.
End-User の Authentication イベントに関する Claim を Relying Party に提供する.
</dd>
<dt>Request Object</dt>
<dd>
Claim としてリクエストパラメータを含む JWT.
</dd>
<dt>Request URI</dt>
<dd>
Request Object を含むリソースを参照する URL.
Request URI のコンテンツは Authorization Server から取得可能でなければならない (MUST).
</dd>
<dt>Pairwise Pseudonymous Identifier (PPID)</dt>
<dd>
ある Relying Party に対してのみ, ある Entity の識別子として提供される値.
他の Relying Party には, 当該 PPID を当該 Entity と関連づけることはできない.
</dd>
<dt>Personally Identifiable Information (PII)</dt>
<dd>
特定の人物に紐づき, 実際の人物の識別に用いることができる情報.
もしくは特定の人物に直接および間接的にリンクされる可能性のある情報.
</dd>
<dt>Relying Party (RP)</dt>
<dd>
OpenID Provider に End-User Authentication と Claim を要求する OAuth 2.0 Client.
</dd>
<dt>Sector Identifier</dt>
<dd>
Relying Party により利用される URL のホスト要素.
Relying Party に対する Subject Identifier 計算の入力となる.
</dd>
<dt>Self-Issued OpenID Provider</dt>
<dd>
自己署名の ID Token を発行する, 個人的で self-hosted な OpenID Provider.
</dd>
<dt>Subject Identifier</dt>
<dd>
Issuer にとって局地的にユニークで再利用されることのない End-User 識別子.
この値は Client に利用されることを想定する.
</dd>
<dt>UserInfo Endpoint</dt>
<dd>
Protected Resource のひとつ.
Access Token を提示する Client に対して, Authorization Grant に従って End-User に関する情報を提供する.
URLは <tt>https</tt> scheme を利用しなければならず (MUST), ポート番号, パス, クエリパラメータの要素を含むことがある (MAY).
</dd>
<dt>Validation</dt>
<dd>
あるものごとの健全性および正当性を確立するためのプロセス.
</dd>
<dt>Verification</dt>
<dd>
ある事実や値の正確さを検査もしくは証明するためのプロセス.
</dd>
<dt>Voluntary Claim</dt>
<dd>
Client が End-User が要求するあるタスクを実行する際に, 有用ではあるが Essential ではないとを Client が指定した Claim.
</dd>
</dl></blockquote><p>
</p>
<p>
IMPORTANT NOTE TO READERS:
上記の用語定義は本仕様が定めるところであり, 本仕様の実装においてはこれらの定義に従うこと.
"Issuer Identifier" をはじめとして, 本仕様で大文字表記されている用語はすべて上記の定義に従う.
仕様書読者は必ずこれらの用語定義に従うこと.
</p>
<p>
利用される用語の一部分の詳細を知るために, <a class='info' href='#RFC4949'>Internet Security Glossary, Version 2<span> (</span><span class='info'>Shirey, R., “Internet Security Glossary, Version 2,” August 2007.</span><span>)</span></a> [RFC4949], <a class='info' href='#ISO29115'>ISO/IEC 29115 Entity Authentication Assurance<span> (</span><span class='info'>International Organization for Standardization, “ISO/IEC 29115:2013 -- Information technology - Security techniques - Entity authentication assurance framework,” March 2013.</span><span>)</span></a> [ISO29115], および <a class='info' href='#X.1252'>ITU-T X.1252<span> (</span><span class='info'>International Telecommunication Union, “ITU-T Recommendation X.1252 -- Cyberspace security -- Identity management -- Baseline identity management terms and definitions,” November 2010.</span><span>)</span></a> [X.1252] を参照すること.
</p>
<a name="Overview"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.1.3"></a><h3>1.3.
Overview</h3>
<p>
OpenID Connect プロトコルは, おおまかに言って以下のステップに従う.
</p>
<p>
</p>
<ol class="text">
<li>
RP (Client) が OpenID Provider (OP) にリクエストを送る.
</li>
<li>
OP は End-User を認証し, 認可を受ける.
</li>
<li>
OP は ID Token および (通常は) Access Token を返す.
</li>
<li>
RP は Access Token を添えて UserInfo Endpoint にリクエストを送る.
</li>
<li>
UserInfo Endpoint は End-User の Claim を返す.
</li>
</ol><p>
</p>
<p>
これら一連のステップを以下に図示する.
</p><div style='display: table; width: 0; margin-left: 3em; margin-right: auto'><pre>
+--------+ +--------+
| | | |
| |---------(1) AuthN Request-------->| |
| | | |
| | +--------+ | |
| | | | | |
| | | End- |<--(2) AuthN & AuthZ-->| |
| | | User | | |
| RP | | | | OP |
| | +--------+ | |
| | | |
| |<--------(3) AuthN Response--------| |
| | | |
| |---------(4) UserInfo Request----->| |
| | | |
| |<--------(5) UserInfo Response-----| |
| | | |
+--------+ +--------+
</pre></div>
<a name="IDToken"></a><br /><hr />
<table summary="layout" cellpadding="0" cellspacing="2" class="TOCbug" align="right"><tr><td class="TOCbug"><a href="#toc"> TOC </a></td></tr></table>
<a name="rfc.section.2"></a><h3>2.
ID Token</h3>
<p>
End-User の認証を可能にするために OpenID Connect が OAuth 2.0 に追加する最大の拡張機能は ID トークンデータ構造である.
ID Token は, ある Client を利用するというコンテキスト中での, Authorization Server による End-User 認証に関する Claim を含んだセキュリティトークンである.
潜在的にはその他の Claim を含む可能性もある.
ID Token は <a class='info' href='#JWT'>JSON Web Token (JWT)<span> (</span><span class='info'>Jones, M., Bradley, J., and N. Sakimura, “JSON Web Token (JWT),” July 2014.</span><span>)</span></a> [JWT] である.
</p>
<p>
OpenID Connect で使用されている全ての OAuth 2.0 のフローで ID Token が利用され, その ID Token には以下の Claim が含まれる.
</p>
<p>
</p>
<blockquote class="text"><dl>
<dt>iss</dt>
<dd>
REQUIRED.
レスポンスを返した Issuer の Issuer Identifier.
<tt>iss</tt> 値は, <tt>https</tt> スキーマで始まる大文字小文字を区別する URL であり, スキーマ, ホスト, そして任意でポート番号とパスを含む. クエリーとフラグメントは含まない.
</dd>
<dt>sub</dt>
<dd>
REQUIRED.
Subject Identifier.
Client に利用される前提で, Issuer のローカルでユニークであり再利用されない End-User の識別子.
(例: <tt>24400320</tt> や <tt>AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4</tt> 等)
この値は ASCII で255文字を超えてはならない (MUST NOT).
<tt>sub</tt> 値は大文字小文字を区別する.