ãã®è¨äºã¯Digital Identityæè¡åå¼·ä¼ #iddance Advent Calendar 2020 第5æ¥ç®ã®è¨äºã§ããããããã°Qiitaã®å人æ å ±æµç¨é¨åã®ã¨ãã«ã¢ã«ã¦ã³ãæ¶ããã®ã§ããã¢ããã³ãã«ã¬ã³ãã¼å°ç¨ã®ã¢ã«ã¦ã³ããæ¹ãã¦ä½ãç´ãã¾ããã
ã¯ããã«
ä»å¹´ã®3æã®æè¡æ¸å ¸å¿æ´ç¥ã«ã¦ãµã¼ã¯ã«Cryptic Commandã¨ãã¦"OAuth of the Gatewatch"ã¨ããã¿ã¤ãã«ã§OAuth Security BCP*1ãXYZ*2ã»XAuth*3ã解説ããå人èªãæ¸ãã¾ãããä»åã®è¨äºã§ã¯2020å¹´3æ以éã®OAuth 2.1ãXYZ/XAuthæ¹ãGNAP(Grant Negotiation and Authorization Protocol)ã®ååã«ã¤ãã¦è»½ãç´¹ä»ãããã¨æãã¾ãã
ãªãOAuth of the Gatewatchã¯è«¸äºæ *4ã«ããç¾å¨ã¯é å¸ãä¸æ¢ãã¦ãã¾ãããä»å¾ã®åå次第ã§ã¯æ¸ãç´ãã®ä¸ã§åãªãªã¼ã¹ããå¯è½æ§ã¯ã¼ãã§ã¯ãªãã¨èãã¦ãã¾ãã
OAuth 2.1, OAuth Security BCP
OAuth of the Gatewatchå·çæç¹(=IETF 107ç´å)ã§ã¯OAuth 2.1ã¯side meetingã§è§¦ããããç¨åº¦ã ã£ãæ±ãã§ãããããã®å¾3/7ã«draft-00ãæåºããã7/30ãã¤ã¾ãIETF 108ã®å¾ã«Working Group Draftã«ãªã£ã¦ãã¾ãã
OAuth 2.1ã®ç®çã¯ææ¸ä¸
This specification replaces and obsoletes the OAuth 2.0 Authorization Framework described in RFC 6749.
ã¨ããããã« OAuth 2.0(RFC 6749)ãç½®ãæãã ãã¨ã¨å®ç¾©ããã¾ãããRFC 8252, OAuth 2.0 Security Best Current Practice, OAuth 2.0 for Browser-Based Appsã§RFC 6749ã®å 容ãæ´æ°ããã¦ãããã¨ã«ã¤ãã¦è¨åãã¦ããããããã®ããã¥ã¡ã³ãã®å 容ãã¾ã¨ã(consolidate)ãinsecureã¨ããã£ãæ©è½ãåãé¤ããã¨ã§ãããå®ç¾ãããã¨ãã¦ãã¾ãã
OAuth 2.0ã¨ã®å·®å㯠Differences from OAuth 2.0 (12.) ã«ã¾ã¨ã¾ã£ã¦ãã¾ãããã®å 容ã¯ã¾ã¨ããã¨ä»¥ä¸ã®ããã«ãªãã¾ã:
- Authorization Code Flowã«ãããPKCEã®å¿ é å
- Redirect URIã®æ¯è¼ã»æ¤è¨¼ã¯exact string matchã§è¡ãããæ確å
- Implicit Flowã®åé¤
- Resource Owner Password Credentials Flowã®åé¤
- Bearer Tokenã®ä½¿ãæ¹ã«ã¤ãã¦ãURIã®query stringä¸ã§ç¨ããç¨æ³ãåé¤
- Refresh Tokenã®ä½¿ãæ¹ã«ã¤ãã¦ãone-time useãããã¯sender-constrainedãè¦æ±
ãããåãã¦OAuth 2.0 Security Best Current Practiceã®draft-16ã§ã¯public clientã§ã®PKCEãMUSTã«ããã¨ããä¿®æ£ãåæ ããã¦ãã¾ãã
GNAP(Grant Negotiation and Authorization Procotol)
OAuth 2.1ã¯æ¢åã®ä»æ§ãæ´æ°ãã¦ç½®ãæãããã®ã§ããã®ã«å¯¾ãã¦ãXYZ/XAuthã®è°è«ã®çµæã§ããGNAP(Grant Negotiation and Authorization Procotol)ã¯OAuth 2ã®æ¡å¼µã§ãOAuth 3ã§ããªãOAuth 2ã®éçãä¹ãè¶ããããã®æ°ãããããã³ã«ã§ãããã¨ä½ç½®ã¥ãããã¦ãã¾ãã
XYZ/XAuth/GNAPã®ä½ãå¬ããã®
XYZã®ãã¨ãã¨ã®ã³ã³ã»ããã"Transactional Authorization"ã¨å¼ã°ãã¦ãããã¨ããXAuthã¯Grantã¨ããè¦ç´ ãæä½ããREST APIãéãã¦èªå¯ãå®ç¾ãããããã³ã«ã§ãã£ããã¨ãããããããã«ãXYZ/XAuth/GNAPã¯èªå¯ã®ããã»ã¹ãTransactionãGrantã¨ãã£ãè¦ç´ ã«æãããã¨ã§æ´çãããã¨ã大ããªç®çã¨ãã¦ãã¾ãã
ã¢ã¯ã»ã¹ãã¼ã¯ã³ãå¾ãã¾ã§ã®ãªã¯ã¨ã¹ãã»ã¬ã¹ãã³ã¹ã®éåãä¸ã¤ã®è¦ç´ ï¼ã¤ã¾ãä¸ã¤ã®IDãéãã¦èå¥å¯è½ãªè¦ç´ ï¼ã«æãããã¨ã§ãAuthorization Serverããªã¯ã¨ã¹ãã®å¯¾å¿é¢ä¿ãåãéãããã¨ã«ãã£ã¦çºçããAuthorization Code Injectionãªã©ã®ã»ãã¥ãªãã£èå¼±æ§ã解決ã§ãããã¨ããã¡ãªãããçã¾ãã¾ãã
ã¾ãããµã¼ãã¼ãTransaction/Grantã®ç¶æ ãç¹å®ã®IDã«é¢é£ä»ãã¦ä¿åãã¦ãããã¨ãå¯è½ã«ãªããããèªå¯ã«é¢ãã¦è¿½å ã®æ å ±ãä»ã®ãµã¤ãããå¾ãå¿ è¦ãåºãéã«ãä»ã¾ã§ã®OAuthãªã©ã®èªå¯ã§ã¯ä¸åº¦ä»ã¾ã§è¡ã£ãèªå¯ãä¸æããä¸ã§ããç´ãå¿ è¦ããã£ãã®ã«å¯¾ãã¦ãä»ã®ãµã¤ãã§æ å ±ãå¾ãå¾è©²å½ã®IDãå©ç¨ãã¦èªå¯ã®æç¶ããåéãããã¨ãã§ãã¾ãï¼ãã®ãããªã¦ã¼ã¹ã±ã¼ã¹ã®è©³ç´°ã¯IETF 106ã®å ±åä¼ã¹ã©ã¤ãã®ä¸ã§èª¬æãã¦ãã¾ãï¼28påå¾ï¼ã®ã§ãã¡ãããåç §ãã ããï¼ã
OAuth of the Gatewatchå·ç以éã®åå
IETF 107ã®å¾ãWorking Groupã®å½¢æã«ããã£ã¦å称ã®æ±ºå®ãè¡ãã*5ãXAuthã«ã¦ç¨ãããã¦ããGrantã¨ããç¨èªãåãå ¥ããGNAPã¨ããå称ãæ¡ç¨ããã¾ãããIETF 108æç¹ã§ã®Working Groupã®status pageã«ã¯é¢é£ããããã¥ã¡ã³ãã¨ãã¦XAuthãããã³ã«ã®è©³ç´°ã示ããdraft-hardt-gnap-advanced-00ã¨draft-hardt-gnap-jose-01ã®2ã¤ãããã¾ãããããã®æç¹ã§ã¯XYZã¨XAuthã®ã©ã¡ãã軸ã«ãããã³ã«ãæ§æãããã¯æ±ºã¾ã£ã¦ãã¾ããã§ãã*6ã
çµè«ããããã¨ã10æã«WGã¯richer-transactional-authzãã¤ã¾ãXYZããã¨ã«ããææ¸ãgnap-core-protocol-00ã¨ãã¦WG Documentã¨ãã¦æ¡ç¨ãã¾ããç¾å¨ã®-02ã®æç« ã大çã¯-00ã®ã¾ã¾ã§ããã1.1ç¯ã«ç¤ºããã¦ããç¨èªãXYZã®ç¨èªã®ç¨æ³ããã®ã¾ã¾ç¨ãããã¦ãããã¨ãããXYZ vs XAuthã¯XYZã®åå©ã«çµãã£ããã¨ãããã§ããããXAuthã®é¢é£ããã¥ã¡ã³ãã§ãã人ådraftã8æããæ´æ°ããã¦ããªãç¹ããã®ç¾ç¶ã示åãã¦ããã¨ããã¾ããã¨ã¯ããXAuthããã®ã¾ã¾æ¨ã¦ããã¨ã¯ãã¡ããããªãããã§ãGNAP WGå ã«ãã¶ã¤ã³ãã¼ã ãå½¢æãããXAuthã¨XYZããæ©è½ãããã¯ã¢ãããããã¶ã¤ã³ãç®æãã¦æç« åãé²ãã¦ããããã®ããç¾å¨ã®ããã¥ã¡ã³ãã¯XYZã»XAuthãããã¨ãäºææ§ããªããã¨ããç¶æ ã®ããã§ãã
ããããGNAPã®ååã追ã£ã¦ã¿ãããã¨ããæ¹ã¯gnap-core-protocolã®Internet-Draftã¨gnap-core-protocolã®GitHubã¬ãã¸ããªãä¸å¿ã«è¦ã¦ããã¨ããã§ãããã
è¨äºãµãã¿ã¤ãã«ã®ç±æ¥
Magic: the Gatheringã®Oath of the Gatewatchã®æ¬¡ã®ã¨ãã¹ãã³ã·ã§ã³ãShadows over Innistradãªã®ã§ï¼å®ç´ï¼ã
*1:å·çæç¹ã§ã¯draft no.ã¯14ããªã³ã¯ã¯å·çæç¹ææ°ã®ãã®ã§ãã16
*2:å½æã®å称ããªã³ã¯ã«ããdraft-14ã§ã¯ãã§ã«æ°å称ã«å¤ãã£ã¦ãã
*3:å½æã¯draft-02ãæ¬è¨äºå·çæç¹ææ°ã¯draft-14
*4:ãã³ã: Wizards of the Coast社ã«ç®ãã¤ããããããã§ã¯ãªãï½ãã¾ãããã®disclaimerã®å 容ã«é¢é£ãã¦ç«ãå¹ãã
*5:å½åã«ããã£ã¦ãç¹å®ã®è¨èªã§offensiveãªèªã使ãã®ã¯é¿ããããã®æªãä¾ã¨ãã¦Federation Under Cryptographic Keysã¨ããå称ãåºãã¦ããã®ã«ã¯ç¬ã£ã
*6:ç¾æç¹ã§snapshotãæã£ã¦ããçç±ã¯ããã¯IETF 108ç´å¾ã®ã¡ã¢ãåç §ãã¦æ¸ãã¦ãããã