| é ç® | å 容 |
|---|---|
| Workgroup | Web Authorization Protocol |
| Internet-Draft | draft-ietf-oauth-first-party-apps-02 |
| Published | 2025幎10æ20æ¥ |
| Intended Status | Standards Track |
| Expires | 2026幎4æ23æ¥ |
| Authors | A. Parecki | Okta |
| Authors | G. Fletcher | Capital One Financial |
| Authors | P. Kasselman | Defakto Security |
OAuth 2.0 for First-Party Applications
Abstract
ãã®ææžã¯ãAuthorization Challenge Endpoint ãå®çŸ©ããŸããããã¯ããã€ãã£ããªäœéšãçšããŠãŠãŒã¶ãŒããã®èªå¯ãååŸããããã»ã¹ãå¶åŸ¡ããããã¡ãŒã¹ãããŒãã£ã»ã¯ã©ã€ã¢ã³ãããµããŒãããŸãã
å€ãã®å Žåãããã¯ãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã«é©ãããå®å šã«ãã©ãŠã¶ãªãã® OAuth 2.0 äœéšãæäŸã§ããäºæããªãç¶æ³ãé«ãªã¹ã¯ããŸãã¯ãšã©ãŒæ¡ä»¶ã«ãããŠã®ã¿ãã©ãŠã¶ãžå§è²ããŸãã
About This Document
ãã®æ³šèšã¯ãRFC ãšããŠå ¬éããåã«åé€ãããäºå®ã§ãã
ãã®ãã©ããã®ææ°æ¹èšçã¯ãhttps://drafts.oauth.net/oauth-first-party-apps/draft-ietf-oauth-first-party-apps.html ã§åç §ã§ããŸãããã®ææžã®ã¹ããŒã¿ã¹æ å ±ã¯ãhttps://datatracker.ietf.org/doc/draft-ietf-oauth-first-party-apps/ ã§åç §ã§ããŸãã
ãã®ææžã«é¢ããè°è«ã¯ãWeb Authorization Protocol Working Group ã®ã¡ãŒãªã³ã°ãªã¹ãïŒmailto:oauth@ietf.orgïŒã§è¡ãããŸãããã㯠https://mailarchive.ietf.org/arch/browse/oauth/ ã«ã¢ãŒã«ã€ããããŠããŸãã賌èªã¯ https://www.ietf.org/mailman/listinfo/oauth/ ããè¡ããŸãã
ãã®ãã©ããã®ãœãŒã¹ããã³ Issue Tracker ã¯ãhttps://github.com/oauth-wg/oauth-first-party-apps ã§åç §ã§ããŸãã
Status of This Memo
ãã® Internet-Draft ã¯ãBCP 78 ããã³ BCP 79 ã®èŠå®ã«å®å šã«æºæ ããŠæåºãããŠããŸãã
Internet-Drafts ã¯ãInternet Engineering Task ForceïŒIETFïŒã®äœæ¥ææžã§ããä»ã®ã°ã«ãŒããäœæ¥ææžã Internet-Drafts ãšããŠé åžããå Žåãããããšã«æ³šæããŠãã ãããçŸåšã® Internet-Drafts ã®äžèЧã¯ãhttps://datatracker.ietf.org/drafts/current/ ã«ãããŸãã
Internet-Drafts ã¯ãæå€§ 6 ãæéæå¹ãªãã©ããææžã§ããããã€ã§ãæŽæ°ã眮æããŸãã¯ä»ã®ææžã«ãã£ãŠå»æ¢ãããå¯èœæ§ããããŸããInternet-Drafts ãåç §è³æãšããŠäœ¿çšãããããäœæ¥äžïŒwork in progressïŒããšããŠä»¥å€ã«åŒçšãããããããšã¯äžé©åã§ãã
ãã® Internet-Draft 㯠2026幎4æ23æ¥ã«æéåããšãªããŸãã
Copyright Notice
Copyright (c) 2025 IETF Trust ããã³ææžã®èè ãšããŠç¹å®ãããå人ãAll rights reserved.
ãã®ææžã¯ããã®ææžã®å ¬éæ¥ã«æå¹ãªãBCP 78 ããã³ IETF Trust ã®ãIETF ææžã«é¢ããæ³çèŠå®ãïŒhttps://trustee.ietf.org/license-infoïŒã®é©çšãåããŸãããããã®ææžã«ã¯ããã®ææžã«é¢ããããªãã®æš©å©ããã³å¶éãèšèŒãããŠãããããæ³šææ·±ã確èªããŠãã ããããã®ææžããæœåºãããã³ãŒãæ§æèŠçŽ ã¯ãTrust Legal Provisions ã® Section 4.e ã§èª¬æãããŠãã Revised BSD License ã®æèšãå«ããªããã°ãªããããŸã Revised
Table of Contents
- 1. Introduction
-
1.1. äœ¿çšæ¹æ³ãšé©çšå¯èœæ§
-
1.2. ãã®ä»æ§ã®å¶éäºé
-
1.3. ãŠãŒã¶ãŒäœéšã«é¢ããèæ ®äºé
- 2. æ £äŸãšå®çŸ©
- 2.1. çšèª
- 3. ãããã³ã«æŠèŠ
-
3.1. ååã®èªå¯ãªã¯ãšã¹ã
-
3.2. ãªãã¬ãã·ã¥ããŒã¯ã³ã»ãªã¯ãšã¹ã
-
3.3. ãªãœãŒã¹ã»ãªã¯ãšã¹ã
- 4. ãããã³ã«ã»ãšã³ããã€ã³ã
-
4.1. èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ã
-
4.2. ããŒã¯ã³ã»ãšã³ããã€ã³ã
- 5. èªå¯éå§
-
5.1. èªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ã
-
5.2. èªå¯ãã£ã¬ã³ãžã»ã¬ã¹ãã³ã¹
-
5.2.1. èªå¯ã³ãŒãã»ã¬ã¹ãã³ã¹
-
5.2.2. ãšã©ãŒã»ã¬ã¹ãã³ã¹
-
-
5.3. äžéãªã¯ãšã¹ã
- 5.3.1. èªå¯ã»ãã·ã§ã³
- 6. ããŒã¯ã³ã»ãªã¯ãšã¹ã
-
6.1. ããŒã¯ã³ã»ãšã³ããã€ã³ãã®æåã¬ã¹ãã³ã¹
-
6.2. ããŒã¯ã³ã»ãšã³ããã€ã³ãã®ãšã©ãŒã»ã¬ã¹ãã³ã¹
- 7. ãªãœãŒã¹ãµãŒããŒã®ãšã©ãŒã»ã¬ã¹ãã³ã¹
- 8. èªå¯ãµãŒããŒã®ã¡ã¿ããŒã¿
- 9. ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
-
9.1. ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³
-
9.2. ãã£ãã·ã³ã°
-
9.3. ã¯ã¬ãã³ã·ã£ã«ã»ã¹ã¿ããã£ã³ã°æ»æ
-
9.4. ã¯ã©ã€ã¢ã³ãèªèšŒ
-
9.5. éä¿¡è å¶çŽä»ãããŒã¯ã³
-
9.5.1. DPoPïŒææã®èšŒæã®æç€º
-
9.5.2. ãã®ä»ã®ææèšŒæã¡ã«ããºã
-
-
9.6. èªå¯ã»ãã·ã§ã³
-
9.6.1. èªå¯ã»ãã·ã§ã³ã® DPoP ãã€ã³ãã£ã³ã°
-
9.6.2. èªå¯ã»ãã·ã§ã³ã®åç¶æé
-
-
9.7. è€æ°ã®ã¢ããªã±ãŒã·ã§ã³
-
9.7.1. ãŠãŒã¶ãŒäœéšãªã¹ã¯
-
9.7.2. æè¡çãªã¹ã¯
-
9.7.3. ç·©åç
-
-
9.8. ã·ã³ã°ã«ããŒãžã»ã¢ããªã±ãŒã·ã§ã³
- 10. IANA ã«é¢ããèæ ®äºé
-
10.1. OAuth ãã©ã¡ãŒã¿ç»é²
-
10.2. OAuth ãµãŒããŒã»ã¡ã¿ããŒã¿ç»é²
- 11. References
-
11.1. èŠç¯çåç §
-
11.2. åèåç §
-
Appendix A. äŸã®ãŠãŒã¶ãŒäœéš
-
A.1. ãã¹ããŒ
-
A.2. èªå¯ãµãŒããŒãžã®ãªãã€ã¬ã¯ã
-
A.3. ãã¹ã¯ãŒãã¬ã¹ãªã¯ã³ã¿ã€ã ãã¹ã¯ãŒãïŒOTPïŒ
-
A.4. Eã¡ãŒã«ç¢ºèªã³ãŒã
-
A.5. ã¢ãã€ã«ç¢ºèªã³ãŒã
-
A.6. 1é±éåŸã« OTP ã䜿ã£ãŠã¢ããªã«åèªèšŒãã
-
A.7. ç¢ºèª SMS ãçšããã¹ãããã¢ããèªèšŒ
-
A.8. ç»é²
-
Appendix B. å®è£ äŸ
-
B.1. èªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãã»ãã©ã¡ãŒã¿
-
B.2. èªå¯ãã£ã¬ã³ãžã»ã¬ã¹ãã³ã¹ã»ãã©ã¡ãŒã¿
-
B.3. äŸã®ã·ãŒã±ã³ã¹
-
Appendix C. èšèšç®æš
-
Appendix D. ææžå±¥æŽ
-
Acknowledgments
-
Authors' Addresses
1. Introduction
ãã®ææžãOAuth for First-Party AppsïŒFiPAïŒãã¯ãOAuth 2.0 Authorization
FrameworkïŒRFC6749ïŒããæ°ãããšã³ããã€ã³ã authorization_challenge_endpoint
ã«ããæ¡åŒµãããã€ãã£ããªäœéšãçšããŠãŠãŒã¶ãŒããèªå¯ãååŸããããã»ã¹ãå¶åŸ¡ããããã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ããµããŒãããŸãã
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒããä»»æã®åææ å ±ãåéãããã®æ å ±ã«å ããŠã¯ã©ã€ã¢ã³ãã®ãªã¯ãšã¹ãã«é¢ããæ å ±ã Authorization Challenge Endpoint ã« POST ããå¿çãšããŠèªå¯ã³ãŒããŸãã¯ãšã©ãŒã³ãŒãã®ãããããåãåããŸãããšã©ãŒã³ãŒãã¯ãã¯ã©ã€ã¢ã³ããè¿œå æ å ±ãåŸãããã«ãŠãŒã¶ãŒãžã®ããã³ãããç¶ç¶ã§ããããšã瀺ãå Žåãããã°ããŠãŒã¶ãŒããã©ãŠã¶ã§ãããŒãå®äºããããã«ã¯ã©ã€ã¢ã³ãããã©ãŠã¶ãèµ·åããå¿ èŠãããããšã瀺ãå ŽåããããŸãã
Authorization Challenge Endpoint ã¯ãèªå¯ãšã³ããã€ã³ããžã®ãªãã€ã¬ã¯ããŸãã¯ãã©ãŠã¶èµ·åã®ä»£ããã« OAuth ãããŒãéå§ããããã«äœ¿çšãããŸãã
ãªãã€ã¬ã¯ãããŒã¹ã® Authorization Code ã°ã©ã³ããçšããå®å šå§ä»»åã¢ãããŒããäžè¬ã«æãŸããäžæ¹ã§ããã®ãã©ããã¯ã¯ã©ã€ã¢ã³ãããŠãŒã¶ãŒãšçŽæ¥ããåãã§ããã¡ã«ããºã ãæäŸããŸããããã¯ãïŒéåžžãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ãããŠããã§ããããã«ïŒèªå¯ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®éã«é«åºŠãªä¿¡é Œãå¿ èŠãšããŸãããã€ãã£ãã®ã¢ãã€ã«ãŸãã¯ãã¹ã¯ãããã»ã¢ããªã±ãŒã·ã§ã³ãªã©ããªãã€ã¬ã¯ãããŒã¹ã®ã¢ãããŒãã«ãŠãŒã¶ããªãã£äžã®æžå¿µãããå Žåã«ã®ã¿æ€èšãããã¹ãã§ãã
ãã®ãã©ããã¯ãŸããããŒã¯ã³ã¬ã¹ãã³ã¹ïŒéåžžã¯ãªãã¬ãã·ã¥ããŒã¯ã³ã»ãªã¯ãšã¹ããžã®å¿çã§äœ¿çšãããïŒããã³ãªãœãŒã¹ãµãŒããŒã®ã¬ã¹ãã³ã¹ãæ¡åŒµããèªå¯ãµãŒããŒãŸãã¯ãªãœãŒã¹ãµãŒããŒããã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒã«å¯ŸããŠèªå¯ãåèŠæ±ãã¹ãã§ããããšã瀺ããããã«ããŸããããã«ã¯ãRFC9470 ã§å®çŸ©ããããã©ã¡ãŒã¿ãå«ããããšã«ãããã¹ãããã¢ããèªèšŒã®èŠæ±ãå«ããããšãã§ããŸãã
1.1. Usage and Applicability
ãã®ä»æ§ã¯ããã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠã®ã¿äœ¿çšãããªããã°ãªããŸããïŒMUSTïŒãããã§ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ãšã¯ãèªå¯ãµãŒããŒãšã¢ããªã±ãŒã·ã§ã³ãåäžã®äž»äœã«ãã£ãŠç®¡çããããŠãŒã¶ãŒãäž¡è ãåäžäž»äœãšããŠçè§£ããŠããå ŽåãæããŸãã
ãã®ä»æ§ã¯ãµãŒãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠäœ¿çšãããŠã¯ãªããŸããïŒMUST NOTïŒããŸãèªå¯ãµãŒããŒã¯ããµãŒãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ãã䜿çšã鲿¢ããããã®æªçœ®ãè¬ããã¹ãã§ãïŒSHOULDïŒãïŒäŸïŒç¹å®ã®ã¯ã©ã€ã¢ã³ã ID ã«å¯ŸããŠã®ã¿ãã®ã°ã©ã³ããæå¹åããå¯èœãªå Žåã«ã¯ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªãèªèšŒããããã®æªçœ®ãè¬ãããäŸãã°ãI-D.ietf-oauth-attestation-based-client-auth ã§èª¬æãããŠããã¢ããªã®ã¢ãã¹ããŒã·ã§ã³ã䜿çšããããªã©ãïŒ
ããã§èª¬æãã以å€ã®ã·ããªãªã§ãã®ä»æ§ã䜿çšãããšããŠãŒã¶ãŒããã³ãµãŒãã¹æäŸè ã«ãšã£ãŠæå³ããªãã»ãã¥ãªãã£ããã³ãã©ã€ãã·ãŒã®åé¡ã«ã€ãªãããŸãã
ãã®ä»æ§ã¯ããã¡ãŒã¹ãããŒãã£ã®ãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ïŒã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã³ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ãå«ãïŒã§äœ¿çšãããããèšèšãããŠããŸãã
è€æ°ã®ã¢ããªãæäŸããŠããããŠãŒã¶ãŒãåäžããã€ã¹äžã§è€æ°ã®ã¢ããªã䜿çšããããšãæ³å®ããŠããå Žåãåã¢ããªããã®ä»æ§ãå®è£ ããããŸãã¯ãã®ä»æ§ãå®è£ ãã SDK ã䜿çšãã以å€ã«ãã¢ããªéã§ãŠãŒã¶ãŒã®ãã°ã€ã³ãå ±æããããè¯ãæ¹æ³ããããããããŸãããäŸãã° OpenID.Native-SSO ã¯ããŠãŒã¶ãŒãšã®äžåã®å¯Ÿè©±ãªãã«ãããã¢ããªãå¥ã®ã¢ããªã®ããŒã¯ã³ã亀æããããšã§æ°ããããŒã¯ã³ãååŸããããã®ã¡ã«ããºã ãæäŸããŸãã詳现㯠Section 9.7 ãåç §ããŠãã ããã
1.2. Limitations of this specification
ãã®ä»æ§ã®ã¹ã³ãŒãã¯ããã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«éå®ãããŸããSection 9 ã®å šäœã確èªããŠãã ããããŸããè€æ°ã®ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ããµããŒãããå Žåã¯ãSection 9.7 ã確èªããŠãã ããã
ãã®ãã©ããã¯ãã€ãã£ã OAuth äœéšã®ããã®æ çµã¿ãæäŸããŸãããåå®è£ ã¯ãèªå¯ãµãŒããŒãšããåããã OAuth ã¯ã©ã€ã¢ã³ãã«æåŸ ããå ·äœçãªæ¯ãèããå®çŸ©ããå¿ èŠããããŸãããã®ããã«è©³çްãæç¢ºã«å®çŸ©ãããªãããšã¯ãéåžžã¯çžäºéçšæ§ã®äœäžã«ã€ãªãããŸããããã®å Žåã¯èš±å®¹ãããŸãããšããã®ãããã®ä»æ§ã¯ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ã®ã¿é©çšããããããå¯çµåãªç°å¢ã§å±éãããããšãæå³ããŠããããã§ãã
1.3. User Experience Considerations
ç°ãªãèªèšŒãã£ã¬ã³ãžã®ãŠãŒã¶ãŒäœéšäžã®åœ±é¿ããªãã³ã«ãŠãŒã¶ãŒãèªå¯ã詊ã¿ãŠããããã€ã¹ã«ã€ããŠèæ ®ããããšãéèŠã§ãã
äŸãã°ãå ¥åå¶çŽã®ããããã€ã¹ïŒäŸïŒTVïŒã§ãŠãŒã¶ãŒã«ãã¹ã¯ãŒãå ¥åãæ±ãããšãå€ãã®ãŠãŒã¶ãŒæ©æŠãçããšåæã«ãéšå±ã«ããä»è ãžãŠãŒã¶ãŒã®ãã¹ã¯ãŒããæãããšã«ããªããŸããäžæ¹ã§ãäŸãã° TV ãªã¢ã³ã³äžã®æçŽãªãŒããŒãçšã㊠FIDO2 ã®ãã¹ããŒèªèšŒãå¯èœã«ããããšãã£ããã£ã¬ã³ãžææ³ãçšããããšã¯è¯ãäœéšãšãªãã§ãããã
èªå¯ãµãŒããŒã¯ãèªèšŒãã£ã¬ã³ãžãæç€ºããéã«ãŠãŒã¶ãŒã®ããã€ã¹ãèæ ®ããã¹ãã§ãïŒSHOULDïŒããŸãéçºè ã¯ããã®ä»æ§ãå®è£ ããããã€ã¹ããŠãŒã¶ãŒã«ãšã£ãŠè¯ãäœéšãæäŸã§ãããã©ãããèæ ®ããã¹ãã§ãïŒSHOULDïŒããŠãŒã¶ãŒã®ããã€ã¹ãšèªèšŒãã£ã¬ã³ãžææ³ã®çµã¿åããããå€ãã®æ©æŠãŸãã¯ã»ãã¥ãªãã£ãªã¹ã¯ãçãå ŽåãOAuth 2.0 Device Authorization GrantïŒRFC8628ïŒã®ãããªä»æ§ã®äœ¿çšãæ€èšããŠãã ãããOAuth 2.0 Device Authorization GrantïŒRFC8628ïŒã®ããã«ã¯ãã¹ããã€ã¹ã®èªå¯ã¡ã«ããºã ãçšããå Žåã¯ãCross-Device Flows: Security Best Current PracticeïŒI-D.ietf-oauth-cross-device-securityïŒã§ç¹å®ãããã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹ãåãå ¥ããŠãã ããã
2. Conventions and Definitions
ãã®ææžäžã®ããŒã¯ãŒããMUSTããMUST NOTããREQUIREDããSHALLããSHALL NOTããSHOULDããSHOULD NOTããRECOMMENDEDããNOT RECOMMENDEDããMAYããOPTIONALãã¯ãBCP 14ïŒRFC2119ïŒïŒRFC8174ïŒã§èª¬æãããŠãããšããã«è§£éãããŸãããã ããããã«ç€ºãããã«ããããããã¹ãŠå€§æåã§çŸããå Žåããã€ãã®å Žåã«éããŸãã
2.1. Terminology
ãã®ä»æ§ã¯ãRFC6749 ã«ããå®çŸ©ãããçšèªãAccess TokenããAuthorization CodeããAuthorization EndpointããAuthorization ServerïŒASïŒããClientããClient AuthenticationããClient IdentifierããClient SecretããGrant TypeããProtected ResourceããRedirection URIããRefresh TokenããResource OwnerããResource ServerïŒRSïŒããToken Endpointãã䜿çšããŸãã
TODO: RFC6749 ãžã®åç §ã OAuth 2.1 ã«çœ®ãæãã
3. Protocol Overview
ãã®ä»æ§ã OAuth ã·ã¹ãã ã®ããŸããŸãªéšåãæ¡åŒµããäž»èŠãªæ¹æ³ã¯ 3 ã€ãããŸãã
3.1. Initial Authorization Request
+-------------------+
| Authorization |
(B)Authorization | Server |
+----------+ Challenge Request |+-----------------+|
(A)Client+---| First- |---------------------->|| Authorization ||
Starts| | Party | || Challenge ||
Flow +-->| Client |<----------------------|| Endpoint ||
| | (C)Authorization || ||
| | Error Response || ||
| | : || ||
| | : || ||
| | (D)Authorization || ||
| | Challenge Request || ||
| |---------------------->|| ||
| | || ||
| |<----------------------|| ||
| | (E) Authorization |+-----------------+|
| | Code Response | |
| | | |
| | | |
| | | |
| | (F) Token | |
| | Request |+-----------------+|
| |---------------------->|| Token ||
| | || Endpoint ||
| |<----------------------|| ||
| | (G) Access Token |+-----------------+|
| | | |
+----------+ +-------------------+
å³: ãã¡ãŒã¹ãããŒãã£ã»ã¯ã©ã€ã¢ã³ãã®èªå¯ã³ãŒãã»ãªã¯ãšã¹ã
-
(A) ãã¡ãŒã¹ãããŒãã£ã»ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒã«ããµã€ã³ã€ã³ããã¿ã³ãæç€ºããããŸãã¯ãŠãŒã¶ãŒããã¡ãŒã«ã¢ãã¬ã¹ããŠãŒã¶ãŒåãªã©ã®æ å ±ãåéããããšã«ããããããŒãéå§ããŸãã
-
(B) ã¯ã©ã€ã¢ã³ãã¯ãAuthorization Challenge Endpoint ã«å¯Ÿã㊠POST ãªã¯ãšã¹ããè¡ãããšã«ããèªå¯ãªã¯ãšã¹ããéå§ããŸããå¿ èŠã«å¿ããŠããŠãŒã¶ãŒããåéããæ å ±ïŒäŸïŒã¡ãŒã«ã¢ãã¬ã¹ãŸãã¯ãŠãŒã¶ãŒåïŒãå«ããŸãã
-
(C) èªå¯ãµãŒããŒã¯ãAuthorization Challenge Endpoint ã«æäŸãããæ å ±ãèªå¯ãä»äžããã®ã«ååãã©ããã倿ããèªå¯ã³ãŒãã§å¿çãããããŸãã¯ãšã©ãŒã§å¿çããŸãããã®äŸã§ã¯ãè¿œå æ å ±ãå¿ èŠã§ãããšå€æãããšã©ãŒã§å¿çããŸãããã®ãšã©ãŒã«ã¯ã次ã«åéãã¹ãæ å ±ã«ã€ããŠã¯ã©ã€ã¢ã³ããå°ãããã®è¿œå æ å ±ãå«ãŸããå ŽåããããŸããæ å ±ãåéã㊠Authorization Challenge Endpoint ã«éä¿¡ãããã®åŸãšã©ãŒãŸãã¯èªå¯ã³ãŒããåãåããšãããã®ãã¿ãŒã³ã¯ãæ°åç¹°ãè¿ãããå¯èœæ§ããããŸãã
-
(D) ã¯ã©ã€ã¢ã³ãã¯è¿œå æ å ±ïŒäŸïŒçœ²åæžã¿ã®ãã¹ããŒã»ãã£ã¬ã³ãžããŸãã¯ã¡ãŒã«ããã®ã¯ã³ã¿ã€ã ã³ãŒãïŒãåéããAuthorization Challenge Endpoint ã«å¯Ÿã㊠POST ãªã¯ãšã¹ããè¡ããŸãã
-
(E) Authorization Challenge Endpoint ã¯èªå¯ã³ãŒããè¿ããŸãã
-
(F) ã¯ã©ã€ã¢ã³ãã¯ãã¹ããã (E) ã§åãåã£ãèªå¯ã³ãŒããéä¿¡ããToken Endpoint ããããŒã¯ã³ãååŸããŸãã
-
(G) èªå¯ãµãŒããŒã¯ Token Endpoint ãã Access Token ãè¿ããŸãã
3.2. Refresh Token Request
ã¯ã©ã€ã¢ã³ãããªãã¬ãã·ã¥ããŒã¯ã³ã䜿çšããŠæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããéãèªå¯ãµãŒããŒã¯ããŠãŒã¶ãŒã®åèªèšŒãå¿ èŠã§ããããšã瀺ãããã«ããšã©ãŒã§å¿çããŠãããïŒMAYïŒã§ãã
3.3. Resource Request
ãªãœãŒã¹ãµãŒããŒã«å¯ŸããŠãªãœãŒã¹ãªã¯ãšã¹ããè¡ãéããªãœãŒã¹ãµãŒããŒã¯ OAuth 2.0 Step-Up Authentication Challenge ProtocolïŒRFC9470ïŒã«åŸã£ãŠãšã©ãŒã§å¿çããŠãããïŒMAYïŒããŠãŒã¶ãŒã®åèªèšŒãå¿ èŠã§ããããšã瀺ããŸãã
4. Protocol Endpoints
4.1. Authorization Challenge Endpoint
èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã¯ããã®ä»æ§ã«ããå®çŸ©ãããæ°ãããšã³ããã€ã³ãã§ããããã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ãèªå¯ã³ãŒããååŸããããã«äœ¿çšããŸãã
èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã¯ãèªå¯ãµãŒããŒäžã® HTTP API
ã§ãããapplication/x-www-form-urlencoded 圢åŒãçšã㊠HTTP
ãªã¯ãšã¹ãã¡ãã»ãŒãžããã£å
ã«ãã©ã¡ãŒã¿ãå«ãã HTTP POST
ãªã¯ãšã¹ããåãä»ããŸãããã®åœ¢åŒã¯ãRFC6749 ã® Appendix B
ã«èšèŒãããŠãããšãããUTF-8
ã®æåãšã³ã³ãŒãã£ã³ã°ãæã¡ãŸããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã® URL ã¯
"https" ã¹ããŒã ã䜿çšããªããã°ãªããŸããïŒMUSTïŒã
èªå¯ãµãŒããŒã Token Endpoint ã«ãããŠãã®ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠã¯ã©ã€ã¢ã³ãèªèšŒãèŠæ±ããå Žåãèªå¯ãµãŒããŒã¯ Authorization Challenge Endpoint ã«ãããŠããã®ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠã¯ã©ã€ã¢ã³ãèªèšŒãèŠæ±ããªããã°ãªããŸããïŒMUSTïŒã詳现㯠Section 9.4 ãåç §ããŠãã ããã
ãã®ä»æ§ããµããŒãããèªå¯ãµãŒããŒã¯ãSection 8
ã§å®çŸ©ããã authorization_challenge_endpoint
ãã©ã¡ãŒã¿ã䜿çšããŠãèªå¯ãµãŒããŒã»ã¡ã¿ããŒã¿ææžïŒRFC8414ïŒã«èªèº«ã®èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã®
URL ãå«ããã¹ãã§ãïŒSHOULDïŒã
ãã®ãšã³ããã€ã³ãã¯ãèªå¯ãšã³ããã€ã³ãåãã« RFC6749
ã§å®çŸ©ãããèªå¯ãªã¯ãšã¹ãã»ãã©ã¡ãŒã¿ã«å ããèªå¯ãšã³ããã€ã³ãåãã«å®çŸ©ããããã¹ãŠã®é©çšå¯èœãªæ¡åŒµãåãä»ããŸãããã®ãããªæ¡åŒµã®äŸãšããŠãProof
Key for Code ExchangeïŒPKCEïŒïŒRFC7636ïŒãResource IndicatorsïŒRFC8707ïŒãããã³
OpenID
ConnectïŒOpenIDïŒããããŸããããã€ãã®æ¡åŒµãã©ã¡ãŒã¿ã¯ãŠã§ãæèã§ã¯æå³ãæã€äžæ¹ã§ããã€ãã£ããªã¡ã«ããºã ã§ã¯æå³ãæããªãããšã«æ³šæããããšãéèŠã§ãïŒäŸïŒresponse_mode=queryïŒãããæ¡åŒµãããã®ãŠãŒã¹ã±ãŒã¹ã§æå³ãæããªããã©ã¡ãŒã¿ãå®çŸ©ããŠããå Žåã«
AS ãäœããããã«ã€ããŠã¯ã¹ã³ãŒãå€ã§ãã
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒããåéããæ å ±ïŒäŸïŒçœ²åæžã¿ãã¹ããŒã»ãã£ã¬ã³ãžãŸã㯠MFA ã³ãŒãïŒãå«ããŠãå«ããªããŠããèªå¯ãããŒãéå§ããŸãã
èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã®ã¬ã¹ãã³ã¹ã¯ãèªå¯ã³ãŒããŸãã¯ãšã©ãŒã³ãŒãã®ããããã§ããããŸãã¯ã©ã€ã¢ã³ããåŸç¶ã®ãªã¯ãšã¹ãã§äœ¿çšãã
auth_session ãå«ãå ŽåããããŸãã
ã¯ã©ã€ã¢ã³ããšèªå¯ãµãŒããŒã®éã®ãããªãéä¿¡ã¯ãAuthorization Challenge Endpoint ãŸãã¯èªå¯ãµãŒããŒäžã®ãã®ä»ã®ãããã©ã€ãšã¿ãªãªãšã³ããã€ã³ãã§çºçããŠãããïŒMAYïŒã§ãã
4.2. Token endpoint
ããŒã¯ã³ã»ãšã³ããã€ã³ãã¯ãOAuth 2.0ïŒRFC6749ïŒã® Section 3.2 ã§èª¬æãããŠãããšãããã¯ã©ã€ã¢ã³ãããã®èªå¯ã°ã©ã³ããŸãã¯ãªãã¬ãã·ã¥ããŒã¯ã³ãæç€ºããŠã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããããã«äœ¿çšãããŸãã
ãã®ä»æ§ã¯ãèªå¯ãµãŒããŒããŠãŒã¶ãŒã«å¯Ÿãã远å ã®èªèšŒãå¿ èŠã§ããããšã瀺ããããã«ãããããããŒã¯ã³ã»ãšã³ããã€ã³ãã®ã¬ã¹ãã³ã¹ãæ¡åŒµããŸãã
5. Authorization Initiation
ã¯ã©ã€ã¢ã³ãã¯ããŸããŠãŒã¶ãŒã«å¯ŸããŠãŠãŒã¶ãŒèå¥åãŸãã¯ãã®ä»ã®ã¢ã«ãŠã³ãæ å ±ã®å ¥åãä¿ãããšã§ãèªå¯ãããŒãéå§ãããå ŽåããããŸããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã¯ããã®ãã°ã€ã³ãã³ããåéããæ¬¡ã®ã¹ãããïŒMFA ãããŒãè¡ãã®ããOAuth ã®ãªãã€ã¬ã¯ãããŒã¹ã®ãããŒãå®è¡ããã®ãïŒãžã¯ã©ã€ã¢ã³ããèªå°ããããã®æ°ãããšã³ããã€ã³ãã§ãã
ãã®ä»æ§ã®ã»ãã¥ãªãã£ãç¶æããããã«ãèªå¯ãµãŒããŒã¯ãèªèšŒãããŒãç¶è¡ããåã«ã¯ã©ã€ã¢ã³ãã®ããã¡ãŒã¹ãããŒãã£æ§ããæ€èšŒããªããã°ãªããŸããïŒMUSTïŒã远å ã®èæ ®äºé ã«ã€ããŠã¯ Section 9.1 ãåç §ããŠãã ããã
5.1. Authorization Challenge Request
ã¯ã©ã€ã¢ã³ãã¯ãHTTP ãªã¯ãšã¹ãããã£ã«ãããŠãUTF-8
ã®æåãšã³ã³ãŒãã£ã³ã°ãæã€ application/x-www-form-urlencoded
圢åŒã䜿çšãã以äžã®ãã©ã¡ãŒã¿ã«å ããŠä»»æã®æ¡åŒµããã®ãã©ã¡ãŒã¿ã远å ããããšã«ãããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžãªã¯ãšã¹ããè¡ããŸãã
"client_id":
ã¯ã©ã€ã¢ã³ããèªå¯ãµãŒããŒã«å¯ŸããŠèªèšŒãè¡ã£ãŠããããã〠auth_session
ãå«ãŸããŠããªãå Žåã« REQUIRED ã§ãã
"scope":
OPTIONALãRFC6749 ã§å®çŸ©ããã OAuth ã¹ã³ãŒãã§ãã
"auth_session":
OPTIONALãã¯ã©ã€ã¢ã³ãã以åã« auth session ãååŸããŠããå ŽåïŒSection 5.3.1 ã§èª¬æïŒã
"code_challenge":
OPTIONALãRFC7636 ã§å®çŸ©ããã code challenge ã§ãã詳现㯠Section 5.2.2.1 ãåç §ããŠãã ããã
"code_challenge_method":
OPTIONALãRFC7636 ã§å®çŸ©ããã code challenge method ã§ãã詳现㯠Section 5.2.2.1 ãåç §ããŠãã ããã
ãã®ãšã³ããã€ã³ãã§äœ¿çšããã远å ã®ãã©ã¡ãŒã¿ã¯ãç¹å®ã®å®è£ ããã³ãã®ä»æ§ãžã®æ¡åŒµã«ãã£ãŠå®çŸ©ãããŠãããïŒMAYïŒã§ãã
äŸãã°ããŠãŒã¶ãŒã®é»è©±çªå·ãäžããŠãããŒãéå§ããããã«ãã¯ã©ã€ã¢ã³ãã¯æ¬¡ã®ãªã¯ãšã¹ããè¡ããŸããæ¹è¡ã¯èª¬æã®ããã«ã®ã¿ç€ºãããŠããŸãã
POST /authorize-challenge HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
login_hint=%2B1-310-123-4567&scope=profile &client_id=bb16c14c73415
5.2. Authorization Challenge Response
èªå¯ãµãŒããŒã¯ããããŸã§ã«æäŸãããæ å ±ãèªå¯ã³ãŒããçºè¡ããã®ã«ååãã©ããã倿ããååã§ããã°èªå¯ã³ãŒãã§å¿çããŸããæ å ±ãèªå¯ã³ãŒããçºè¡ããã®ã«ååã§ãªãå Žåãèªå¯ãµãŒããŒã¯ãšã©ãŒã¬ã¹ãã³ã¹ã§å¿çããªããã°ãªããŸããïŒMUSTïŒã
5.2.1. Authorization Code Response
èªå¯ãµãŒããŒã¯ãRFC8259 ã§å®çŸ©ããã application/json ã¡ãã£ã¢ã¿ã€ãã䜿çšããŠ
HTTP ã¬ã¹ãã³ã¹ã»ã³ã³ãã³ããäœæãã以äžã®ãã©ã¡ãŒã¿ãš HTTP
200ïŒOKïŒã¹ããŒã¿ã¹ã³ãŒãã«ããèªå¯ã³ãŒããçºè¡ããŸãã
"authorization_code":
REQUIREDãèªå¯ãµãŒããŒã«ãã£ãŠçºè¡ãããèªå¯ã³ãŒãã§ãã
äŸ:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{ "authorization_code": "uY29tL2F1dGhlbnRpY" }
5.2.2. Error Response
ãªã¯ãšã¹ãã«ç¡å¹ãªãã©ã¡ãŒã¿ãŸãã¯äžæ£ãªããŒã¿ãå«ãŸããå ŽåããŸãã¯èªå¯ãµãŒããŒããŠãŒã¶ãŒãšçŽæ¥ããåããããå Žåãèªå¯ãµãŒããŒã¯ïŒä»¥äžã§å¥éæå®ãããªãéãïŒHTTP 400ïŒBad RequestïŒã¹ããŒã¿ã¹ã³ãŒãã§å¿çããã¬ã¹ãã³ã¹ã«ä»¥äžã®ãã©ã¡ãŒã¿ãå«ããŸãã
"error":
REQUIREDã以äžã®ããããã®åäžã® ASCIIïŒUSASCIIïŒãšã©ãŒã³ãŒãã§ãã
"invalid_request":
ãªã¯ãšã¹ãã«å¿ é ãã©ã¡ãŒã¿ãæ¬ ããŠããããµããŒããããªããã©ã¡ãŒã¿å€ãå«ãŸããããã©ã¡ãŒã¿ãéè€ããŠãããè€æ°ã®ã¯ã¬ãã³ã·ã£ã«ãå«ãŸããŠãããã¯ã©ã€ã¢ã³ãèªèšŒã«è€æ°ã®ã¡ã«ããºã ãçšããããŠããããŸãã¯ãã®ä»ã®çç±ã§äžæ£åœ¢åŒã§ãã
"invalid_client":
ã¯ã©ã€ã¢ã³ãèªèšŒã«å€±æããŸããïŒäŸïŒäžæãªã¯ã©ã€ã¢ã³ããã¯ã©ã€ã¢ã³ãèªèšŒãå«ãŸããŠããªãããŸãã¯ãµããŒããããªãèªèšŒæ¹åŒïŒãèªå¯ãµãŒããŒã¯ãã©ã®
HTTP èªèšŒã¹ããŒã ããµããŒããããŠãããã瀺ãããã«ãHTTP
401ïŒUnauthorizedïŒã¹ããŒã¿ã¹ã³ãŒããè¿ããŠãããïŒMAYïŒã§ããã¯ã©ã€ã¢ã³ãã
Authorization
ãªã¯ãšã¹ãããããã£ãŒã«ããä»ããŠèªèšŒã詊ã¿ãå Žåãèªå¯ãµãŒããŒã¯ HTTP
401ïŒUnauthorizedïŒã¹ããŒã¿ã¹ã³ãŒãã§å¿çããã¯ã©ã€ã¢ã³ãã䜿çšããèªèšŒã¹ããŒã ã«äžèŽãã
WWW-Authenticate ã¬ã¹ãã³ã¹ããããã£ãŒã«ããå«ããªããã°ãªããŸããïŒMUSTïŒã
"unauthorized_client":
èªèšŒæžã¿ã®ã¯ã©ã€ã¢ã³ããããã®ãšã³ããã€ã³ãã®äœ¿çšãèš±å¯ãããŠããŸããã
"invalid_session":
æäŸããã auth_session
ãç¡å¹ãæéåãã倱广žã¿ããŸãã¯ãã®ä»ã®çç±ã§ç¡å¹ã§ãã
"invalid_scope":
èŠæ±ãããã¹ã³ãŒããç¡å¹ãäžæãäžæ£åœ¢åŒããŸãã¯ãªãœãŒã¹ãªãŒããŒã«ããä»äžãããã¹ã³ãŒããè¶ ããŠããŸãã
"insufficient_authorization":
æç€ºãããèªå¯ãäžååã§ãããèªå¯ãµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠèªå¯ãå®äºããããã®è¿œå ã¹ããããåãããèŠæ±ããŠããŸãã
"redirect_to_web":
ãªã¯ãšã¹ãã¯ããŠãŒã¶ãŒãšã®ãããªãçŽæ¥çãªããåãã«ãã£ãŠã¯æºããããšãã§ããŸããã代ããã«ãã¯ã©ã€ã¢ã³ãã¯æ°ããèªå¯ã³ãŒãã»ãããŒãéå§ãããŠãŒã¶ãŒããŠã§ããã©ãŠã¶å ã§èªå¯ãµãŒããŒãšããåãã§ããããã«ãã¹ãã§ãã詳现㯠Section 5.2.2.1 ãåç §ããŠãã ããã
error ãã©ã¡ãŒã¿ã®å€ã¯ãéå %x20-21 / %x23-5B / %x5D-7E
ã®å€ã«ããæåãå«ãã§ã¯ãªããŸããïŒMUST NOTïŒã
èªå¯ãµãŒããŒã¯ãèªå¯ãµãŒããŒã®èŠä»¶ã«åºã¥ããŠããããã®ãšã©ãŒã³ãŒããã«ã¹ã¿ã ã¡ãã»ãŒãžã§æ¡åŒµããŠãããïŒMAYïŒã§ãã
"error_description":
OPTIONALãçºçãããšã©ãŒã®çè§£ãå©ããããã«ãã¯ã©ã€ã¢ã³ãéçºè
ãæ¯æŽããè¿œå æ
å ±ãæäŸããã人éãèªãã
ASCIIïŒUSASCIIïŒããã¹ãã§ããerror_description ãã©ã¡ãŒã¿ã®å€ã¯ãéå %x20-21
/ %x23-5B / %x5D-7E ã®å€ã«ããæåãå«ãã§ã¯ãªããŸããïŒMUST NOTïŒã
"error_uri":
OPTIONALããšã©ãŒã«é¢ããæ
å ±ãå«ãã人éãèªãããŠã§ãããŒãžãèå¥ãã URI
ã§ããããã¯ãã¯ã©ã€ã¢ã³ãéçºè
ã«ãšã©ãŒã«é¢ããè¿œå æ
å ±ãæäŸããããã«äœ¿çšãããŸããerror_uri
ãã©ã¡ãŒã¿ã®å€ã¯ URI-reference
æ§æã«é©åããªããã°ãªããïŒMUSTïŒããããã£ãŠéå %x21 / %x23-5B / %x5D-7E
ã®å€ã«ããæåãå«ãã§ã¯ãªããŸããïŒMUST NOTïŒã
"auth_session":
OPTIONALãauth session
ã«ãããèªå¯ãµãŒããŒã¯ããã®ã¯ã©ã€ã¢ã³ãã«ããåŸç¶ãªã¯ãšã¹ãããé²è¡äžã®èªå¯ãªã¯ãšã¹ãã»ã·ãŒã±ã³ã¹ã«é¢é£ä»ããããšãã§ããŸããã¯ã©ã€ã¢ã³ãã¯ããšã©ãŒã¬ã¹ãã³ã¹ãšãšãã«
auth_session
ãåãåã£ãå Žåãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžã®ãã©ããŒã¢ããã»ãªã¯ãšã¹ãã«
auth_session ãå«ããªããã°ãªããŸããïŒMUSTïŒã
"request_uri":
OPTIONALãRFC9126 ã® Section 2.2 ã§èª¬æããã request URI ã§ãã
"expires_in":
OPTIONALãRFC9126 ã® Section 2.2 ã§èª¬æããããrequest_uri
ã®æå¹æéïŒç§ïŒã§ãã
ãã®ä»æ§ã¯ããŠãŒã¶ãŒãé©åã«èªèšŒããããã«ã¯ã©ã€ã¢ã³ããåããªããã°ãªããªãã¢ã¯ã·ã§ã³ã«é¢é£ããæ°ãããšã©ãŒã³ãŒãããèªå¯ãµãŒããŒãå®çŸ©ããããšãèŠæ±ããŸãããããã®æ°ãããšã©ãŒã³ãŒãã¯ããã®ä»æ§ã®èªå¯ãµãŒããŒå®è£ ã«åºæã§ãããæå³çã«ã¹ã³ãŒãå€ãšãããŠããŸãã
ãããã®ãã©ã¡ãŒã¿ã¯ãRFC7159 ã§å®çŸ©ããã application/json
ã¡ãã£ã¢ã¿ã€ããçšããŠãHTTP
ã¬ã¹ãã³ã¹ã®ã³ã³ãã³ãã«å«ããããŸãããã©ã¡ãŒã¿ã¯ãåãã©ã¡ãŒã¿ãæäžäœã®æ§é ã¬ãã«ã«è¿œå ããããšã§
JSON æ§é ãžçŽååãããŸãããã©ã¡ãŒã¿åãšæååå€ã¯ JSON
æååãšããŠå«ããããŸããæ°å€ã¯ JSON
æ°å€ãšããŠå«ããããŸãããã©ã¡ãŒã¿ã®é åºã¯éèŠã§ã¯ãªããå€ããåŸãŸãã
èªå¯ãµãŒããŒã¯ãå®è£
ã«å¿ããŠã¬ã¹ãã³ã¹ã«è¿œå ã®ãã©ã¡ãŒã¿ãå®çŸ©ããŠãããïŒMAYïŒã§ããèªå¯ãµãŒããŒã¯ãŸããã¬ã¹ãã³ã¹ã
JSON ã§ãã application/<AS-defined>+json
ã«é©åããéãããšã©ãŒã¬ã¹ãã³ã¹ã«å¯ŸããŠããå
·äœçãªã³ã³ãã³ãã¿ã€ããå®çŸ©ããŠãããïŒMAYïŒã§ãã
5.2.2.1. Redirect to Web Error Response
èªå¯ãµãŒããŒã¯ããªã¹ã¯è©äŸ¡ãã¢ããªã±ãŒã·ã§ã³ã§ãµããŒããããŠããªãæ°ããèªèšŒæ¹åŒã®å°å
¥ããŸãã¯ã¢ã«ãŠã³ãå埩ã®ãããªäŸå€ãããŒãåŠçããããã«ããŠãŒã¶ãŒãšçŽæ¥ããåãããããšãéžæããå ŽåããããŸããã¯ã©ã€ã¢ã³ãã«ãã®ãšã©ãŒã瀺ãããã«ãèªå¯ãµãŒããŒã¯ãäžã§å®çŸ©ãã
redirect_to_web ãšã©ãŒã³ãŒããæã€ãšã©ãŒã¬ã¹ãã³ã¹ãè¿ããŸãã
ãã®å Žåãã¯ã©ã€ã¢ã³ã㯠RFC6749 ããã³ RFC7636 ã«åŸã£ãŠãPKCE ãäŒŽãæ°ãã OAuth Authorization Code ãããŒãéå§ããããšãæåŸ ãããŸãã
ã¯ã©ã€ã¢ã³ãããã®ãšã©ãŒã¬ã¹ãã³ã¹ã®çºçé »åºŠãé«ããšèŠèŸŒãå Žåãã¯ã©ã€ã¢ã³ãã¯ååã®èªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãã«
PKCEïŒRFC7636ïŒã® code_challenge
ãå«ããŠãããïŒMAYïŒã§ããããã«ãããèªå¯ãµãŒããŒã¯å®è³ªçã«èªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãã
PARïŒRFC9126ïŒãªã¯ãšã¹ããšããŠæ±ãããšã©ãŒã¬ã¹ãã³ã¹ã«ãã㊠RFC9126
ã§å®çŸ©ããã request_uri ããã³ expires_in
ãè¿ããããã«ãªããŸãããã®åŸãã¯ã©ã€ã¢ã³ã㯠request_uri
å€ã䜿çšããŠãRFC9126 ã® Section 4 ã§å®çŸ©ãããèªå¯ãªã¯ãšã¹ããæ§ç¯ããŸãã
5.3. Intermediate Requests
äžã§èª¬æãã insufficient_authorization
ãšã©ãŒãèªå¯ãµãŒããŒãè¿ããå Žåãããã¯ãã¯ã©ã€ã¢ã³ãããŠãŒã¶ãŒã«å¯ŸããŠèŠæ±ãã¹ãè¿œå æ
å ±ãããããšã瀺ããŠããŸãããããŠã¯ã©ã€ã¢ã³ãã¯ãèªå¯ãªã¯ãšã¹ããæºããããèªå¯ã³ãŒããè¿ããããŸã§ããŠãŒã¶ãŒããæ
å ±ãèŠæ±ãç¶ããèªå¯ãµãŒããŒãžã®ãªã¯ãšã¹ããç¶ç¶ãã¹ãã§ãã
ãããã®äžéãªã¯ãšã¹ãã¯ãã®ä»æ§ã®ã¹ã³ãŒãå€ã§ãããèªå¯ãµãŒããŒã«ãã£ãŠå®çŸ©ãããããšãæåŸ
ãããŸãããããã®ãªã¯ãšã¹ãã®åœ¢åŒã¯ãååã®èªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãã®åœ¢åŒã«é©åããå¿
èŠã¯ãããŸããïŒäŸïŒãªã¯ãšã¹ã圢åŒã
application/x-www-form-urlencoded ã§ã¯ãªã application/json
ã§ããå ŽåããããŸãïŒã
ãããã®äžéãªã¯ãšã¹ãã¯ãAuthorization Challenge Endpoint ã§ã¯ãªããèªå¯ãµãŒããŒäžã®ãããã©ã€ãšã¿ãªãªãšã³ããã€ã³ãã«éä¿¡ãããŠãããïŒMAYïŒã§ãã
5.3.1. Auth Session
auth_session
ã¯ãåäžã¯ã©ã€ã¢ã³ãããã®åŸç¶ãªã¯ãšã¹ããé¢é£ä»ããããããã«ããããã«ãèªå¯ãµãŒããŒãçºè¡ããå€ã§ããããã¯ããã©ãŠã¶ã®ã¯ãããŒãåäžãã©ãŠã¶ã«ããè€æ°ã®ãªã¯ãšã¹ããèªå¯ãµãŒããŒã«é¢é£ä»ããæ¹æ³ã«é¡äŒŒããããšãæå³ããŠããŸãã
auth_session
ã®å€ã¯ã¯ã©ã€ã¢ã³ãã«ãšã£ãŠå®å
šã«äžéæã§ããããã®ããèªå¯ãµãŒããŒã¯ãäŸãã°ã©ã³ãã æååã䜿çšããããŸãã¯ããã¯ãšã³ãã§ç¶æ
ãç¶æããŠããªãå Žåã«ã¯
JWE
ã䜿çšãããªã©ããŠãã¯ã©ã€ã¢ã³ãã«ããå€ã®æ€æ»ãããã®å€ãé©åã«ä¿è·ããªããã°ãªããŸããïŒMUSTïŒã
ã¯ã©ã€ã¢ã³ãã auth_session
ãæã£ãŠããå Žåãã¯ã©ã€ã¢ã³ãã¯èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžã®å°æ¥ã®ãªã¯ãšã¹ãã«ãããå«ããªããã°ãªããŸããïŒMUSTïŒãã¯ã©ã€ã¢ã³ãã¯ãå°æ¥ã®ãªã¯ãšã¹ãã§äœ¿çšã§ããããã«ãããããèªå¯ã³ãŒãã®çºè¡åŸã
auth_session ãä¿åããªããã°ãªããŸããïŒMUSTïŒã
ãã®ä»æ§ã§å®çŸ©ããããã¹ãŠã®ã¬ã¹ãã³ã¹ã¯ãæ°ãã auth_session
å€ãå«ãå ŽåããããŸããã¯ã©ã€ã¢ã³ã㯠auth_session
å€ãåºå®ã§ãããšä»®å®ããŠã¯ãªããïŒMUST NOTïŒãã¬ã¹ãã³ã¹ã§ auth_session
å€ãåãåã£ãå Žåã«ä¿åæžã¿ã® auth_session
å€ãæŽæ°ã§ããããåããªããã°ãªããŸããïŒMUSTïŒã
ã»ãã·ã§ã³ãã€ãžã£ãã¯ã®ãªã¹ã¯ãç·©åããããã'auth_session' ã¯ããã€ã¹ã«ãã€ã³ããããªããã°ãªããïŒMUSTïŒãèªå¯ãµãŒããŒã¯ãããããã€ã³ããããããã€ã¹ãšã¯ç°ãªãããã€ã¹ããæç€ºãããå Žåã«ã¯ 'auth_session' ãæåŠããªããã°ãªããŸããïŒMUSTïŒã
远å ã®ã»ãã¥ãªãã£äžã®èæ ®äºé ã«ã€ããŠã¯ Section 9.6 ãåç §ããŠãã ããã
6. Token Request
ã¯ã©ã€ã¢ã³ãã¯ãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãããååŸããèªå¯ã³ãŒãã䜿çšããŠãããŒã¯ã³ã»ãšã³ããã€ã³ããžãªã¯ãšã¹ããè¡ããŸãã
ãã®ä»æ§ã¯ãRFC6749 ã® Section 4.1.3
ã§å®çŸ©ãããããŒã¯ã³ã»ãªã¯ãšã¹ãã»ãã©ã¡ãŒã¿ãè¶
ãã远å ãã©ã¡ãŒã¿ãå®çŸ©ããŸããããããæ³šç®ãã¹ãç¹ãšããŠããã®ãªã¯ãšã¹ãã«ã¯
redirect_uri ãã©ã¡ãŒã¿ã¯å«ãŸããŸããããªããªããèªå¯ãªã¯ãšã¹ãã«
redirect_uri ãã©ã¡ãŒã¿ãå«ãŸããŠããªãã£ãããã§ãã
6.1. Token Endpoint Successful Response
ãã®ä»æ§ã¯ãRFC6749 ã® Section 5.1 ã§å®çŸ©ããã OAuth 2.0
ã®ããŒã¯ã³ã¬ã¹ãã³ã¹ããSection 5.3.1
ã§å®çŸ©ããã远å ãã©ã¡ãŒã¿ auth_session ã«ãã£ãŠæ¡åŒµããŸãã
æåããããŒã¯ã³ã¬ã¹ãã³ã¹ã®äŸã以äžã«ç€ºããŸãã
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{ "access_token": "2YotnFZFEjr1zCsicMWpAA", "token_type": "Bearer",
"expires_in": 3600, "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA",
"auth_session": "uY29tL2F1dGhlbnRpY" }
ãã®ã¬ã¹ãã³ã¹ã«ã¯ãã¯ã©ã€ã¢ã³ãã Section 5.3.1
ã§èª¬æããããšãããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžã®åŸç¶ãªã¯ãšã¹ãã«å«ããããšãæåŸ
ããã
auth_session ãã©ã¡ãŒã¿ãå«ãŸããŠãããïŒMAYïŒã§ããauth_session
ãã©ã¡ãŒã¿ã¯ãŸããèªå¯ã³ãŒãããã®ä»æ§ã§å®çŸ©ããããããŒã§ã¯ãªããåŸæ¥ã® OAuth
èªå¯ã³ãŒãã»ãããŒã«ããååŸãããå Žåã§ãã£ãŠãå«ããããŠããïŒMAYïŒã§ãã
ããŒã¯ã³ã¬ã¹ãã³ã¹ã« auth_session
ãã©ã¡ãŒã¿ãå«ããããšã§ãã¹ãããã¢ããèªèšŒïŒRFC9470ïŒã®ãããªãããŒãå¯èœãšãªããèªå¯ãµãŒããŒã¯ä»¥åã®ã»ãã·ã§ã³ã®ã³ã³ããã¹ãã埩å
ããå¿
èŠãªã¹ãããã¢ããèŠçŽ ã®ã¿ãæ±ããŠããã³ããã§ããŸããäŸã®ã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠã¯
Appendix A.7 ãåç
§ããŠãã ããã
6.2. Token Endpoint Error Response
æå¹ãªãªãã¬ãã·ã¥ããŒã¯ã³ãçšãããªã¯ãšã¹ããå«ããããŒã¯ã³ã»ãšã³ããã€ã³ããžã®ãããããªã¯ãšã¹ãã«å¯ŸããŠãèªå¯ãµãŒããŒã¯æåããã¢ã¯ã»ã¹ããŒã¯ã³ã¬ã¹ãã³ã¹ã®ä»£ããã«ãèªå¯ãã£ã¬ã³ãžã§å¿çã§ããŸãã
èªå¯ãã£ã¬ã³ãžã»ãšã©ãŒã¬ã¹ãã³ã¹ã¯ãOAuth 2.0ïŒRFC6749ïŒã® Section 5.2 ã§å®çŸ©ãããç¹å®çš®å¥ã®ãšã©ãŒã¬ã¹ãã³ã¹ã§ããããšã©ãŒã³ãŒããæ¬¡ã®å€ã«èšå®ãããŸãã
"error": "insufficient_authorization":
æç€ºãããèªå¯ãäžååã§ãããèªå¯ãµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠèªå¯ãå®äºããããã®è¿œå ã¹ããããåãããèŠæ±ããŠããŸãã
ããã«ããã®ã¬ã¹ãã³ã¹ã«ã¯ãã¯ã©ã€ã¢ã³ããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžã®åŸç¶ãªã¯ãšã¹ãã«å«ããããšãæåŸ
ããã
auth_session ãã©ã¡ãŒã¿ãå«ãŸããŠãããïŒMAYïŒã§ãã
"auth_session":
OPTIONALãä»»æã® auth session
å€ã«ãããèªå¯ãµãŒããŒã¯ããã®ã¯ã©ã€ã¢ã³ãã«ããåŸç¶ãªã¯ãšã¹ããé²è¡äžã®èªå¯ãªã¯ãšã¹ãã»ã·ãŒã±ã³ã¹ã«é¢é£ä»ããããšãã§ããŸããã¯ã©ã€ã¢ã³ãã¯ããšã©ãŒã¬ã¹ãã³ã¹ãšãšãã«
auth_session
ãåãåã£ãå Žåããã£ã¬ã³ãžã»ãšã³ããã€ã³ããžã®ãã©ããŒã¢ããã»ãªã¯ãšã¹ãã«
auth_session ãå«ããªããã°ãªããŸããïŒMUSTïŒã
äŸ:
HTTP/1.1 403 Forbidden
Content-Type: application/json
Cache-Control: no-store
{ "error": "insufficient_authorization", "auth_session": "uY29tL2F1dGhlbnRpY"
}
7. Resource Server Error Response
Step-Up
AuthenticationïŒRFC9470ïŒã¯ããªãœãŒã¹ãµãŒããŒãã¯ã©ã€ã¢ã³ãã«å¯ŸããŠãOpenIDïŒOpenIDïŒç±æ¥ã®
acr_values ããã³ max_age
ãå«ãæ°ããèªå¯ãªã¯ãšã¹ããéå§ããããäŒããããã«äœ¿çšã§ãããæ°ãããšã©ãŒã³ãŒãå€ãå®çŸ©ããŸãããã®ãšã©ãŒã¬ã¹ãã³ã¹ãåãåããšãã¯ã©ã€ã¢ã³ãã¯èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã§æ°ãããã¡ãŒã¹ãããŒãã£èªå¯ãªã¯ãšã¹ããéå§ãããšã©ãŒã¬ã¹ãã³ã¹ã§è¿ããã
acr_valuesãmax_ageãããã³ scope ãå«ããŸãã
ãã®ä»æ§ã¯ãRFC9470 ããã³ RFC6750 ã§å®çŸ©ããããã®ãè¶ ããŠããªãœãŒã¹ãµãŒããŒã®ãšã©ãŒã¬ã¹ãã³ã¹ã®ããã®æ°ãããã©ã¡ãŒã¿ãå®çŸ©ããŸããã
8. Authorization Server Metadata
以äžã®èªå¯ãµãŒããŒã»ã¡ã¿ããŒã¿ã»ãã©ã¡ãŒã¿ïŒRFC8414ïŒãå°å ¥ããããã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«é¢ãããµãŒããŒã®èœåããã³ããªã·ãŒã瀺ããŸãã
"authorization_challenge_endpoint":
ã¯ã©ã€ã¢ã³ããèªå¯ãªã¯ãšã¹ããéå§ããæçµçã«èªå¯ã³ãŒããååŸã§ããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã® URL ã§ãã
9. Security Considerations
9.1. First-Party Applications
ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ãšã¯ãã¢ããªã±ãŒã·ã§ã³ã䜿çšããèªå¯ãµãŒããŒãšåäžã®äž»äœã«ãã£ãŠç®¡çããããŠãŒã¶ãŒãäž¡è ãåäžäž»äœãšããŠçè§£ããŠããã¢ããªã±ãŒã·ã§ã³ã§ãã
ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ãããŠã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ãšèªå¯ãµãŒããŒãåäžãã©ã³ãã«å±ããŠãããšèªèããããšãéèŠã§ããäŸãã°ãéè¡ãèªç€Ÿã®ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãå ¬éããå Žåã§ãã
ãã®ä»æ§ã¯ãã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ããšã³ããŠãŒã¶ãŒãšçŽæ¥ããåãã§ãããã€ã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒããåéããããããæ å ±ãèªå¯ãµãŒããŒãžéä¿¡ããããšãæ±ããããèªå¯ãµãŒããŒãã¯ã©ã€ã¢ã³ãã«å¯ŸããŠãé«ãä¿¡é Œãæããå Žåã«ããã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ã®ã¿äœ¿çšãããããšãæåŸ ãããŸãã
ãã®ä»æ§ã¯ãèªå¯ãµãŒããŒãã¢ããªã±ãŒã·ã§ã³ã®ãã¡ãŒã¹ãããŒãã£æ§ã«å¯Ÿããä¿¡é Œãã©ã®ããã«ç¢ºç«ãããã«ã€ããŠèŠå®çã§ã¯ãããŸãããã¢ãã€ã«ãã©ãããã©ãŒã ã§ã¯ãå€ããã¢ããªã¹ãã¢ãžã¢ããªãäœæïŒçœ²åïŒã¢ããããŒãããäž»äœãèå¥ããããã«å©çšã§ãããã¢ããªã±ãŒã·ã§ã³ã»ã¢ãã¹ããŒã·ã§ã³ã®äœããã®ã¡ã«ããºã ããµããŒãããŠããŸããã¢ããªã®ã¢ãã¹ããŒã·ã§ã³ã¯ãã¢ãã¹ããŒã·ã§ã³ããŒã¹ã®ã¯ã©ã€ã¢ã³ãèªèšŒïŒI-D.ietf-oauth-attestation-based-client-authïŒãåçã¯ã©ã€ã¢ã³ãç»é²ïŒRFC7591ïŒãšãã£ãã¡ã«ããºã ãšçµã¿åãããŠãã¯ã©ã€ã¢ã³ãæ€èšŒïŒãã¡ãŒã¹ãããŒãã£æ§ïŒã«å ããŠåŒ·åãªã¯ã©ã€ã¢ã³ãèªèšŒãå¯èœã«ã§ããŸããå¿ èŠãšãªãæ£ç¢ºãªæé ã¯ãã®ä»æ§ã®ã¹ã³ãŒãå€ã§ãããã©ãŠã¶å ïŒäŸïŒSingle Page AppsïŒãšããæèã§åäœããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã¯ã©ã€ã¢ã³ãã®ãã¡ãŒã¹ãããŒãã£æ§ãæ€èšŒããããšãã¯ããã«å°é£ã§ããç¹ã«æ³šæããŠãã ããã远å ã®è©³çްã«ã€ããŠã¯ Section 9.8 ãåç §ããŠãã ããã
9.2. Phishing
ãã®ä»æ§ã䜿çšãããšãã£ãã·ã³ã°ã®ãªã¹ã¯ãå¢å ããæ¹æ³ã¯ 2 ã€ãããŸãã
-
æªæããã¢ããªã±ãŒã·ã§ã³ïŒãã®ä»æ§ã§ã¯ãã¯ã©ã€ã¢ã³ãããšã³ããŠãŒã¶ãŒãšçŽæ¥ããåããããŠãŒã¶ãŒããæäŸãããæ å ±ãåéããŠèªå¯ãµãŒããŒãžéä¿¡ããŸããæ»æè ãã¯ã©ã€ã¢ã³ãã«ãªãããŸãããŠãŒã¶ãŒãããŸãéšããŠãããå©çšãããå ŽåããŠãŒã¶ãŒã¯æªæããã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠèªåã®ã¯ã¬ãã³ã·ã£ã«ãæž¡ããŠããããšã«æ°ä»ããªããããããŸããã
-
ãŠãŒã¶ãŒæè²ïŒãªãã€ã¬ã¯ãããŒã¹ã®èªå¯ã³ãŒãã»ãããŒãçšããåŸæ¥ã® OAuth å±éã§ã¯ããŠãŒã¶ãŒã¯èªå¯ãµãŒããŒã§ã®ã¿ã¯ã¬ãã³ã·ã£ã«ãå ¥åããä»ã®ãåœããŠã§ããµã€ãã§ã¯ã¬ãã³ã·ã£ã«ãå ¥åããªããã説æããã®ã¯ç°¡åã§ãããã®ä»æ§ã«ããããŠãŒã¶ãŒãã¯ã¬ãã³ã·ã£ã«ãå ¥åããããšãæåŸ ãããæ°ããå Žæãå°å ¥ããããšã§ãã¯ã¬ãã³ã·ã£ã«ãçãããšããŠããå¯èœæ§ã®ããä»ã®åœã®ãã°ã€ã³ããã³ãããããŠãŒã¶ãŒãã©ã®ããã«èŠåããã¹ãããæããããšãããè€éã«ãªããŸãã
ãããã®ãªã¹ã¯ã®ãããèªå¯ãµãŒããŒã¯ãèªèº«ã®ãªã¹ã¯è©äŸ¡ã«åºã¥ããããã»ã¹ã®ãããªã段éã«ãããŠããŠãŒã¶ãŒã«ãªãã€ã¬ã¯ãããŒã¹ã®ãããŒãéãããããšãèŠæ±ããããšã決å®ããŠãããïŒMAYïŒã§ãã
9.3. Credential Stuffing Attacks
èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã¯ããŠãŒã¶ãŒã®ã¯ã¬ãã³ã·ã£ã«ãçŽæ¥åãåããèªå¯ã³ãŒããè¿ãããšãã§ããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³ã®çæ£æ§ã確ä¿ããããã®è¿œå æªçœ®ãåãããªãå Žåãã¯ã¬ãã³ã·ã£ã«ã»ã¹ã¿ããã£ã³ã°æ»æãå®è¡ããæ°ããªãã¯ã¿ãé²åºãããŸãã
èªå¯ãµãŒããŒã¯ããã©ãŠã¶ããŒã¹ã®èªèšŒãããŒã«ãããŠãã®ãªã¹ã¯ãç£èŠãäœæžããããã«ãçµã¿èŸŒã¿ãŸãã¯ãµãŒãããŒãã£ã®ã»ãã¥ãªãã£ããŒã«ã®çµã¿åãããæ¢ã«åããŠããå ŽåããããŸããå®è£ è ã¯ãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã«ãããŠãã®ãªã¹ã¯ãäœæžããããã«ãåæ§ã®ã»ãã¥ãªãã£å¯Ÿçãæ€èšããã¹ãã§ãïŒSHOULDïŒãããã«ãå¯èœãªå Žåã«ã¯ã¢ãã¹ããŒã·ã§ã³ API ã䜿çšãããªã¯ãšã¹ããåäžäž»äœãææããã¢ããªã±ãŒã·ã§ã³ããçºçããŠãããšããä¿¡é ŒåºŠã®æ°Žæºãèªå¯ãµãŒããŒãžäž»åŒµããã¹ãã§ãïŒSHOULDïŒã
9.4. Client Authentication
éåžžãã¢ãã€ã«ããã³ãã¹ã¯ãããã»ã¢ããªã±ãŒã·ã§ã³ã¯ OAuth ã«ãããŠããããªãã¯ã¯ã©ã€ã¢ã³ãããšèŠãªãããŸãããšããã®ããéçã«æ§æãããã¯ã©ã€ã¢ã³ãã»ã¯ã¬ãã³ã·ã£ã«ã®ã»ããã忢±ããŠåºè·ããããšãã§ããªãããã§ãïŒRFC8252ïŒããã®ããããã®ãã¿ãŒã³ãå±éããè ã«ãšã£ãŠãã¯ã©ã€ã¢ã³ãã®ãªãããŸãã¯æžå¿µäºé ãšãªãã¹ãã§ããã¯ã©ã€ã¢ã³ãèªèšŒããªãå ŽåãæªæãããŠãŒã¶ãŒãŸãã¯æ»æè ã¯ãã¢ããªã±ãŒã·ã§ã³ãèªå¯ãµãŒããŒãžè¡ããªã¯ãšã¹ããæš¡å£ããæ£åœãªã¯ã©ã€ã¢ã³ãã§ãããã®ããã«è£ ãããšãã§ããŸãã
å®è£ è ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããå©çšå¯èœãªã¢ãã¹ããŒã·ã§ã³ API ã䜿çšãããªã©ãã¯ã©ã€ã¢ã³ããªãããŸãã®ãªã¹ã¯ãå¶éããããã®è¿œå æªçœ®ãæ€èšããã¹ãã§ãïŒSHOULDïŒã
9.5. Sender-Constrained Tokens
èªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ããžã®å¿çãšããŠçºè¡ãããããŒã¯ã³ã¯ãããŒã¯ã³çªåããã³ãªãã¬ã€ã®ãªã¹ã¯ãç·©åããããã«ãéä¿¡è å¶çŽãããã¹ãã§ãïŒSHOULDïŒã
ææèšŒæïŒProof-of-PossessionïŒæè¡ã¯ãããŒã¯ã³ãæå·éµãžãã€ã³ãããããšã§ãããŒã¯ã³ãå¶çŽããŸããããŒã¯ã³ãæç€ºããããã³ã«ããã®ããŒã¯ã³ãæç€ºããŠããã¯ã©ã€ã¢ã³ãããããŒã¯ã³ã«ãã€ã³ããããæå·éµãå¶åŸ¡ããŠããããšã瀺ã蚌æã䌎ããªããã°ãªããŸããïŒMUSTïŒãææèšŒæã®éä¿¡è å¶çŽä»ãããŒã¯ã³ããæå·éµã®æå¹ãªææèšŒæãªãã«æç€ºãããå Žåãããã¯æåŠãããªããã°ãªããŸããïŒMUSTïŒã
9.5.1. DPoP: Demonstrating Proof-of-Possession
DPoPïŒRFC9449ïŒã¯ãOAuthïŒRFC6749ïŒã®ã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãéä¿¡è å¶çŽããããã®ãã¢ããªã±ãŒã·ã§ã³å±€ã®ã¡ã«ããºã ã§ããDPoP ãããŒã¯ã³ãéä¿¡è å¶çŽããããã«äœ¿çšãããå Žåãã¯ã©ã€ã¢ã³ãã¯ãèªå¯ãµãŒããŒãžã®ããããããŒã¯ã³ãªã¯ãšã¹ãããã³ãªãœãŒã¹ãµãŒããŒãšã®ããåãã®ãã³ã« DPoP ã䜿çšããã¹ãã§ãïŒSHOULDïŒã
DPoP ã«ã¯ãèªå¯ã³ãŒãã DPoP éµã«ãã€ã³ãããŠãèªå¯ãããŒå šäœã®ãšã³ãããŒãšã³ãã®ãã€ã³ãã£ã³ã°ãå¯èœã«ããããã®ãä»»æã®æ©èœãå«ãŸããŸãããã®ä»æ§ã®ããã¯ãã£ãã«çæ§è³ªãèžãŸãããšããªãã€ã¬ã¯ãããŒã¹ã®èªå¯ã³ãŒãã»ãããŒãšæ¯èŒããŠãæ»æè ãèªå¯ã³ãŒãããã³ PKCE ã®ã³ãŒãæ€èšŒåãžã¢ã¯ã»ã¹ããæ©äŒã¯ã¯ããã«å°ãªããªããŸãããã®ä»æ§ã§ã¯ãèªå¯ã³ãŒãã¯ããã¯ãã£ãã«ã»ãªã¯ãšã¹ããä»ããŠååŸãããŸããããã«ãããããããèªå¯ã³ãŒãã®ãã€ã³ãã£ã³ã°ãçç¥ãããšãDPoP ãæäŸãããšã³ãããŒãšã³ãä¿è·ã«ã®ã£ãããæ®ããããDPoP ã®èªå¯ã³ãŒãã»ãã€ã³ãã£ã³ã°ã¯äœ¿çšãããã¹ãã§ãïŒSHOULDïŒã
DPoP ã«ããèªå¯ã³ãŒãã»ãã€ã³ãã£ã³ã°ã®ã¡ã«ããºã ã¯ãRFC9449 ã® Section 10.1 ã§ Pushed Authorization RequestsïŒPARïŒã«å¯ŸããŠå®çŸ©ããããã®ãšåæ§ã§ããDPoP ã§èªå¯ã³ãŒãããã€ã³ãããããã«ãã¯ã©ã€ã¢ã³ã㯠Authorization Challenge Request ã« DPoP ãããã远å ããªããã°ãªããŸããïŒMUSTïŒãèªå¯ãµãŒããŒã¯ãRFC9449 ã® Section 4.3 ã§å®çŸ©ããããšãããDPoP ãããã«å«ãŸããŠãã DPoP proof JWT ãæ€èšŒããªããã°ãªããŸããïŒMUSTïŒãèªå¯ãµãŒããŒã¯ãåŸç¶ã®ãã¹ãŠã® Authorization Challenge Request ããã³æçµçãªããŒã¯ã³ãªã¯ãšã¹ãã«ãããŠåãéµã䜿çšãããããšãä¿èšŒããªããã°ãªããŸããïŒMUSTïŒãèªå¯ãµãŒããŒã¯ãå ã® Authorization Challenge Request ã§æç€ºãããåãéµã«å¯Ÿãã DPoP proof ãæäŸãããªãéããåŸç¶ã® Authorization Challenge Request ãŸãã¯æçµçãªããŒã¯ã³ãªã¯ãšã¹ããæåŠããªããã°ãªããŸããïŒMUSTïŒã
äžèšã¡ã«ããºã ã¯ããªã¯ãšã¹ãã®çš®é¡ã«é¢ä¿ãªããã¯ã©ã€ã¢ã³ããèªå¯ãµãŒããŒãžã®ãã¹ãŠã®ãªã¯ãšã¹ãã«
DPoP
ããããä»äžã§ãããããã¯ã©ã€ã¢ã³ãã®å®è£
ãåçŽåããŸãããã®ã¡ã«ããºã ã¯ãDPoP
ããããç§å¯éµã®ææèšŒæãå«ããããdpop_jkt
ãã©ã¡ãŒã¿ã䜿çšããããã匷ããã€ã³ãã£ã³ã°ãæäŸããŸãã
9.5.2. Other Proof of Possession Mechanisms
ã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãéä¿¡è å¶çŽããããã«ãä»ã®ææèšŒæã¡ã«ããºã ã䜿çšã§ããå¯èœæ§ããããŸãããããã®ã¡ã«ããºã ãå®çŸ©ããããšã¯ããã®ä»æ§ã®ã¹ã³ãŒãå€ã§ãã
9.6. Auth Session
9.6.1. Auth Session DPoP Binding
ã¯ã©ã€ã¢ã³ããšèªå¯ãµãŒããŒããã¢ã¯ã»ã¹ããŒã¯ã³ããã³ïŒãŸãã¯èªå¯ã³ãŒãã® DPoP
ãã€ã³ãã£ã³ã°ã䜿çšããŠããå Žåãauth_session
å€ãä¿è·ãããã¹ãã§ãïŒSHOULDïŒãèªå¯ãµãŒããŒã¯ãauth_session å€ã DPoP
å
¬ééµã«é¢é£ä»ããã¹ãã§ãïŒSHOULDïŒãããã«ãããèªå¯ãµãŒããŒã DPoP proof
ã«è¿œå ã®ã¯ã¬ãŒã ãå«ããå¿
èŠããªããªãäžæ¹ã§ãproof ãæç€ºããã¯ã©ã€ã¢ã³ãã
DPoP éµãå¶åŸ¡ããŠãããšããä¿èšŒã®æ©æµãåããããŸããauth_session å€ã DPoP
å
¬ééµã«é¢é£ä»ããããã«ãèªå¯ãµãŒããŒã¯æ¬¡ãè¡ããŸãã
-
ã¯ã©ã€ã¢ã³ãã DPoP proof ãæç€ºããéã«ãåã DPoP å ¬ééµã䜿çšãããŠããããšã確èªããªããã°ãªããŸããïŒMUSTïŒã
-
ã¯ã©ã€ã¢ã³ãã Section 5.1 ã§èª¬æããããšãã Authorization Challenge Request ã«
auth_sessionãå«ãããã³ã«ãã¯ã©ã€ã¢ã³ãã察å¿ããç§å¯éµãå¶åŸ¡ããŠããããšãä¿èšŒããããã« DPoP proof ãæ€èšŒããªããã°ãªããŸããïŒMUSTïŒã
auth_session å€ã® DPoP ãã€ã³ãã£ã³ã°ã«ãããauth_session
ãåç
§ããã³ã³ããã¹ããçãŸããŠå¥ã®ããã€ã¹ã«ããåå©çšãããããšãé²ããŸãã
9.6.2. Auth Session Lifetime
ãã®ä»æ§ã¯ãauth_session
å€ã®åç¶æéã«ã€ããŠããããªãèŠä»¶ãä»®å®ã眮ããŸãããåç¶æéãšå€±å¹ã¯èªå¯ãµãŒããŒã®è£éã«å§ããããèªå¯ãµãŒããŒã¯ãäºå®ãããæéåããã»ãã¥ãªãã£ã€ãã³ãããŸãã¯å€±å¹ã€ãã³ããªã©ããããªãçç±ã«ãã£ãŠããã®å€ãç¡å¹åããããšãéžæã§ããŸãã
ã¯ã©ã€ã¢ã³ãã¯ãauth_session
å€ã®ç¹å®ã®åç¶æéã«ã€ããŠããããªãä»®å®ãããŠã¯ãªããïŒMUST
NOTïŒããŸãããã«äŸåããŠã¯ãªããŸããã
9.7. Multiple Applications
AS ãè€æ°ã®ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ããµããŒãããå Žåã远å ã®ãªã¹ã¯ãããã€ãèæ ®ããããšãéèŠã§ãããããã®ãªã¹ã¯ã¯ã以äžã§èª¬æãã 2 ã€ã®äž»èŠã«ããŽãªãããªãã¡ãäœéšãªã¹ã¯ïŒExperience RiskïŒããšãæè¡çãªã¹ã¯ïŒTechnical RiskïŒãã«åé¡ãããŸãã
9.7.1. User Experience Risk
ãŠãŒã¶ãŒãç°ãªããŠãŒã¶ãŒäœéšã®äžã§èªèšŒã¯ã¬ãã³ã·ã£ã«ã®æäŸãæ±ãããããã³ã«ããŠãŒã¶ãŒãèŠãç®ã®ç°ãªãäœéšã§ã¯ã¬ãã³ã·ã£ã«ãå ¥åããããšã«æ £ããŠããŸãããããã£ãã·ã³ã°æ»æã®è¢«å®³ã«éãå¯èœæ§ãé«ãŸã广ããããŸããè€æ°ã®ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ããµããŒããããå Žåãå®è£ ã¯ããã€ãã£ãäœéšããã¹ãŠã®ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ããã£ãŠåäžã§ããããšãä¿èšŒããªããã°ãªããŸããïŒMUSTïŒã
ããäžã€ã®äœéšãªã¹ã¯ã¯ãèŠãç®ã®ç°ãªãäœéšãæ¯ãèãã«ãã£ãŠåŒãèµ·ãããããŠãŒã¶ãŒã®æ··ä¹±ã§ããããã¯ããŠãŒã¶ãŒããã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã®èªèšŒäœéšãå®äºããªãå¯èœæ§ãé«ããããšããããŸãã
9.7.2. Technical Risk
äœéšäžã®ãªã¹ã¯ã«å ããŠããã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ã«ãããè€æ°ã®å®è£ ã¯ã誀ã£ãå®è£ ã®ãªã¹ã¯ãé«ãããšãšãã«ãåå®è£ ãããããåºæã®åŒ±ç¹ãé²åºãåŸããããæ»æå¯Ÿè±¡é åïŒã¢ã¿ãã¯ãµãŒãã§ã¹ïŒãæ¡å€§ããŸãã
9.7.3. Mitigation
ãããã®ãªã¹ã¯ã«å¯ŸåŠãããããè€æ°ã®ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã±ãŒã·ã§ã³ããµããŒãããªããã°ãªãããã〠OpenID.Native-SSO ã®ãããªä»ã®æ¹æ³ãé©çšã§ããªãå Žåã«ã¯ãç°ãªãã¢ããªã±ãŒã·ã§ã³éã§å®è£ ã®äžè²«æ§ã確ä¿ãããã¹ãŠã®ãã¡ãŒã¹ãããŒãã£ã»ã¢ããªã§ãŠãŒã¶ãŒäœéšãåäžã«ããããã«ãã¯ã©ã€ã¢ã³ããµã€ãã® SDK ã䜿çšããããšã RECOMMENDED ã§ãã
9.8. Single Page Applications
Single Page ApplicationsïŒSPAïŒã¯ããã©ãŠã¶ã€ã³ã¹ã¿ã³ã¹ã®ã³ã³ããã¹ãå ã§ã¹ã¯ãªããèšèªãšããŠå®è¡ãããŸãããã®ç°å¢ã¯ããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ãšæ¯ã¹ãŠãç¹ã«æ¬¡ã®ãããªããã€ãã®åºæã®èª²é¡ã䌎ããŸãã
-
Cross-Site ScriptingïŒXSSïŒæ»æã®å¯èœæ§ã«ãããéå€§ãªæ»æãã¯ã¿
-
ãã©ãŠã¶ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®ãã¡ãŒã¹ãããŒãã£æ§ãå®å šã«ã¢ãã¹ãããããã®éžæè¢ãå°ãªãããš
ãã©ãŠã¶ã«ããã XSS æ»æã®ãªã¹ã¯ã«ã€ããŠã®è©³çްãªè°è«ã¯ãI-D.ietf-oauth-browser-based-apps ãåç §ããŠãã ããã
ããã«ãSingle-Page App ã®æ§è³ªäžããŠãŒã¶ãŒã¯æ¢ã«ãã©ãŠã¶æèã«ãããããåŸæ¥ã® OAuth Authorization Code Flow ã®ããã«ãã«ããŒãžã®ãªãã€ã¬ã¯ãããããã¢ãããŠã£ã³ããŠãè¡ããŠãŒã¶ãŒäœéšäžã®ã³ã¹ãã¯ããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã§ãããè¡ãã³ã¹ãããã¯ããã«å°ãããªããŸãããã©ãŠã¶ã§ãã®ä»æ§ãå®è£ ããè€éããšãªã¹ã¯ã¯ããã®æèã§åŸãããã§ããããŠãŒã¶ãŒäœéšäžã®å©åŸããããããäžåããŸããã
ãããã®çç±ã«ããããã©ãŠã¶ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã§ãã®ä»æ§ã䜿çšããããšã¯ NOT RECOMMENDED ã§ãã
10. IANA Considerations
10.1. OAuth Parameters Registration
IANA ã¯ãRFC6749 ã«ãã£ãŠç¢ºç«ããã IANAãOAuth Parametersãã¬ãžã¹ããªïŒIANA.oauth-parametersïŒã«ã以äžã®å€ãïŒTBDïŒç»é²ããŸããã
Parameter name: auth_session
Parameter usage location: ããŒã¯ã³ã¬ã¹ãã³ã¹
Change Controller: IETF
Specification Document: ãã®ä»æ§ã® Section 5.4
10.2. OAuth Server Metadata Registration
IANA ã¯ãRFC8414 ã«ãã£ãŠç¢ºç«ããã IANAãOAuth Authorization Server Metadataãã¬ãžã¹ããªïŒIANA.oauth-parametersïŒã«ã以äžã®å€ãïŒTBDïŒç»é²ããŸããã
Metadata Name: authorization_challenge_endpoint
Metadata Description: èªå¯ãµãŒããŒã®èªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãã® URLã
Change Controller: IESG
Specification Document: ãã®ä»æ§ã® Section 4.1
11. References
11.1. Normative References
[I-D.ietf-oauth-cross-device-security]
Kasselman, P., Fett, D., and F. Skokan, ãCross-Device Flows: Security Best
Current Practiceã, Work in Progress, Internet-Draft,
draft-ietf-oauth-cross-device-security-12, 5 September 2025,
[IANA.JWT]
ã BROKEN REFERENCE ãã
[IANA.oauth-parameters]
IANA, ãOAuth Parametersã,
[OpenID]
Sakimura, N., Bradley, J., Jones, M., de Medeiros, B., and C. Mortimore,
ãOpenID Connect Core 1.0ã, November 2014,
[OpenID.Native-SSO]
Fletcher, G., ãOpenID Connect Native SSO for Mobile Appsã, November 2022,
[RFC2119]
Bradner, S., ãKey words for use in RFCs to Indicate Requirement Levelsã, BCP
14, RFC 2119, DOI 10.17487/RFC2119, March 1997,
[RFC6749]
Hardt, D., Ed., ãThe OAuth 2.0 Authorization Frameworkã, RFC 6749, DOI
10.17487/RFC6749, October 2012,
[RFC7159]
Bray, T., Ed., ãThe JavaScript Object Notation (JSON) Data Interchange
Formatã, RFC 7159, DOI 10.17487/RFC7159, March 2014,
[RFC7515]
Jones, M., Bradley, J., and N. Sakimura, ãJSON Web Signature (JWS)ã, RFC 7515,
DOI 10.17487/RFC7515, May 2015,
[RFC7519]
Jones, M., Bradley, J., and N. Sakimura, ãJSON Web Token (JWT)ã, RFC 7519, DOI
10.17487/RFC7519, May 2015,
[RFC7591]
Richer, J., Ed., Jones, M., Bradley, J., Machulak, M., and P. Hunt, ãOAuth 2.0
Dynamic Client Registration Protocolã, RFC 7591, DOI 10.17487/RFC7591, July
2015,
[RFC7636]
Sakimura, N., Ed., Bradley, J., and N. Agarwal, ãProof Key for Code Exchange by
OAuth Public Clientsã, RFC 7636, DOI 10.17487/RFC7636, September 2015,
[RFC8174]
Leiba, B., ãAmbiguity of Uppercase vs Lowercase in RFC 2119 Key Wordsã, BCP
14, RFC 8174, DOI 10.17487/RFC8174, May 2017,
[RFC8259]
Bray, T., Ed., ãThe JavaScript Object Notation (JSON) Data Interchange
Formatã, STD 90, RFC 8259, DOI 10.17487/RFC8259, December 2017,
[RFC8414]
Jones, M., Sakimura, N., and J. Bradley, ãOAuth 2.0 Authorization Server
Metadataã, RFC 8414, DOI 10.17487/RFC8414, June 2018,
[RFC8628]
Denniss, W., Bradley, J., Jones, M., and H. Tschofenig, ãOAuth 2.0 Device
Authorization Grantã, RFC 8628, DOI 10.17487/RFC8628, August 2019,
[RFC8707]
Campbell, B., Bradley, J., and H. Tschofenig, ãResource Indicators for OAuth
2.0ã, RFC 8707, DOI 10.17487/RFC8707, February 2020,
[RFC9126]
Lodderstedt, T., Campbell, B., Sakimura, N., Tonge, D., and F. Skokan, ãOAuth
2.0 Pushed Authorization Requestsã, RFC 9126, DOI 10.17487/RFC9126, September
2021,
[RFC9449]
Fett, D., Campbell, B., Bradley, J., Lodderstedt, T., Jones, M., and D. Waite,
ãOAuth 2.0 Demonstrating Proof of Possession (DPoP)ã, RFC 9449, DOI
10.17487/RFC9449, September 2023,
[RFC9470]
Bertocci, V. and B. Campbell, ãOAuth 2.0 Step Up Authentication Challenge
Protocolã, RFC 9470, DOI 10.17487/RFC9470, September 2023,
[SHS]
Technology, N. I. of S. and., ã"Secure Hash Standard (SHS)"ã, FIPS PUB 180-4,
DOI 10.6028/NIST.FIPS.180-4, August 2015,
[USASCII]
Institute, A. N. S., ãCoded Character Set -- 7-bit American Standard Code for Information Interchange, ANSI X3.4ã, 1986ã
11.2. Informative References
[I-D.ietf-oauth-attestation-based-client-auth]
Looker, T., Bastian, P., and C. Bormann, ãOAuth 2.0 Attestation-Based Client
Authenticationã, Work in Progress, Internet-Draft,
draft-ietf-oauth-attestation-based-client-auth-07, 15 September 2025,
[I-D.ietf-oauth-browser-based-apps]
Parecki, A., De Ryck, P., and D. Waite, ãOAuth 2.0 for Browser-Based
Applicationsã, Work in Progress, Internet-Draft,
draft-ietf-oauth-browser-based-apps-25, 3 July 2025,
[RFC6750]
Jones, M. and D. Hardt, ãThe OAuth 2.0 Authorization Framework: Bearer Token
Usageã, RFC 6750, DOI 10.17487/RFC6750, October 2012,
[RFC8252]
Denniss, W. and J. Bradley, ãOAuth 2.0 for Native Appsã, BCP 212, RFC 8252,
DOI 10.17487/RFC8252, October 2017,
Appendix A. Example User Experiences
ãã®ç¯ã¯ããã®ä»æ§ãç¹å®ã®ãŠãŒã¹ã±ãŒã¹ãæ¯æŽããããã«ã©ã®ããã«äœ¿çšããåŸããã«ã€ããŠã®ãéèŠç¯çïŒnon-normativeïŒãªäŸãæäŸããŸãã
A.1. Passkey
ãŠãŒã¶ãŒã¯ïŒãã¹ã¯ãŒããªãã§ïŒãã¹ããŒã§ãã°ã€ã³ããããšãã§ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒãããŠãŒã¶ãŒåãåéããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒåãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯ãŠãŒã¶ãŒåãæ€èšŒãããã£ã¬ã³ãžãè¿ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãã©ãããã©ãŒã ã»ãªãŒã»ã³ãã£ã±ãŒã¿ã䜿ã£ãŠãã£ã¬ã³ãžã«çœ²åããŸããããã«ããããŠãŒã¶ãŒã¯çäœæ å ±ãŸã㯠PIN ã«ããæ€èšŒãæ±ããããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãçœ²åæžã¿ãã£ã¬ã³ãžããŠãŒã¶ãŒåãããã³ã¯ã¬ãã³ã·ã£ã« ID ãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯çœ²åæžã¿ãã£ã¬ã³ãžãæ€èšŒããèªå¯ã³ãŒããè¿ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãããŒã¯ã³ã»ãªã¯ãšã¹ãïŒSection 6ïŒãããŒã¯ã³ã»ãšã³ããã€ã³ããžçºè¡ããããšã«ãããã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãèŠæ±ããŸãã
-
èªå¯ãµãŒããŒã¯èªå¯ã³ãŒããæ€èšŒããèŠæ±ãããããŒã¯ã³ãçºè¡ããŸãã
A.2. Redirect to Authorization Server
ãŠãŒã¶ãŒã¯ãã¢ã«ãŠã³ãã®ãªã»ãããå®è¡ããããã«ãèªå¯ãµãŒããŒãžãªãã€ã¬ã¯ããããããšããããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒãããŠãŒã¶ãŒåãåéããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒåãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯ãŠãŒã¶ãŒåãæ€èšŒããã¢ã«ãŠã³ããããã¯ãããŠããããšã倿ããŠããªãã€ã¬ã¯ãã®ãšã©ãŒã¬ã¹ãã³ã¹ãè¿ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãªãã€ã¬ã¯ãã»ã¡ãã»ãŒãžãè§£æãããã©ãŠã¶ãéããŠãPKCE ãçšãã OAuth 2.0 ãããŒãå®è¡ããªãããŠãŒã¶ãŒãèªå¯ãµãŒããŒãžãªãã€ã¬ã¯ãããŸãã
-
ãŠãŒã¶ãŒã¯ãèªå¯ãµãŒããŒãšã®å€æ®µéã®èªèšŒãããŒãå®è¡ããããšã§ãã¢ã«ãŠã³ãããªã»ããããŸãã
-
èªå¯ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ããžã®ãªãã€ã¬ã¯ãã§èªå¯ã³ãŒããçºè¡ãããã®åŸã¯ã©ã€ã¢ã³ãã¯ãããã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãšäº€æããŸãã
A.3. Passwordless One-Time Password (OTP)
ãã¹ã¯ãŒãã¬ã¹ã®ã¯ã³ã¿ã€ã ãã¹ã¯ãŒãïŒOTPïŒæ¹åŒã§ã¯ããŠãŒã¶ãŒã¯ã¯ã³ã¿ã€ã ãã¹ã¯ãŒãçæåšãææããŸãããã®çæåšã¯ããŒããŠã§ã¢ããã€ã¹ã§ããå Žåãããã°ãæºåž¯é»è©±äžã®ã¢ããªãšããŠå®è£ ãããå ŽåããããŸãããŠãŒã¶ãŒã¯ãŠãŒã¶ãŒèå¥åãšã¯ã³ã¿ã€ã ãã¹ã¯ãŒããæç€ºããèªå¯ãµãŒããŒããããæ€èšŒããåŸã«èªå¯ã³ãŒããçºè¡ããŸãããã®èªå¯ã³ãŒãã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãšäº€æã§ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒãããŠãŒã¶ãŒåãš OTP ãåéããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒåãš OTP ãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯ãŠãŒã¶ãŒåãš OTP ãæ€èšŒããèªå¯ã³ãŒããè¿ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãããŒã¯ã³ã»ãªã¯ãšã¹ãïŒSection 6ïŒãããŒã¯ã³ã»ãšã³ããã€ã³ããžçºè¡ããããšã«ãããã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãèŠæ±ããŸãã
-
èªå¯ãµãŒããŒã¯èªå¯ã³ãŒããæ€èšŒããèŠæ±ãããããŒã¯ã³ãçºè¡ããŸãã
A.4. E-Mail Confirmation Code
ãŠãŒã¶ãŒã¯ãé»åã¡ãŒã«ã¢ãã¬ã¹ãå¶åŸ¡ããŠããããšã蚌æããããã«ãèªèšŒæç¶ãïŒauthentication ceremonyïŒã®äžéšãšããŠãé»åã¡ãŒã«ç¢ºèªã³ãŒãã®æç€ºãæ±ããããããšããããŸãããŠãŒã¶ãŒã¯é»åã¡ãŒã«ã¢ãã¬ã¹ãæç€ºãããã®åŸããã®é»åã¡ãŒã«ã¢ãã¬ã¹ãžéãããæ€èšŒã³ãŒããå ¥åããããšãæ±ããããŸããæ£ããæ€èšŒã³ãŒããèªå¯ãµãŒããŒãžè¿ããããšãèªå¯ãµãŒããŒã¯ã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãçºè¡ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒããé»åã¡ãŒã«ã¢ãã¬ã¹ãåéããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãé»åã¡ãŒã«ã¢ãã¬ã¹ãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒãšããŠèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯é»åã¡ãŒã«ã¢ãã¬ã¹ãžæ€èšŒã³ãŒããéä¿¡ãã
"error": "insufficient_authorization"ã"auth_session"ãããã³é»åã¡ãŒã«æ€èšŒã³ãŒããå ¥åããªããã°ãªããªãããšã瀺ãã«ã¹ã¿ã ããããã£ãå«ããšã©ãŒã¬ã¹ãã³ã¹ïŒSection 5.2.2ïŒãè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒãé»åã¡ãŒã«æ€èšŒã³ãŒããã¯ã©ã€ã¢ã³ããžã³ããŒããããæ¡å ãããŠãŒã¶ãŒäœéšãæç€ºããŸããé»åã¡ãŒã«æ€èšŒã³ãŒããå ¥åããããšãã¯ã©ã€ã¢ã³ãã¯ãé»åã¡ãŒã«æ€èšŒã³ãŒãã«å ããŠãçŽåã®ãšã©ãŒã¬ã¹ãã³ã¹ã§è¿ããã
auth_sessionãã©ã¡ãŒã¿ãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯
auth_sessionãçšããŠã»ãã·ã§ã³ãç¶æããé»åã¡ãŒã«æ€èšŒã³ãŒããæ€èšŒããäžã§ãã¯ã©ã€ã¢ã³ããžèªå¯ã³ãŒããçºè¡ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ãèªå¯ã³ãŒããããŒã¯ã³ã»ãªã¯ãšã¹ãïŒSection 6ïŒãšããŠããŒã¯ã³ã»ãšã³ããã€ã³ããžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯èªå¯ã³ãŒããæ€èšŒããã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãçºè¡ããŸãã
ãã®æ€èšŒã®ä»£æ¿çãšããŠããŠãŒã¶ãŒãæ€èšŒã³ãŒããæåã§å ¥åãã代ããã«ãã¡ãŒã«å ã®ãªã³ã¯ãã¯ãªãã¯ããæ¹æ³ããããŸããããã¯éåžžããã°ã€ã³ãããŒã®éäžïŒinlineïŒãšãããããã¡ãŒã«æ€èšŒãããŒã®ããã«è¡ãããŸãããŠãŒã¶ãŒäœéšãç°ãªãã«ããããããã代æ¿ãããŒã«ããããããã³ã«ã¬ãã«ã®è©³çްã¯åäžã®ãŸãŸã§ããäžèšã®æé 4 ãé€ããã¹ãŠã®æé ã¯åäžã§ãããã¯ã©ã€ã¢ã³ãã¯ã以äžã«èª¬æãããæé 4 ã®ããã®ä»£æ¿ãŠãŒã¶ãŒäœéšãæç€ºããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ãã¡ãŒã«ã¢ãã¬ã¹ãžéããããªã³ã¯ãã¯ãªãã¯ãããããŠãŒã¶ãŒã«æç€ºããã¡ãã»ãŒãžãæç€ºããŸãããŠãŒã¶ãŒã¯ã¡ãŒã«å
ã®ãªã³ã¯ãã¯ãªãã¯ãããã®ãªã³ã¯ã«ã¯
URL å
ã«æ€èšŒã³ãŒããå«ãŸããŠããŸãããã® URL
ã¯ã¢ããªãèµ·åããæ€èšŒã³ãŒããã¯ã©ã€ã¢ã³ããžæž¡ããŸããã¯ã©ã€ã¢ã³ãã¯æ€èšŒã³ãŒããš
auth_sessionãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããŸãã
A.5. Mobile Confirmation Code
ãŠãŒã¶ãŒã¯ãæºåž¯é»è©±çªå·ãå¶åŸ¡ããŠããããšã蚌æããããã«ãèªèšŒæç¶ãïŒauthentication ceremonyïŒã®äžéšãšããŠã確èªã³ãŒãã®æç€ºãæ±ããããããšããããŸãããŠãŒã¶ãŒã¯é»è©±çªå·ãæç€ºãããã®åŸããã®é»è©±ãžéããã確èªã³ãŒããå ¥åããããšãæ±ããããŸããæ£ãã確èªã³ãŒããèªå¯ãµãŒããŒãžè¿ããããšãèªå¯ãµãŒããŒã¯ã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãçºè¡ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒããæºåž¯é»è©±çªå·ãåéããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãé»è©±çªå·ãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒãšããŠèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯é»è©±çªå·ãžç¢ºèªã³ãŒããéä¿¡ãã
"error": "insufficient_authorization"ã"auth_session"ãããã³ç¢ºèªã³ãŒããå ¥åããªããã°ãªããªãããšã瀺ãã«ã¹ã¿ã ããããã£ãå«ããšã©ãŒã¬ã¹ãã³ã¹ïŒSection 5.2.2ïŒãè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒã確èªã³ãŒããå ¥åããããæ¡å ãããŠãŒã¶ãŒäœéšãæç€ºããŸããã³ãŒããå ¥åããããšãã¯ã©ã€ã¢ã³ãã¯ã確èªã³ãŒãã«å ããŠãçŽåã®ãšã©ãŒã¬ã¹ãã³ã¹ã§è¿ããã
auth_sessionãã©ã¡ãŒã¿ãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯
auth_sessionãçšããŠã»ãã·ã§ã³ã»ã³ã³ããã¹ããç¶æããã³ãŒããæ€èšŒããäžã§ãã¯ã©ã€ã¢ã³ããžèªå¯ã³ãŒããçºè¡ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ãèªå¯ã³ãŒããããŒã¯ã³ã»ãªã¯ãšã¹ãïŒSection 6ïŒãšããŠããŒã¯ã³ã»ãšã³ããã€ã³ããžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯èªå¯ã³ãŒããæ€èšŒããã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãçºè¡ããŸãã
A.6. Re-authenticating to an app a week later using OTP
ã¯ã©ã€ã¢ã³ãã¯ãéå»ã®æåãããŠãŒã¶ãŒèªèšŒã®çµæãšããŠãã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãææããŠããå ŽåããããŸãããŠãŒã¶ãŒã¯ 1 é±éåŸã«ã¢ããªãžæ»ããã¢ããªãžã¢ã¯ã»ã¹ããŸããã¯ã©ã€ã¢ã³ãã¯ã¢ã¯ã»ã¹ããŒã¯ã³ãæç€ºããŸãããã¢ã¯ã»ã¹ããŒã¯ã³ããã¯ãæå¹ã§ã¯ãªãããšã瀺ããšã©ãŒãåãåããŸããã¯ã©ã€ã¢ã³ãã¯ãæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããããã«ããªãã¬ãã·ã¥ããŒã¯ã³ãèªå¯ãµãŒããŒãžæç€ºããŸããèªå¯ãµãŒããŒãèªèº«ã®ããªã·ãŒã«åºã¥ãçç±ã§ãŠãŒã¶ãŒæäœãèŠæ±ããå Žåããªãã¬ãã·ã¥ããŒã¯ã³ãæåŠããã¯ã©ã€ã¢ã³ãã¯æ°ããã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããããã«ãŠãŒã¶ãŒèªèšŒãããŒãåéå§ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒèªèšŒãå«ãèªå¯ä»äžãããŒïŒAuthorization Grant FlowïŒã®ä»¥åã®å®äºã«ç¶ããŠãçåœãªã¢ã¯ã»ã¹ããŒã¯ã³ãšé·åœãªãªãã¬ãã·ã¥ããŒã¯ã³ãæã£ãŠããŸãã
-
1 é±éåŸããŠãŒã¶ãŒã¯ã¢ããªãèµ·åãããªãœãŒã¹ãµãŒããŒäžã®ä¿è·ããããªãœãŒã¹ãžã¢ã¯ã»ã¹ããããšããŸãã
-
ãªãœãŒã¹ãµãŒããŒã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ãæéåãã§ããããç¡å¹ã§ããããšã瀺ããšã©ãŒã³ãŒãã§å¿çããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããããã«ããªãã¬ãã·ã¥ããŒã¯ã³ãèªå¯ãµãŒããŒãžæç€ºããŸãïŒRFC6749 ã® section 6ïŒã
-
èªå¯ãµãŒããŒã¯ããŠãŒã¶ãŒããã® OTP ãå¿ èŠã§ããããšã瀺ããšã©ãŒã³ãŒããšã
auth_sessionãè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒã« OTP ã®å ¥åãä¿ããŸãã
-
ã¯ã©ã€ã¢ã³ã㯠OTP ãš
auth_sessionããèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒãšããŠèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯
auth_sessionãš OTP ãæ€èšŒããèªå¯ã³ãŒããè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ãèªå¯ã³ãŒããããŒã¯ã³ã»ãªã¯ãšã¹ãïŒSection 6ïŒãšããŠããŒã¯ã³ã»ãšã³ããã€ã³ããžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯èªå¯ã³ãŒããæ€èšŒããèŠæ±ãããããŒã¯ã³ãçºè¡ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãä¿è·ããããªãœãŒã¹ãžã¢ã¯ã»ã¹ããããã«ãæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ããªãœãŒã¹ãµãŒããŒãžæç€ºããŸãã
A.7. Step-up Authentication using Confirmation SMS
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒã OTP
ã§èªèšŒããåŸã«ã以åã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãååŸããŠããŸããããŠãŒã¶ãŒãä¿è·ããããªãœãŒã¹ãžã¢ã¯ã»ã¹ããããšãããšããªãœãŒã¹ãµãŒããŒã¯è¿œå ã®èªèšŒã¬ãã«ãå¿
èŠã§ãããšå€æããã¹ãããã¢ããèªèšŒãããªã¬ããŸããã¹ãããã¢ããèªèšŒã®ä»æ§ã§å®çŸ©ããã
acr_values ãš max_age
ã䜿çšããŠãæãŸããèªèšŒã¬ãã«ã瀺ããŸããã¯ã©ã€ã¢ã³ãã¯ãacr_values ãš
max_age
ãã©ã¡ãŒã¿ã瀺ããŠèªå¯ãµãŒããŒãžèªå¯ãªã¯ãšã¹ããéå§ããŸããèªå¯ãµãŒããŒã¯ãacr_values
ãš max_age
ã®å€ãæºãããããŸã§è¿œå èªèšŒãä¿ããšã©ãŒã¡ãã»ãŒãžã§å¿çãããã®åŸãæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ããã³ãªãã¬ãã·ã¥ããŒã¯ã³ãçºè¡ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒèªèšŒãå«ãèªå¯ã³ãŒãä»äžãããŒïŒAuthorization Code Grant FlowïŒã®å®äºã«ç¶ããŠãçåœãªã¢ã¯ã»ã¹ããŒã¯ã³ãšé·åœãªãªãã¬ãã·ã¥ããŒã¯ã³ãæã£ãŠããŸãã
-
ã¯ã©ã€ã¢ã³ããã¢ã¯ã»ã¹ããŒã¯ã³ããªãœãŒã¹ãµãŒããŒãžæç€ºãããšããªãœãŒã¹ãµãŒããŒã¯ããŠãŒã¶ãŒãã¢ã¯ã»ã¹ããããªãœãŒã¹ãèžãŸãããšã¢ã¯ã»ã¹ããŒã¯ã³å ã®
acrã¯ã¬ãŒã ãäžååã§ãããšå€æããinsufficient_user_authenticationãšã©ãŒã³ãŒããšãšãã«ãæãŸããacr_valuesãšæãŸããmax_ageãè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ã
auth_sessionãacr_valuesãããã³max_ageãã©ã¡ãŒã¿ãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯
auth_sessionãæ€èšŒããacr_valuesã«åºã¥ããŠæºããã¹ãèªèšŒæ¹æ³ãå€å®ãã"error": "insufficient_authorization"ãš OTP ãå ¥åããªããã°ãªããªãããšã瀺ãã«ã¹ã¿ã ããããã£ãå«ããšã©ãŒã¬ã¹ãã³ã¹ïŒSection 5.2.2ïŒã§å¿çããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒã« OTP ãæ±ãããŠãŒã¶ãŒã¯ååŸããŠå ¥åããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯
auth_sessionãš OTP ãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯ OTP ãæ€èšŒããèªå¯ã³ãŒããè¿ããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ãèªå¯ã³ãŒããããŒã¯ã³ã»ãªã¯ãšã¹ãïŒSection 6ïŒãšããŠããŒã¯ã³ã»ãšã³ããã€ã³ããžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯èªå¯ã³ãŒããæ€èšŒããæŽæ°ããã
acrå€ãæã€ã¢ã¯ã»ã¹ããŒã¯ã³ãšãšãã«ãªãã¬ãã·ã¥ããŒã¯ã³ãçºè¡ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ã¢ã¯ã»ã¹ããŒã¯ã³ããªãœãŒã¹ãµãŒããŒãžæç€ºãããªãœãŒã¹ãµãŒããŒã¯
acrå€ãèŠä»¶ãæºããããšãæ€èšŒããäžã§ãä¿è·ããããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããŸãã
A.8. Registration
ãã®äŸã¯ããã®ãã©ããã§å®çŸ©ãããã¡ã«ããºã ã䜿çšããŠãã¡ãŒã«ã¢ãã¬ã¹ããå§ãŸãå®å šãªãŠãŒã¶ãŒç»é²ãããŒãäœæããæ¹æ³ã説æããŸãããã®äŸã§ã¯ãèªå¯ãµãŒããŒã®ããªã·ãŒã¯ããããã®ãã£ã¬ã³ãžãããããŸã§èªèãããŠããªãã£ãã¡ãŒã«ããã³é»è©±çªå·ãžéä¿¡ãããããšãèš±å¯ãããŠãŒã¶ãŒã¢ã«ãŠã³ãããã®å Žã§äœæããããšã§ãã
-
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒãããŠãŒã¶ãŒåãåéããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒåãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ãïŒSection 4.1ïŒãžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯ã
"error": "insufficient_authorization"ã"auth_session"ãããã³ã¡ãŒã«ã¢ãã¬ã¹ãåéããªããã°ãªããªãããšã瀺ãã«ã¹ã¿ã ããããã£ãå«ããšã©ãŒã¬ã¹ãã³ã¹ïŒSection 5.2.2ïŒãè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒããé»åã¡ãŒã«ã¢ãã¬ã¹ãåéããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ã
auth_sessionãã©ã¡ãŒã¿ãšãšãã«ã2 åç®ã®èªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãã®äžéšãšããŠãé»åã¡ãŒã«ã¢ãã¬ã¹ãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯é»åã¡ãŒã«ã¢ãã¬ã¹ãžæ€èšŒã³ãŒããéä¿¡ãã
"error": "insufficient_authorization"ã"auth_session"ãããã³é»åã¡ãŒã«æ€èšŒã³ãŒããå ¥åããªããã°ãªããªãããšã瀺ãã«ã¹ã¿ã ããããã£ãå«ããšã©ãŒã¬ã¹ãã³ã¹ãè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒãé»åã¡ãŒã«æ€èšŒã³ãŒããã¯ã©ã€ã¢ã³ããžã³ããŒããããæ¡å ãããŠãŒã¶ãŒäœéšãæç€ºããŸããé»åã¡ãŒã«æ€èšŒã³ãŒããå ¥åããããšãã¯ã©ã€ã¢ã³ãã¯ãé»åã¡ãŒã«æ€èšŒã³ãŒãã«å ããŠãçŽåã®ãšã©ãŒã¬ã¹ãã³ã¹ã§è¿ããã
auth_sessionãã©ã¡ãŒã¿ãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯
auth_sessionãçšããŠã»ãã·ã§ã³ã»ã³ã³ããã¹ããç¶æããé»åã¡ãŒã«æ€èšŒã³ãŒããæ€èšŒããŸããããã«ãã¢ã«ãŠã³ãå埩ã®ç®çã§é»è©±çªå·ãå¿ èŠã§ãããšå€æãã"error": "insufficient_authorization"ã"auth_session"ãããã³é»è©±çªå·ãåéããªããã°ãªããªãããšã瀺ãã«ã¹ã¿ã ããããã£ãå«ããšã©ãŒã¬ã¹ãã³ã¹ãè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒããæºåž¯é»è©±çªå·ãåéããŸãã
-
ã¯ã©ã€ã¢ã³ãã¯ã
auth_sessionãšãšãã«ãé»è©±çªå·ãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ããšããŠèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯
auth_sessionãã©ã¡ãŒã¿ãçšããŠä»¥åã®ãªã¯ãšã¹ããé¢é£ä»ããŸããé»è©±çªå·ãžç¢ºèªã³ãŒããéä¿¡ãã"error": "insufficient_authorization"ã"auth_session"ãããã³ SMS 確èªã³ãŒããå ¥åããªããã°ãªããªãããšã瀺ãã«ã¹ã¿ã ããããã£ãå«ããšã©ãŒã¬ã¹ãã³ã¹ãè¿ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒã SMS 確èªã³ãŒããå ¥åããããæ¡å ãããŠãŒã¶ãŒäœéšãæç€ºããŸããSMS æ€èšŒã³ãŒããå ¥åããããšãã¯ã©ã€ã¢ã³ãã¯ã確èªã³ãŒãã«å ããŠãçŽåã®ãšã©ãŒã¬ã¹ãã³ã¹ã§è¿ããã
auth_sessionãã©ã¡ãŒã¿ãå«ããŠãèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ããèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããŸãã -
èªå¯ãµãŒããŒã¯
auth_sessionãçšããŠã»ãã·ã§ã³ã»ã³ã³ããã¹ããç¶æããSMS æ€èšŒã³ãŒããæ€èšŒããäžã§ãã¯ã©ã€ã¢ã³ããžèªå¯ã³ãŒããçºè¡ããŸãã -
ã¯ã©ã€ã¢ã³ãã¯ãèªå¯ã³ãŒããããŒã¯ã³ã»ãªã¯ãšã¹ãïŒSection 6ïŒãšããŠããŒã¯ã³ã»ãšã³ããã€ã³ããžéä¿¡ããŸãã
-
èªå¯ãµãŒããŒã¯èªå¯ã³ãŒããæ€èšŒããèŠæ±ãããããŒã¯ã³ãçºè¡ããŸãã
Appendix B. Example Implementations
ãã®ä»æ§ãæåè£ã«å®è£ ããããã«ãèªå¯ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ããèªå¯ãã£ã¬ã³ãžã»ãªã¯ãšã¹ãïŒSection 5.1ïŒã§éä¿¡ããããšãæåŸ ãããå€ã«ã€ããŠã®ç¬èªã®å ·äœçèŠä»¶ã«å ããèªå¯ãã£ã¬ã³ãžã»ã¬ã¹ãã³ã¹ïŒSection 5.2ïŒã«ãããç¬èªã®å ·äœçãšã©ãŒã³ãŒããå®çŸ©ããå¿ èŠããããŸãã
以äžã¯ããŠãŒã¶ãŒåãš OTP ã§ãŠãŒã¶ãŒããã°ã€ã³ã§ããããã«ããå®å šãªå®è£ ã«å¿ èŠãªãã©ã¡ãŒã¿ã®äŸã§ãã
B.1. Authorization Challenge Request Parameters
Section 5.1 ã§å®çŸ©ããããªã¯ãšã¹ããã©ã¡ãŒã¿ã«å ããŠãèªå¯ãµãŒããŒã¯ä»¥äžã®è¿œå ãã©ã¡ãŒã¿ãå®çŸ©ããŸãã
"username":
ååã® Authorization Challenge Request ã« REQUIRED ã§ãã
"otp":
ãŠãŒã¶ãŒããåéãã OTPãäžã§å®çŸ©ããã otp_required ãšã©ãŒã«å¿çããŠ
Authorization Challenge Request ãå詊è¡ããéã« REQUIRED ã§ãã
B.2. Authorization Challenge Response Parameters
Section 5.2
ã§å®çŸ©ãããã¬ã¹ãã³ã¹ãã©ã¡ãŒã¿ã«å ããŠãèªå¯ãµãŒããŒã¯ã以äžã® error
ã¬ã¹ãã³ã¹ã®ããã®è¿œå å€ãå®çŸ©ããŸãã
"otp_required":
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒãã OTP ãåéãã2 åç®ã®ãªã¯ãšã¹ãã§ OTP
ãèªå¯ãã£ã¬ã³ãžã»ãšã³ããã€ã³ããžéä¿¡ããã¹ãã§ãã ãã®ãšã©ãŒå€ã§äœ¿çšãã HTTP
ã¬ã¹ãã³ã¹ã³ãŒã㯠401 Unauthorized ã§ãã
B.3. Example Sequence
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒã«ãŠãŒã¶ãŒåã®å ¥åãä¿ããååã® Authorization Challenge Request ã«ãŠãŒã¶ãŒåãå«ããŠéä¿¡ããŸãã
[B.3.] Example Sequence
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒã«ãŠãŒã¶ãŒåã®å ¥åãä¿ãããã®ãŠãŒã¶ãŒåãååã® Authorization Challenge Request ã«å«ããŠéä¿¡ããã
POST /authorize-challenge HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
username=alice&scope=photos&client_id=bb16c14c73415
Authorization Server ã¯ãOTP ãå¿ èŠã§ããããšã瀺ããšã©ãŒã¬ã¹ãã³ã¹ãéä¿¡ããã
HTTP/1.1 401 Unauthorized
Content-Type: application/json
Cache-Control: no-store
{ "error": "otp_required", "auth_session": "ce6772f5e07bc8361572f" }
ã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒã« OTP ã®å ¥åãä¿ããæ°ãã Authorization Challenge Request ãéä¿¡ããã
POST /authorize-challenge HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
auth_session=ce6772f5e07bc8361572f&otp=555121
Authorization Server ã¯ãæåŸ
ããããŠãŒã¶ãŒãç¹å®ããããã« auth_session
ãæ€èšŒãããã®åŸãã®ãŠãŒã¶ãŒã® OTP ãæ€èšŒããèªå¯ã³ãŒãã§å¿çããã
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{ "authorization_code": "uY29tL2F1dGhlbnRpY" }
ã¯ã©ã€ã¢ã³ãã¯èªå¯ã³ãŒãã token endpoint ã«éä¿¡ããã
POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&client_id=bb16c14c73415&code=uY29tL2F1dGhlbnRpY
Authorization Server 㯠access token ãš refresh token ã§å¿çããã
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{ "token_type": "Bearer", "expires_in": 3600, "access_token": "d41c0692f1187fd9b326c63d", "refresh_token": "e090366ac1c448b8aed84cbc07" }
[Appendix C.] Design Goals
ãã®ä»æ§ã¯ãã¯ã©ã€ã¢ã³ããèªå¯ã°ã©ã³ããååŸããããã«äœ¿çšã§ããæ°ããèªå¯ãããŒãå®çŸ©ããããã®ä»æ§ããã®ããã«èšèšããäž»ãªçç±ã¯ 2 ã€ããã
ããã«ãããæ¢åã® OAuth å®è£ ã¯ãtoken endpoint ãæ°ããããžãã¯ã§æ¡åŒµããå¿ èŠããªããæ¢åã³ãŒãã«å¯Ÿãã倿Žãããå°ãªãã§ããã代ããã«ãæ°ããããžãã¯ã¯å®å šã«æ°ãã endpoint ã«ã«ãã»ã«åã§ãããã®åºåã¯èªå¯ã³ãŒãã§ãããæ¢åã® token endpoint ã§ access token ãšåŒãæããããšãã§ããã
ããã¯ãŸãããªãã€ã¬ã¯ãããŒã¹ã®èªå¯ã³ãŒããããŒã®æ¢åã¢ãŒããã¯ãã£ãããå¿ å®ã«åæ ããŠãããèªå¯ã³ãŒããããŒã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ãŸããã©ãŠã¶ã authorization endpoint ã«ãªãã€ã¬ã¯ãããããšã§ãªã¯ãšã¹ããéå§ãããã®æç¹ã§ authorization server ã¯ãé©åãªæ¹æ³ã§ãŠãŒã¶ãŒãèªèšŒããããã®ç¬èªã®ã«ã¹ã¿ã ããžãã¯ãåŒãç¶ããå®éã®ãŠãŒã¶ãŒèªèšŒããã»ã¹ã®ããã«ä»ã® endpoint ãšããåãããããšãããããã®åŸãauthorization server ã¯ãŠãŒã¶ãŒãã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã«ãªãã€ã¬ã¯ãããŠæ»ããã¯ãšãªæååã«èªå¯ã³ãŒããå«ããããã®ä»æ§ã¯ãã¯ã©ã€ã¢ã³ãããŸã Authorization Challenge Endpoint ã« POST ãªã¯ãšã¹ããè¡ãããã®æç¹ã§ authorization server ããŠãŒã¶ãŒãèªèšŒããããã®ç¬èªã®ã«ã¹ã¿ã ããžãã¯ãæäŸããæçµçã«èªå¯ã³ãŒããè¿ãããšã§ãæ¢åã®ã¢ãããŒããèžè¥²ããŠããã
å¥ã®èšèšãšããŠãWebAuthn ã OTP ãªã©ã®ç°ãªãèªèšŒèŠçŽ ã«å¯ŸããŠæ°ããã«ã¹ã¿ã grant type ãå®çŸ©ããããšãèããããããã®èšèšã®æ¬ ç¹ã¯ãæŠå¿µçã«ãããã®èªèšŒæ¹æ³ã OAuth grant ã«å¯Ÿå¿ããªãããšã§ãããèšãæãããšãOAuth ã® authorization grant ã¯ããŠãŒã¶ãŒãããããŒã¿ãžã®ã¢ã¯ã»ã¹ãèªå¯ããæå³ãæãããã®ã§ããããã®èªå¯ã¯èªå¯ã³ãŒãã«ãã£ãŠè¡šããããŠãŒã¶ãŒãèªèšŒããç°ãªãæ¹æ³ã«ãã£ãŠè¡šãããã®ã§ã¯ãªãã
å¥ã®ä»£æ¿æ¡ãšããŠãAuthorization Challenge Endpoint ããŠãŒã¶ãŒã®èªèšŒã«æåããéã« access token ãè¿ãããã«ããããšãèãããããããã¯æå³çã«æ¡çšãããªãã£ãããªããªããããŒã¯ã³ãè¿ãããæ°ãã endpoint ã远å ããããšã«ãªãããã§ãããã»ãšãã©ã®ãããã€ã¡ã³ãã§ã¯ãToken Endpoint ã¯å®éã«ããŒã¯ã³ãçºè¡ããå¯äžã® endpoint ã§ãããããŒã¯ã³ãã€ã³ãã£ã³ã°ãã¬ãŒãå¶éãªã©ã«é¢ãããã¹ãŠã®å®è£ ããžãã¯ãå«ããåæ§ã®ããžãã¯ãšä¿è·ãåããå¿ èŠãããããŒã¯ã³çºè¡ endpoint ãæ°ãã«å®çŸ©ããã®ã§ã¯ãªããæ°ãã endpoint ã¯èªå¯ã³ãŒãã®ã¿ãçºè¡ãããããæ¢åã® Token Endpoint ã§ããŒã¯ã³ãšäº€æã§ããããã«ãããããã¯ãªãã€ã¬ã¯ãããŒã¹ã® Authorization Code Flow ãšåæ§ã§ããã
ãããã®èšèšäžã®æææ±ºå®ã«ãããauthorization server ã®å®è£ ã¯ããã®ä»æ§ããµããŒãããããã«å¿ èŠãªå€æŽãåé¢ããã«ãã»ã«åã§ããã¯ãã§ããã
[Appendix D.] Document History
-02
- æå±ãšè¬èŸãæŽæ°
- ç·šéäžã®æç¢ºå
- Attestation-Based Client Authentication ãžã®åç §ã远å
-01
- ããŠãŒã¶ãŒã®åèªå¯ïŒre-authorization of the userïŒããããŠãŒã¶ãŒã®åèªèšŒïŒre-authentication of the userïŒãã«ä¿®æ£
-00
- OAuth WG ã«æ¡æã以åã®å人ãã©ãããã倿Žãªã
Acknowledgments
èè ãã¯ããããè°è«ããã OAuth Security Workshop 2023 ã»ãã·ã§ã³ã®åå è ãããã³æçµä»æ§ã圢äœãæŽããããšã«å¯äžãã以äžã®å人ã®ã¢ã€ãã¢ããã£ãŒãããã¯ãæèšã«æè¬ããã
Alejo FernandezãBrian CampbellãDean SaxeãDick HardtãDmitry TeleginãJanak AmarasenaãJeff CorriganãJohn BradleyãJustin RicherãMike JonesãOrie SteeleãTim CappalliãTobias LookerãYaron Shefferã
Authors' Addresses
| é ç® | å 容 |
|---|---|
| æ°å | Aaron Parecki |
| æå± | Okta |
| aaron@parecki.com | |
| æ°å | George Fletcher |
| æå± | Capital One Financial |
| george.fletcher@capitalone.com | |
| æ°å | Pieter Kasselman |
| æå± | Defakto Security |
| pieter@defakto.security |