OpenID Federation 1.0 - draft 46
WorkgroupïŒOpenID Connect Working Group\ PublishedïŒ2025幎12æ4æ¥\ AuthorsïŒ
- R. HedbergïŒEd.ïŒ / independent
- M.B. Jones / Self-Issued Consulting
- A.Ã . Solberg / Sikt
- J. Bradley / Yubico
- G. De Marco / independent
- V. Dzhuvinov / Connect2id
Abstract
ãã§ãã¬ãŒã·ã§ã³ã¯ãäºããä¿¡é Œããåœäºè éã®åæãšããŠè¡šçŸã§ãããäºè éãã§ãã¬ãŒã·ã§ã³ã§ã¯ãåäžãã§ãã¬ãŒã·ã§ã³ã«å±ãã2ã€ã®çµç¹ã®éã§çŽæ¥ã®ä¿¡é Œã確ç«ã§ãããå€è éãã§ãã¬ãŒã·ã§ã³ã§ã¯ãäºè éã®åæã¯å®åäžé©ããªãããšãããããã®å Žåã第äžè ã«ãã£ãŠä¿¡é Œãåªä»ã§ãããæ¬ä»æ§ã¯ãã®ã¢ãã«ãçšããã
ãã§ãã¬ãŒã·ã§ã³å ã®Entityã¯ãããåãããä»ã®Entityãåäžãã§ãã¬ãŒã·ã§ã³ã«å±ããŠããããšãä¿¡é Œã§ããªããã°ãªããªãããŸããä»ã®Entityãèªãã«ã€ããŠå ¬éããæ å ±ããäŒéäžã«æ¹ãããããŠãããããã§ãã¬ãŒã·ã§ã³ã®ããªã·ãŒã«æºæ ããŠããããšãä¿¡é Œã§ããªããã°ãªããªãã
æ¬ä»æ§ã¯ãå€è éãã§ãã¬ãŒã·ã§ã³ãæ§ç¯ããããã®åºæ¬ã³ã³ããŒãã³ããå®çŸ©ããããŸããOpenID Connect ããã³ OAuth 2.0 ã®æèã§ããããé©çšããæ¹æ³ãå®çŸ©ããããããã®ã³ã³ããŒãã³ãã¯ãä¿¡é Œç¢ºç«ãç®çãšããŠä»ã®ã¢ããªã±ãŒã·ã§ã³ãããã³ã«ã§ãå©çšã§ããã
Table of Contents
- OpenID Federation 1.0 - draft 46
- Abstract
- Table of Contents
- 1. Introduction
- 2. Overall Architecture
- 3. Entity Statement
- 3.1. Claims that MUST or MAY Appear in both Entity Configurations and Subordinate Statements
- 3.2. Claims that MUST or MAY Appear in Entity Configurations but Not in Subordinate Statements
- 3.3. Claims that MUST or MAY Appear in Subordinate Statements but Not in Entity Configurations
- 3.4. Claims Used in Explicit Registration Requests
- 3.5. Claims Used in Explicit Registration Responses
- 3.6. Entity Statement Validation
- 3.7. Entity Statement Examples
- 4. Trust Chain
- 5. Metadata
- 6. Federation Policy
- 7. Trust Marks
- 7.5. Trust Mark Delegation Example
- 8. Federation Endpoints
- 8.1. Fetching a Subordinate Statement
- 8.2. Subordinate Listings
- 8.3. Resolve Entity
- 8.4. Trust Mark Status
- 8.5. Trust Marked Entities Listing
- 8.6. Trust Mark Endpoint
- 8.7. Federation Historical Keys Endpoint
- 8.8. Client Authentication at Federation Endpoints
- 9. Obtaining Federation Entity Configuration Information
- 10. Resolving the Trust Chain and Metadata
- 11. Updating Metadata, Key Rollover, and Revocation
- 12. OpenID Connect Client Registration
- 8.9. Error Responses
- 9. Obtaining Federation Entity Configuration Information
- 10. Resolving the Trust Chain and Metadata
- 11. Updating Metadata, Key Rollover, and Revocation
- 12. OpenID Connect Client Registration
- 12.2. Explicit Registration
- 12.2.1. Explicit Client Registration Request
- 12.2.2. Processing Explicit Client Registration Request by OP
- 12.2.3. Successful Explicit Client Registration Response
- 12.2.4. Explicit Client Registration Error Response
- 12.2.5. Processing Explicit Client Registration Response by RP
- 12.2.6. After an Explicit Client Registration
- 12.3. Registration Validity and Trust Reevaluation
- 12.4. Differences between Automatic Registration and Explicit Registration
- 12.5. Rationale for the Trust Chain in the Request
- 13. General-Purpose JWT Claims
- 14. Claims Languages and Scripts
- 15. Media Types
- 15.1. "application/entity-statement+jwt" Media Type
- 15.2. "application/trust-mark+jwt" Media Type
- 15.3. "application/resolve-response+jwt" Media Type
- 15.4. "application/trust-chain+json" Media Type
- 15.5. "application/trust-mark-delegation+jwt" Media Type
- 15.6. "application/jwk-set+jwt" Media Type
- 15.7. "application/explicit-registration-response+jwt" Media Type
- 15.8. "application/trust-mark-status-response+jwt" Media Type
- 16. String Operations
- 17. Implementation Considerations
- 18. Security Considerations
- 19. Privacy Considerations
- 20. IANA Considerations
- 20.5. OAuth Extensions Error Registration
- 20.6. JSON Web Signature and Encryption Header Parameters Registration
- 20.7. JSON Web Key Parameters Registration
- 20.8. JSON Web Token Claims Registration
- 20.9. Well-Known URI Registration
- 20.10. Media Type Registration
- 21. References
- 21.1. Normative References
- 21.2. Informative References
- A.2.2. Entity Configuration for https://umu.se
- A.2.3. Subordinate Statement Published by https://umu.se about https://op.umu.se
- A.2.4. Entity Configuration for https://swamid.se
- A.2.5. Subordinate Statement Published by https://swamid.se about https://umu.se
- A.2.6. Entity Configuration for https://edugain.geant.org
- A.2.7. Subordinate Statement Published by https://edugain.geant.org about https://swamid.se
- A.2.8. Verified Metadata for https://op.umu.se
- A.3. Examples of the Two Ways of Doing Client Registration
- A.3.1. RP Sends Authentication Request (Automatic Client Registration)
- A.3.2. RP Starts with Client Registration (Explicit Client Registration)
1. Introduction
æ¬ä»æ§ã¯ãçžäºã«ããåãããã2ã€ã®EntityããTrust Anchor ãšåŒã°ããä¿¡é Œããã第äžè ãä»ããŠãã©ã®ããã«ããŠäž¡è ã®éã§ä¿¡é Œã確ç«ã§ããããèšè¿°ãããTrust Anchor ã¯ãEntityã«ã€ããŠã®ã¹ããŒãã¡ã³ããçºè¡ããããšãäž»ç®çãšããEntityã§ãããã¢ã€ãã³ãã£ãã£ã»ãã§ãã¬ãŒã·ã§ã³ã¯ãæ¬ä»æ§ãçšããŠã1段以äžã®æš©åšã¬ãã«ã«ããå®çŸã§ãããæš©åšã®äŸãšããŠããã§ãã¬ãŒã·ã§ã³éçšè ãçµç¹ãçµç¹å ã®éšéãåå¥ãµã€ãããããæ¬ä»æ§ã¯ããã§ãã¬ãŒã·ã§ã³ã®ãããªåçãã€åæ£ããä¿¡é Œãããã¯ãŒã¯ãäœãããã«å¿ èŠãšãªããåºæ¬çãªæè¡çä¿¡é Œã€ã³ãã©ã®æ§æèŠçŽ ãæäŸããã
æ¬ä»æ§ãæ±ãã®ã¯ããã§ãã¬ãŒã·ã§ã³å ã®Entityå士ãäºããã©ã®ããã«ç¥ããããšããç¹ã«éãããç¹ã«æ³šæããããšã1ã€ã®çµç¹ã¯ããã§ãã¬ãŒã·ã§ã³å ã§è€æ°ã®EntityãšããŠè¡šçŸãããŠããããããã«ã1ã€ã®Entityã¯è€æ°ã®ãã§ãã¬ãŒã·ã§ã³ã«å±ããŠãããã2ã€ã®Entityãåäžãã§ãã¬ãŒã·ã§ã³ã«å±ããããšãå€å®ããããšããæ¬ä»æ§ã«ãããäž¡è ã®éã®ä¿¡é Œç¢ºç«ã®åºç€ãšãªãã
ãã¡ããããtrustããšããèªã¯æ¥åžžçšèªãšããŠããšã³ãã£ãã£ãšãã®è¡çºã®ã»ãã¥ãªãã£ãä¿¡é Œæ§ãå®å šæ§ã«å¯Ÿãã確信ãå«ãæå³ã§ãçšããããããã®çš®ã®trustã¯ãéå»ã®å®çžŸãã»ãã¥ãªãã£èªèšŒãéææ§ã®é«ãéçšæ £è¡ãªã©ã®çµéšç蚌æ ã«ãã£ãŠç¢ºç«ãããããšãå€ãããããã¯ã»ãã¥ãªãã£æšæºãžã®æºæ ãå«ççãªè¡åãç¶ç¶ããŠããå®çžŸã瀺ããæç¢ºã«ããŠãããšããã®ããåºãæå³ã§ã®trustã¯éèŠã§ã¯ããããæ¬ä»æ§ãéæããç¯å²ã倧ããè¶ ããã
以äžã¯ã2ã€ã®ç°ãªãTrust Anchorãæ ¹ãšããŠãäžéšã®ã¡ã³ããŒãå ±æãã2ã€ã®ãã§ãã¬ãŒã·ã§ã³ã®äŸã§ãããåEntityã¯ãå ±éã®Trust Anchorãå°ãªããšã1ã€æã€ããšã«ãã£ãŠãä»ã®ä»»æã®Entityãšçžäºã®ä¿¡é Œã確ç«ã§ãããå³ã§ã¯æ¬¡ã®ç¥èªãçšããïŒOpenID Provider (OP)ãRelying Party (RP)ãResource Server (RS)ãAuthorization Server (AS)ã
.-----------------. .-----------------.
| Trust Anchor A | | Trust Anchor B |
'------.--.-------' '----.--.--.------'
| | | | |
.--' '---. .-------------------' | |
| | | | |
.---v. .-----v-v------. .-----------' |
| OP | | Intermediate | | |
'----' '--.--.--.-----' | .---------v----.
| | | | | Intermediate |
.-------' | '------. | '---.--.--.----'
| | | | | | |
.--v-. .-v--. .v--v. .---' | '----.
| RP | | RS | | OP | | | |
'----' '----' '----' | .--v-. .-v--.
| | RP | | RP |
| '----' '----'
|
.-------v------.
| Intermediate |
'----.--.--.---'
| | |
.-----' | '----.
| | |
.--v-. .--v-. .-v--.
| OP | | RP | | AS |
'----' '----' '----'
Figure 1: Two Coexisting Federations with Some Members in Common
1.1. Requirements Notation and Conventions
æ¬æžã«ããããMUSTããMUST NOTããREQUIREDããSHALLããSHALL NOTããSHOULDããSHOULD NOTããRECOMMENDEDããNOT RECOMMENDEDããMAYããOPTIONALããšããããŒã¯ãŒãã¯ãããã«ç€ºãããã«ãã¹ãŠå€§æåã§è¡šèšãããŠããå Žåã«éããBCP 14 [RFC2119] [RFC8174] ã«èšèŒã®ãšããã«è§£éãããã
æ¬ä»æ§ã«ããã JSON Web Signature (JWS) [RFC7515] ããã³ JSON Web Encryption (JWE) [RFC7516] ã®ããŒã¿æ§é ã®å©çšã¯ãã¹ãŠãJWS Compact Serialization ãŸã㯠JWE Compact Serialization ãçšããïŒJWS JSON Serialization ããã³ JWE JSON Serialization ã¯äœ¿çšããªãã
1.2. Terminology
æ¬ä»æ§ã¯ãJSON Web Token (JWT) [RFC7519] ã§å®çŸ©ããããClaimããClaim NameããClaim ValueããJSON Web Token (JWT)ããJWT Claims SetããšããçšèªãOpenID Connect Core 1.0 [OpenID.Core] ã§å®çŸ©ããããOpenID Provider (OP)ããRelying Party (RP)ããšããçšèªããã㊠OAuth 2.0 [RFC6749] ã§å®çŸ©ããããAuthorization EndpointããAuthorization Server (AS)ããClientããClient AuthenticationããClient IdentifierããClient SecretããGrant TypeããProtected ResourceããRedirection URIããRefresh TokenããResource Server (RS)ããToken Endpointããšããçšèªã䜿çšããã
æ¬ä»æ§ã¯ããã«ã次ã®çšèªãå®çŸ©ããïŒ
- EntityïŒåå¥ãã€ç¬ç«ããååšãæã¡ãããæèã«ãããŠèå¥ã§ãããã®ã
- Entity IdentifierïŒ1ã€ã®Entityã«çµã³ä»ãããããã°ããŒãã«ã«äžæãªæååèå¥åãæ¬ä»æ§ã§å®çŸ©ããããã¹ãŠã®Entity Identifierã¯ãhttpsã¹ããŒã ã䜿çšããhostèŠçŽ ãæã€URLã§ãããportèŠçŽ ããã³pathèŠçŽ ãå«ãã§ããããquery parameterèŠçŽ ãŸãã¯fragmentèŠçŽ ãå«ãã§ã¯ãªããªããæ¬ä»æ§ã®ãããã¡ã€ã«ã¯ãä»çš®ã®Entity Identifierããã³ããã«ä»éããåŠçèŠåãå®çŸ©ããŠãããã
- Trust AnchorïŒä¿¡é Œããã第äžè ã衚ãEntityã
- Federation EntityïŒEntityããTrust AnchorãŸã§ã®Trust Chainãæ§æã§ããEntityã
- Entity StatementïŒEntityããã§ãã¬ãŒã·ã§ã³ïŒè€æ°å¯ïŒã«åå ããããã«å¿ èŠãªæ å ±ãå«ãã眲åä»ãJWTãããã«ã¯ãèªå·±ã«é¢ããã¡ã¿ããŒã¿ãããã³åœè©²Entityãæš©åšãæã€ä»ã®Entityã«é©çšãããããªã·ãŒãå«ãŸããã
- Entity ConfigurationïŒEntityãèªå·±ã«ã€ããŠçºè¡ããEntity StatementãEntityã®çœ²åéµãšãauthority hints ãªã©ãTrust Chain解決ããã»ã¹ãå¶åŸ¡ããããã«çšãããã远å ããŒã¿ãå«ãã
- Subordinate StatementïŒSuperior Entity ãããã® Immediate Subordinate ã§ããEntityã«ã€ããŠçºè¡ããEntity Statementã
- Entity TypeïŒãã§ãã¬ãŒã·ã§ã³å ã§Entityãæ ã圹å²ããã³æ©èœãEntityã¯å°ãªããšã1ã€ã®åã§ãªããã°ãªãããè€æ°ã®åã§ãã£ãŠããããäŸãã°ãEntityã¯åæã« OpenID Provider ãš Relying Party ã®äž¡æ¹ã«ãªãåŸãã
- Entity Type IdentifierïŒEntity Type ã衚ãæååèå¥åã
- Federation OperatorïŒãã§ãã¬ãŒã·ã§ã³ã«å¯ŸããŠæš©åšãæã€çµç¹ããã§ãã¬ãŒã·ã§ã³éçšè ã¯ãèªèº«ã®ãã§ãã¬ãŒã·ã§ã³å ã®Entityã®ããã« Trust AnchorïŒè€æ°å¯ïŒã管çããã
- Intermediate EntityïŒTrust Anchor ã«ãã£ãŠçºè¡ããããã®ãš Trust Chain ã®å¯Ÿè±¡ïŒé垞㯠Leaf EntityïŒã«ãã£ãŠçºè¡ããããã®ã®éã®ã©ããã«çŸããEntity Statementãçºè¡ããEntityãæ¬ä»æ§ã§ã¯ Intermediate Entity ãš Intermediate ã¯å矩ã§çšããã
- Leaf EntityïŒSubordinate Entities ãæããªãEntityãLeaf Entityã¯éåžžãOpenID Connect ã® Relying Party ã OpenID Provider ã®ãããªãããã³ã«äžã®åœ¹å²ãæ ããæ¬ä»æ§ã§ã¯ Leaf Entity ãš Leaf ã¯å矩ã§çšããã
- Subordinate EntityïŒä¿¡é Œéå±€ã«ãã㊠Superior EntityïŒTrust Anchor ãŸã㯠IntermediateïŒã®äžã«äœçœ®ããEntityïŒéã«IntermediatesãååšããŠãããïŒãæ¬ä»æ§ã§ã¯ Subordinate Entity ãš Subordinate ã¯å矩ã§çšããã
- Superior EntityïŒä¿¡é Œéå±€ã«ãããŠ1ã€ä»¥äžã®EntityïŒLeaf ãŸã㯠IntermediateïŒã®äžã«äœçœ®ããEntityïŒéã«IntermediatesãååšããŠãããïŒãæ¬ä»æ§ã§ã¯ Superior Entity ãš Superior ã¯å矩ã§çšããã
- Immediate Subordinate EntityïŒä¿¡é Œéå±€ã«ãã㊠Superior Entity ã®çŽäžã«äœçœ®ããéã«IntermediatesãååšããªãEntityãæ¬ä»æ§ã§ã¯ Immediate Subordinate Entity ãš Immediate Subordinate ã¯å矩ã§çšããã
- Immediate Superior EntityïŒä¿¡é Œéå±€ã«ãããŠ1ã€ä»¥äžã® Subordinate Entities ã®çŽäžã«äœçœ®ããéã«IntermediatesãååšããªãEntityãæ¬ä»æ§ã§ã¯ Immediate Superior Entity ãš Immediate Superior ã¯å矩ã§çšããã
- Federation Entity DiscoveryïŒTrust Chain ã®å¯Ÿè±¡ã® Entity Identifier ããéå§ããéžæããã Trust Anchor ã«å°éãããŸã§Entity Statementsãåéããããã»ã¹ãåéããEntity Statementsãã Trust Chain ãæ§ç¯ããŠæ€èšŒãããFederation Entity Discovery ã®çµæãšããŠãTrust Chain ãã察象ã®ã¡ã¿ããŒã¿ãæ§ç¯ãããã
- Trust ChainïŒTrust Chain ã®å¯Ÿè±¡ãšãªãEntity ConfigurationïŒé垞㯠Leaf EntityïŒããéå§ããTrust Anchor ã§çµãããEntity Statements ã®åã
- Trust MarkïŒèªå®æ©é¢ã«ãã£ãŠå®ãããããé©åã«ã¹ã³ãŒããããä¿¡é Œããã³ïŒãŸãã¯çžäºéçšæ§èŠä»¶ã®éåã«å¯Ÿããé©åã瀺ãã¹ããŒãã¡ã³ããåTrust Mark㯠Trust Mark type identifier ãæã€ã
- Trust Mark IssuerïŒTrust Marks ãçºè¡ãã Federation Entityã
- Trust Mark OwnerïŒTrust Mark type identifier ã«å¯Ÿããæš©å©ãææããEntityã
- Federation Entity KeysïŒæ¬ä»æ§ã§å®çŸ©ãããä¿¡é Œã¡ã«ããºã ã«å¿ èŠãªæå·çœ²åã«çšããéµãFederation ã®åå è ã¯ãããããèªèº«ã®å ¬é Federation Entity Keys ã Entity Configuration ã«å ¬éããã
- Resolved MetadataïŒTrust Chain ã«ããã metadata policy ããTrust Chain 察象㮠Entity Configuration å ã® metadata ã«é©çšããçµæåŸãããã¡ã¿ããŒã¿ãResolved Metadata ã¯ãEntityãšããåãããéã«äœ¿çšãããã¡ã¿ããŒã¿ã§ããã
2. Overall Architecture
åºæ¬ã³ã³ããŒãã³ã㯠Entity Statement ã§ãããããã¯æå·åŠçã«çœ²åããã JSON Web Token (JWT) [RFC7519] ã§ãããEntity Statements ã®éåã¯ãEntityïŒé垞㯠Leaf EntityïŒãã Trust Anchor ãŸã§ã®çµè·¯ã圢æã§ãããEntityãèªå·±ã«ã€ããŠçºè¡ãã Entity Configurations ã¯ãTrust Chain 解決ããã»ã¹ãå¶åŸ¡ããã
Leaf ãŸã㯠Intermediate Entity ã® Entity Configuration ã«ã¯ãã»ã¯ã·ã§ã³3.2ã§èª¬æããã authority_hints ãã©ã¡ãŒã¿ã«ãããŠãImmediate Superiors ãžã®åç §ã1ã€ä»¥äžå«ãŸããããããã®åç §ã¯ãå Immediate Superior ã® Entity Configuration ãããŠã³ããŒãããããã«å©çšã§ãããFederation Entity Discovery ã®éãTrust Anchor ã«å°éãããŸã§ã1ã€ä»¥äžã® Entity Configurations ãé ã«èŸ¿ãããã
Trust Anchor ãšãã® Intermediates ã¯ãImmediate Subordinate Entities ã«ã€ããŠã® Entity Statements ãçºè¡ãããããã Subordinate Statements ãšåŒã¶ãSuperior ãš Subordinate ã®é¢ä¿ãæ€èšŒãã Entity Configurations ãš Subordinate Statements ã®åããTrust Anchor ã«åããçµè·¯ã«æ²¿ã£ãŠãTrust Chain ã®å¯Ÿè±¡ïŒé垞㯠Leaf EntityïŒã Trust Anchor ãæ ¹ãšãããã§ãã¬ãŒã·ã§ã³ã®ã¡ã³ããŒã§ããããšã®èšŒæã圢æããã
Entity Configurations å士ãçµã³ä»ãã Trust Chain ã¯ãã»ã¯ã·ã§ã³4ã§è¿°ã¹ããšãããå Entity Configuration ã®çœ²åã«ãã£ãŠæ€èšŒãããã
æ€èšŒæžã¿ã® Trust Chain ãåŸããããããã§ãã¬ãŒã·ã§ã³ã®ããªã·ãŒãé©çšãããã»ã¯ã·ã§ã³6ã§è¿°ã¹ããšããããã§ãã¬ãŒã·ã§ã³å ã® Trust Chain 察象ã®ã¡ã¿ããŒã¿ãå°åºãããã
æ¬ä»æ§ã¯ä¿¡é Œæäœãæ±ãïŒã¡ã¿ããŒã¿å°åºããã³äº€æä»¥å€ã®ãããã³ã«æäœã¯æ±ããªããã察象ã«ãå«ããªããOpenID Connect ã®çšèªã§ã¯ãããã㯠OpenID Connect Discovery 1.0 [OpenID.Discovery] ããã³ OpenID Connect Dynamic Client Registration 1.0 [OpenID.Registration] ã§èŠå®ããããããã³ã«æäœã§ããã
æ¬ä»æ§ã®å€ãã®äŸã§ã¯ OpenID Connect ãçšããããããã¯æ¬ä»æ§ã OpenID Connect ã§ãã䜿ããªãããšãæå³ããªããããããä»ã®ãããã³ã«ã®ããã®ãã§ãã¬ãŒã·ã§ã³æ§ç¯ã«ãå©çšã§ããã
2.1. Cryptographic Trust Mechanism
æ¬ä»æ§ãå®çŸ©ãããåå è éã®æå·åŠçä¿¡é Œã確ç«ããããã«äœ¿çšããããªããžã§ã¯ãã¯ãå ¬é鵿å·ãçšããŠçœ²åä»ãJWTãšããŠä¿è·ãããããšãããããããã®ãªããžã§ã¯ããä¿è·ããããã®éµã¯ãããããå¶åŸ¡ããEntityã«ãã£ãŠç®¡çãããä¿è·ã«çšããå ¬ééµã¯ããããã®ãªããžã§ã¯ãèªèº«ãéããŠé åžãããããã®çš®ã®ä¿¡é Œã¡ã«ããºã ã¯ãç ç©¶ããã³åŠè¡ãã§ãã¬ãŒã·ã§ã³ã«ãããŠ10幎以äžå©çšãããŠããã
ãã®æå·åŠçä¿¡é Œã¡ã«ããºã ã¯ã眲åéµã®ããã« Web PKI / TLS [RFC9525] èšŒææžã«äŸåããªãããæå³çã«èšèšãããŠãããã©ã®TLSèšŒææžãä¿¡é Œæžã¿ãšã¿ãªããã¯ãã©ã®èªèšŒå±ãä¿¡é Œãããã«äŸåããŠã·ã¹ãã éã§å€§ããç°ãªããä¿¡é ŒãããŠããã¯ãã®èšŒææžã䟵害ãããé¡èãªäºäŸãååšããããããã®çç±ã«ãããæ¬ä»æ§ã¯ Web PKI ãžã®äŸåãæç¢ºã«é¿ããèªå·±ç®¡çã®å ¬ééµã«äŸæ ãããæ¬ä»¶ã§ã¯ãJSON Web Keys (JWKs) [RFC7517] ãšããŠè¡šçŸãããéµã§ããã
3. Entity Statement
Entity Statement ã¯ãEntity Statement ã®å¯Ÿè±¡ã§ããEntityããã§ãã¬ãŒã·ã§ã³ïŒè€æ°å¯ïŒã«åå ããããã«å¿ èŠãªæ å ±ãå«ããEntity Statement ã¯çœ²åä»ãJWTã§ãããJWTã®subjectã¯Entityèªèº«ã§ãããJWTã®issuer㯠Entity Statement ãçºè¡ããåœäºè ã§ããããã§ãã¬ãŒã·ã§ã³å ã®ãã¹ãŠã®Entityã¯ãèªå·±ã«ã€ããŠã®Entity Statementãå ¬éããããã Entity Configuration ãšåŒã¶ããã§ãã¬ãŒã·ã§ã³å ã® Superior Entities ã¯ãImmediate Subordinate Entities ã«ã€ããŠã® Entity Statements ãå ¬éããããã Subordinate Statements ãšåŒã¶ã
Entity Statement JWTs ã¯ã[RFC8725] ã®ã»ã¯ã·ã§ã³3.11ã«åŸããJWTéã®æ··åãé²ããããtyp ããããŒãã©ã¡ãŒã¿ã entity-statement+jwt ã«èšå®ããŠæç€ºçã«åä»ãããªããã°ãªããªããtyp ããããŒãã©ã¡ãŒã¿ããªãããŸãã¯ç°ãªã typ å€ãæã€ Entity Statements ã¯æåŠããªããã°ãªããªãã
Entity Statement ã¯ãissuer Entity ã®ç§å¯éµã®ãããããçšã㊠JSON Web Signature (JWS) [RFC7515] ãšããŠçœ²åããããå®è£ ã¯ãOpenID Connect Core ããµããŒããèŠæ±ããŠããããïŒalg å€ã RS256ïŒãRSA SHA-256 ã¢ã«ãŽãªãºã ã«ããçœ²åæ€èšŒããµããŒãããããšãæãŸããããã§ãã¬ãŒã·ã§ã³ã¯ãå®è£ å¿ é ã®ã¢ã«ãŽãªãºã ãšããŠå¥ã®ãã®ãæå®ããŠããããTrust Chain ã«ã¯ç°ãªã眲åã¢ã«ãŽãªãºã ã§çœ²åããã Entity Statements ãå«ããããç¹ã«æ³šæããããšãå眲åãã䜿çšäžã®ä¿¡é Œãã¬ãŒã ã¯ãŒã¯ããã³å®è£ ããµããŒããã眲åã¢ã«ãŽãªãºã ãçšããŠããéãããã®ããšã¯èš±å®¹ãããã
Entity Statement JWTs ã¯ã䜿çšãã眲åéµã® Key ID ã«çããå€ãæã€ kidïŒKey IDïŒããããŒãã©ã¡ãŒã¿ãå«ãŸãªããã°ãªããªãã
Entity Statement ã«å«ãŸãã Claims ã以äžã«ç€ºããEntity Statements ãå©çšããã¢ããªã±ãŒã·ã§ã³ããã³ãããã³ã«ã¯ã远å ã® Claims ãæå®ããŠäœ¿çšããŠãããã
3.1. Claims that MUST or MAY Appear in both Entity Configurations and Subordinate Statements
- iss\ REQUIREDãEntity Statement ã®issuerã® Entity Identifierãiss ãš sub ãåäžã§ããå Žåãissuerã¯èªå·±ã«ã€ããŠã® Entity StatementïŒEntity ConfigurationïŒãäœæããŠããã
- sub\ REQUIREDãsubjectã® Entity Identifierã
- iat\ REQUIREDãæ°å€ãã¹ããŒãã¡ã³ããçºè¡ãããæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãã
- exp\ REQUIREDãæ°å€ããã®æå»ä»¥åŸãã¹ããŒãã¡ã³ãã¯åŠçã®ããã«åçããŠã¯ãªããªãã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãã
-
jwks\ REQUIREDãsubjectã® Federation Entity 眲åéµã®å ¬ééšåã衚ã JSON Web Key Set (JWKS) [RFC7517]ã察å¿ããç§å¯éµã¯ãEntityãèªå·±ã«ã€ããŠã® Entity Configuration ã«çœ²åãããããTrust Anchors ããã³ Intermediate Entities ã Immediate Subordinates ã«ã€ããŠã® Subordinate Statements ã«çœ²åããããããªãã³ã« Trust Mark 眲åãªã©ãFederation Entities ã«ãã£ãŠè¡ããããã®ä»ã®çœ²åã®ããã«äœ¿çšãããããã ããæ¬Claimã¯ã»ã¯ã·ã§ã³12.2.3ã§å®çŸ©ããã Explicit Registration Response ãšããŠè¿ããã Entity Statement ã§ã¯ OPTIONAL ã§ããããã以å€ã®ãã¹ãŠã®å Žå㯠REQUIRED ã§ãããJWK Set å ã®åJWKã¯äžæã® kidïŒKey IDïŒå€ãæããªããã°ãªããªããKey IDã¯ãéµã®SHA-256ããã·ã¥é¢æ°ãçšãã JWK Thumbprint [RFC7638] ã«ããããšãæšå¥šãããã
ãããã® Federation Entity Keys ã¯ãä»ã®ãããã³ã«ã§ã¯äœ¿çšããªãããšãæãŸãããïŒOpenID Connect ãªã©ä»ã®ãããã³ã«ã§äœ¿çšããéµã¯ãopenid_provider ããã³ openid_relying_party ã® Entity Type Identifiers é äžã® metadata ãªã©ãåœè©²ãããã³ã«ã® Entity Type Identifiers ã®ã¡ã¿ããŒã¿èŠçŽ ã§äŒéããããïŒ
-
metadata\ OPTIONALãEntityãæ ã圹å²ïŒEntity TypesïŒã宣èšãããããã® Entity Types ã®ã¡ã¿ããŒã¿ãå«ãJSONãªããžã§ã¯ããJSONãªããžã§ã¯ãã®åã¡ã³ããŒå㯠Entity Type Identifier ã§ãããåå€ã¯ããã® Entity Type ã®ã¡ã¿ããŒã¿ã¹ããŒãã«åŸã£ãã¡ã¿ããŒã¿ãã©ã¡ãŒã¿ãå«ãJSONãªããžã§ã¯ãã§ãªããã°ãªããªãã
Entityã1ã€ä»¥äžã® Entity Types ã䌎ã£ãŠ1ã€ä»¥äžã®ãã§ãã¬ãŒã·ã§ã³ã«åå ããå Žåããã® Entity Configuration ã¯ã察å¿ããå Entity Type Identifiers ããšã«ãJSONãªããžã§ã¯ãå€ãæã€ metadata Claim ãå«ãŸãªããã°ãªããªããå€ã空ã®JSONãªããžã§ã¯ã {} ã§ãã£ãŠãïŒEntity Type ã«é¢é£ã¡ã¿ããŒã¿ããªãå ŽåããŸã㯠Immediate Superiors ãå¿ èŠãªã¡ã¿ããŒã¿ãæäŸããå ŽåïŒãå«ããªããã°ãªããªãã
Immediate Superior ã¯ãSubordinate Statement ã® metadata Claim ã䜿çšããŠãImmediate Subordinate ã«å¯ŸããŠéžæããã¡ã¿ããŒã¿ãã©ã¡ãŒã¿ããŸãã¯ãã¹ãŠã®ã¡ã¿ããŒã¿ãã©ã¡ãŒã¿ãæäŸããŠããããSubordinate Statement ã§ metadata ã䜿çšããå Žåããã㯠subject ã® Entity Configuration ã«ååšãã Entity Types ã«ã®ã¿é©çšããããããã«ãmetadata 㯠Subordinate Statement ã® subject ã®ã¿ã«é©çšãããsubject ã® Subordinates ã«ã¯åœ±é¿ããªããSubordinate Statement å ã® metadata ãã©ã¡ãŒã¿ã¯ãsubject ã® Entity Configuration å ã®åäž Entity Type é äžã§ååã®ãã©ã¡ãŒã¿ããåªå ãããäžæžããããSubordinate Statement ã« metadata ãš metadata_policy ã®äž¡æ¹ãçŸããå Žåãã»ã¯ã·ã§ã³6.1.4.2ã§è¿°ã¹ããšãããè¿°ã¹ããã metadata ã metadata_policy ã®åã«é©çšããªããã°ãªããªãã
- crit\ OPTIONALãEntity Statements ã¯ãã»ã¯ã·ã§ã³13.4ã§å®çŸ©ããã critïŒcriticalïŒClaim ãçè§£ããåŠçãããããšãèŠæ±ãããæ¬Claimã®å€ã§ããé åã«å«ãŸãã Claim Names ãæã€ Claims ã¯çè§£ããåŠçãããªããã°ãªããªããæ¬ä»æ§ã Entity Statements ã§ã®äœ¿çšãæå®ãã Claims ã¯ããã®ãªã¹ãã«å«ããŠã¯ãªããªãã
3.2. Claims that MUST or MAY Appear in Entity Configurations but Not in Subordinate Statements
- authority_hints\ OPTIONALãIntermediate Entities ãŸã㯠Trust Anchors ã® Entity IdentifiersïŒEntityã® Immediate SuperiorsïŒã衚ãæååã®é åãæ¬Claimã¯ãLeaf ããã³ Intermediate Entities ã®ããã«å°ãªããšã1ã€ã® Superior ãäžäœã«æã€Entityã® Entity Configurations ã§ã¯ REQUIRED ã§ããããã®å€ã¯ Immediate Superiors ã® Entity Identifiers ãå«ãŸãªããã°ãªããã空é å [] ã§ãã£ãŠã¯ãªããªããSuperiors ãæããªã Trust Anchors ã® Entity Configurations ã«ã¯æ¬ClaimãååšããŠã¯ãªããªãã
- trust_anchor_hints\ OPTIONALãEntityãä¿¡é Œãã Trust Anchors ã® Entity Identifiers ã衚ãæååã®é åããã®å€ã¯ç©ºé å [] ã§ãã£ãŠã¯ãªããªããSuperiors ãæããªã Trust Anchors ã® Entity Configurations ã«ã¯æ¬ClaimãååšããŠã¯ãªããªãã
-
trust_marks\ OPTIONALãåèŠçŽ ã Trust Mark ã衚ãJSONãªããžã§ã¯ãã§ããé åã
- trust_mark_type\ REQUIREDãTrust Mark ã®åã®èå¥åãæ¬Claimã®å€ã¯ããã®ãªããžã§ã¯ãå ã® trust_mark Claim ã®å€ã§ãã Trust Mark JWT ã«å«ãŸãã trust_mark_type Claim ã®å€ãšåäžã§ãªããã°ãªããªãã
- trust_mark\ REQUIREDãTrust Mark ã衚ã眲åä»ã JSON Web Tokenã
Trust Marks ã¯ã»ã¯ã·ã§ã³7ã§èª¬æããã
- trust_mark_issuers\ OPTIONALãTrust Anchor ã¯ãæ¬ClaimãçšããŠãã©ã® Trust Mark type identifiers ãš issuers ã®çµã¿åããããã§ãã¬ãŒã·ã§ã³ããä¿¡é ŒãããŠãããã瀺ããŠããããæ¬Claimã¯ãTrust Anchor ã§ã¯ãªãEntityã® Entity Configuration ã«ååšããŠããŠãç¡èŠããªããã°ãªããªããããã¯JSONãªããžã§ã¯ãã§ãããã¡ã³ããŒå㯠Trust Mark type identifiersãå察å¿ããå€ã¯ããã®èå¥åãæã€ Trust Marks ã®èªå®æ©é¢ã代衚ãããã®ãšããŠä¿¡é Œããã Entity Identifiers ã®é åã§ãããTrust Mark type identifier ã«ç¶ãé åã空ã®å Žåããã®èå¥åãæã€ Trust Marks ã¯èª°ã§ãçºè¡ããŠãããTrust Marks ã¯ã»ã¯ã·ã§ã³7ã§èª¬æããã
-
trust_mark_owners\ OPTIONALãFederation Operator ããTrust Mark type identifier ã Trust Mark Issuer ãšã¯ç°ãªãEntityã«ããææãããŠããããšãç¥ã£ãŠããå Žåããã®ç¥èã¯æ¬Claimã§è¡šçŸããªããã°ãªããªããæ¬Claimã¯ãTrust Anchor ã§ã¯ãªãEntityã® Entity Configuration ã«ååšããŠããŠãç¡èŠããªããã°ãªããªããããã¯JSONãªããžã§ã¯ãã§ãããã¡ã³ããŒå㯠Trust Mark type identifiersãå察å¿ããå€ã¯æ¬¡ã®ã¡ã³ããŒãå«ãJSONãªããžã§ã¯ãã§ããïŒ
- sub\ REQUIREDãTrust Mark Owner ã® Identifierã
- jwks\ REQUIREDã眲åã«çšããããææè ã® Federation Entity Keys ãå«ã JSON Web Key Set (JWKS) [RFC7517]ã
ä»ã®ã¡ã³ããŒãå®çŸ©ããŠäœ¿çšããŠããã
3.3. Claims that MUST or MAY Appear in Subordinate Statements but Not in Entity Configurations
- constraints\ OPTIONALãã»ã¯ã·ã§ã³6.2ã§èª¬æããã Trust Chain å¶çŽãå®çŸ©ããJSONãªããžã§ã¯ããå¶çŽã¯ããã® Subordinate Statement ã® subject ã§ããEntityã ãã§ãªããããã«åŸå±ãããã¹ãŠã®Entityã«ãé©çšãããã
- metadata_policy\ OPTIONALãã»ã¯ã·ã§ã³6.1ã§èª¬æãããã¡ã¿ããŒã¿ããªã·ãŒãå®çŸ©ããJSONãªããžã§ã¯ããã¡ã¿ããŒã¿ããªã·ãŒã¯ããã® Subordinate Statement ã® subject ã§ããEntityã ãã§ãªããããã«åŸå±ãããã¹ãŠã®Entityã«ãé©çšããããSubordinate Entities ã«é©çšãããç¹ããsubject èªèº«ã«ã®ã¿é©çšããã metadata ãšãmetadata_policy ãåºå¥ããã
- metadata_policy_crit\ OPTIONALãã»ã¯ã·ã§ã³6.1.3.1ã§å®çŸ©ãããæšæºã®ãã®ä»¥å€ã§ãçè§£ãåŠçããªããã°ãªããªãéèŠãªã¡ã¿ããŒã¿ããªã·ãŒæŒç®åãæå®ããæååé åãå«ããå Žåããã®å€ã¯ç©ºé å [] ã§ãã£ãŠã¯ãªããªããåæãããããªã·ãŒæŒç®åã®ãããããçè§£ãããµããŒããããŠããªãå ŽåãSubordinate Statementãã²ããŠã¯ãããå«ã Trust Chain ã¯ç¡å¹ãšèŠãªããªããã°ãªããªãã
- source_endpoint\ OPTIONALãã»ã¯ã·ã§ã³8.1ã§èŠå®ããããšãããEntity Statement ãçºè¡ãããååŸçšãšã³ããã€ã³ãURLãå«ãæååããã®ãã©ã¡ãŒã¿ã«ãããçºè¡æš©åšã® federation_fetch_endpoint ãçºèŠããããã«éåžžå¿ èŠãšãªã Entity Configuration ãžã®ãªã¯ãšã¹ããçç¥ããSubordinate Statementsãã²ããŠã¯ Trust Chain ãæé©åããŠæŽæ°ã§ããããšã³ããã€ã³ãURLã倿ŽãããŠããå Žåãªã©ãsource_endpoint ãã Entity Statement ãååŸã§ããªããšãã¯ãissuer ã® Entity Configuration ãååŸããããšã«ãããçŸåšã® federation_fetch_endpoint ã®å Žæãç¹å®ã§ããã
3.4. Claims Used in Explicit Registration Requests
- aud\ OPTIONALã"aud"ïŒaudienceïŒã®å€ã¯ OP ã® Entity Identifier ã§ãªããã°ãªãããä»ã®å€ãå«ãã§ã¯ãªããªããæ¬Claim㯠Explicit Registration requests ã§äœ¿çšãããïŒäžè¬ç㪠Entity Statement Claim ã§ã¯ãªãã
3.5. Claims Used in Explicit Registration Responses
- aud\ OPTIONALã"aud"ïŒaudienceïŒã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªãããä»ã®å€ãå«ãã§ã¯ãªããªããæ¬Claim㯠Explicit Registration responses ã§äœ¿çšãããïŒäžè¬ç㪠Entity Statement Claim ã§ã¯ãªãã
- trust_anchor\ OPTIONALããã®å€ã¯ãã»ã¯ã·ã§ã³12.2.3ã§èŠå®ããããšãããOPã Explicit Registration request ãåŠçããããã«éžæãã Trust Anchor ã® Entity Identifier ã§ãªããã°ãªããªããæ¬Claim㯠Explicit Registration responses ã«åºæã§ããïŒäžè¬ç㪠Entity Statement Claim ã§ã¯ãªãã
3.6. Entity Statement Validation
Entity Statements ã¯ä»¥äžã®æ¹æ³ã§æ€èšŒããªããã°ãªããªãããããã®æé ã¯ãçµæïŒEntity Statement ãåçãããæåŠãããïŒãåäžã§ããéããç°ãªãé åºã§å®è¡ããŠãããã
- Entity Statement ã¯çœ²åä»ãJWTã§ãªããã°ãªããªãã
- Entity Statement ã¯ãå€ã entity-statement+jwt ã§ãã typ ããããŒãã©ã¡ãŒã¿ãæããªããã°ãªããªãã
- Entity Statement ã¯ã蚱容ãããJWS眲åã¢ã«ãŽãªãºã ã§ããå€ãæã€ algïŒalgorithmïŒããããŒãã©ã¡ãŒã¿ãæããªããã°ãªãããnone ã§ãã£ãŠã¯ãªããªãã
- Entity Statement ãåç §ããEntityã® Entity Identifier ã¯ãsubïŒsubjectïŒClaim ã®å€ãšäžèŽããªããã°ãªããªãã
- Entity Statement ã¯ãå€ã劥åœãª Entity Identifier ã§ãã issïŒissuerïŒClaim ãæããªããã°ãªããªãã
- issïŒissuerïŒClaim Value ã subïŒsubjectïŒClaim Value ãšäžèŽããå ŽåãEntity Statement ã¯ãã®Entityã® Entity Configuration ã§ãããäžèŽããªãå ŽåãEntity Statement 㯠Subordinate Statement ã§ãããEntity Statement ã Subordinate Statement ã§ããå Žåãiss Claim Value ã¯ãsub Claim ã®å€ã§ãã Entity Identifier ãæã€Entityã® Entity Configuration å ã® authority_hints é åã®å€ã®ãããããšäžèŽããªããã°ãªããªãïŒããã§ãªãå ŽåãFederation ã°ã©ãã¯æŽåœ¢åŒã§ã¯ãªãã
- çŸåšæå»ã¯ãiatïŒissued atïŒClaim ã衚ãæå»ããåŸã§ãªããã°ãªããªãïŒæèšãããèæ ®ããŠå°ããªèš±å®¹å·®ãèªããŠãããïŒã
- çŸåšæå»ã¯ãexpïŒexpirationïŒClaim ã衚ãæå»ããåã§ãªããã°ãªããªãïŒæèšãããèæ ®ããŠå°ããªèš±å®¹å·®ãèªããŠãããïŒã
- jwksïŒJWK SetïŒClaim ã¯ååšããªããã°ãªããããã®å€ã¯åŠ¥åœãª JWK Set [RFC7517] ã§ãªããã°ãªããªãã
- çºè¡Entityã® Entity Configurationãããªãã¡ Entity Statement ã® issïŒissuerïŒClaim ã«èŠãã ããã Issuer Identifier ãæã€Entityã® Entity Configuration ãååŸãããiss ãš sub ã® Claim Values ãäžèŽããå Žåãããã¯æ€èšŒå¯Ÿè±¡ã® Entity Statement èªèº«ã§ãããããã§ãªãå ŽåãTrust Chain ããããŸãã¯ã»ã¯ã·ã§ã³9ã«èšèŒã®ãšããååŸããŠåŸãããã
- Entity Statement ã® kidïŒKey IDïŒããããŒãã©ã¡ãŒã¿å€ã¯é·ã0ã§ã¯ãªãæååã§ãªããã°ãªãããçºè¡Entityã® Entity Configuration ã® jwksïŒJWK SetïŒClaim å ã®éµã® kid å€ãšå®å šã«äžèŽããªããã°ãªããªãã
- Entity Statement ã®çœ²åã¯ãkid å€ã§èå¥ãããçºè¡Entityã®éµãçšããŠæ€èšŒã§ããªããã°ãªããªãã
- crit Claim ãååšããå Žåããã®Claimã®å€ã®åé åèŠçŽ ã¯ãæ¬ä»æ§ã§å®çŸ©ãããŠããªã Entity Statement Claim ã衚ãæååã§ãªããã°ãªããããã®Claimã¯çè§£ãããå®è£ ã§åŠçã§ããªããã°ãªããªãã
- authority_hints Claim ãååšããå ŽåãEntity Statement 㯠Entity Configuration ã§ãªããã°ãªããªããã»ã¯ã·ã§ã³3.2ã§èŠå®ããããšããããã®å€ãæ§æçã«æ£ããããšã確èªãããå®è£ ã¯ããã«ãauthority_hints é åã«åæãããå Entity Identifier ãæã€Entityã® Subordinate ã§ããããšãæ€èšŒããŠãããã
- trust_anchor_hints Claim ãååšããå ŽåãEntity Statement 㯠Entity Configuration ã§ãªããã°ãªããªããã»ã¯ã·ã§ã³3.2ã§èŠå®ããããšããããã®å€ãæ§æçã«æ£ããããšã確èªããã
- metadata Claim ãååšããå Žåãã»ã¯ã·ã§ã³5ã§èŠå®ããããšããããã®å€ãæ§æçã«æ£ããããšãmetadata ã®å€ãšã㊠null ã䜿çšããŠããªãããšã確èªããã
- metadata_policy Claim ãååšããå ŽåãEntity Statement 㯠Subordinate Statement ã§ãªããã°ãªããªããã»ã¯ã·ã§ã³6.1ã§èŠå®ããããšããããã®å€ãæ§æçã«æ£ããããšã確èªããã
- metadata_policy_crit Claim ãååšããå ŽåãEntity Statement 㯠Subordinate Statement ã§ãªããã°ãªããªãããã®Claimã®å€ã®åé åèŠçŽ ã¯ãæ¬ä»æ§ã§å®çŸ©ãããŠããªã Metadata Policy æŒç®åã衚ãæååã§ãªããã°ãªããããã®æŒç®åã¯çè§£ãããå®è£ ã§åŠçã§ããªããã°ãªããªãã
- constraints Claim ãååšããå ŽåãEntity Statement 㯠Subordinate Statement ã§ãªããã°ãªããªããã»ã¯ã·ã§ã³6.2ã§èŠå®ããããšããããã®å€ãæ§æçã«æ£ããããšã確èªããã
- trust_marks Claim ãååšããå ŽåãEntity Statement 㯠Entity Configuration ã§ãªããã°ãªããªããæ¬Claim Value ã®æ§æã Claim å®çŸ©ã«é©åããããšãæ€èšŒããããšããããClaim Value ã§ããé åã®åèŠçŽ ã«ã€ããŠãtrust_mark_type ã¡ã³ããŒãååšãããã®å€ã trust_mark ã¡ã³ããŒã®å€ã§ãã Trust Mark JWT å ã® trust_mark_type Claim Value ãšäžèŽããããšãæ€èšŒãããæ§ææ€èšŒã¯ãç¹å®ã® Trust Marks ãä¿¡é Œãããåœäºè ã«ããçºè¡ãããä¿¡é ŒãããŠãããã©ããã®è©äŸ¡ãšã¯å¥ã§ããïŒãã®ããã»ã¹ã¯ã»ã¯ã·ã§ã³7.3ã§èª¬æãããæ§ææ€èšŒãšã¯å¥ã®æé ãšããŠå®æœããŠãããã
- trust_mark_issuers Claim ãååšããå ŽåãEntity Statement 㯠Entity Configuration ã§ãªããã°ãªããªãããã®Claim Value ããTrust Mark type identifiers ãã¡ã³ããŒåãEntity Identifiers ã®é åãå€ãšããJSONãªããžã§ã¯ãã§ããããšãæ€èšŒããã
- trust_mark_owners Claim ãååšããå ŽåãEntity Statement 㯠Entity Configuration ã§ãªããã°ãªããªãããã®Claim Value ããTrust Mark type identifiers ãã¡ã³ããŒåãšããsub ã¡ã³ããŒïŒå€ã¯ Entity IdentifierïŒããã³ jwks ã¡ã³ããŒïŒå€ã¯ JSON Web Key SetïŒãå«ãJSONãªããžã§ã¯ããå€ãšããJSONãªããžã§ã¯ãã§ããããšãæ€èšŒããã
- source_endpoint Claim ãååšããå ŽåãEntity Statement 㯠Subordinate Statement ã§ãªããã°ãªããªãããã®Claim Value ãURLã§ããããšãæ€èšŒãããå®è£ ã¯ããã«ããã®URLãžã®ååŸåŒã³åºããè¡ããããã Entity Statement ãçºè¡ãããååŸãšã³ããã€ã³ãã§ããããšãæ€èšŒããŠãããã
- aud Claim ãååšããå ŽåãEntity Statement ã Explicit Registration request ã§ãããªãå€ãOPã® Entity Identifier ã§ããããšãæ€èšŒãããŸã㯠Entity Statement ã Explicit Registration request ã§ãããªãå€ãRPã® Entity Identifier ã§ããããšãæ€èšŒãããæ¬Claimã¯ãæ¡åŒµã§ãã®äœ¿çšãå¥éæå®ãããŠããå Žåãé€ããExplicit Registration requests ãŸã㯠responses ã§ã¯ãªã Entity Statements ã«ååšããŠã¯ãªããªãã
- trust_anchor Claim ãååšããå Žåããã®å€ã https ã¹ããŒã ã䜿çšããURLã§ããããšãæ€èšŒãããå®è£ ã¯ããã® Entity Identifier ããããã€ã¡ã³ãã«èšå®ããã Trust Anchors ã®ãããããšäžèŽããããšãæ€èšŒããããšãæãŸãããããã«ãå®è£ ã¯ããã® Entity Identifier ã® Entity Configuration ããèšå®ããã Trust Anchor æ å ±ïŒç¹ã«éµïŒãšäºæã®æ å ±ãå«ãããšãæ€èšŒããããšãæãŸãããæ¬Claimã¯ãæ¡åŒµã§ãã®äœ¿çšãå¥éæå®ãããŠããå Žåãé€ããExplicit Registration responses ã§ã¯ãªã Entity Statements ã«ååšããŠã¯ãªããªãã
- trust_chain ããããŒãã©ã¡ãŒã¿ãååšããå Žåãã»ã¯ã·ã§ã³4ã§èŠå®ããããšããããã®å€ãæ§æçã«åŠ¥åœãª Trust Chain ã§ããããšãæ€èšŒãããTrust Chain ã®æåã®ãšã³ããªã¯ããã®Entityã® Entity Configuration ã§ãªããã°ãªããªããå®è£ ã¯ãTrust Chain ã®æ«å°Ÿã«ãã Trust Anchor ã® Entity Identifier ãããããã€ã¡ã³ãã«èšå®ããã Trust Anchors ã®ãããããšäžèŽããããšãæ€èšŒããããšãæãŸããã
- peer_trust_chain ããããŒãã©ã¡ãŒã¿ãååšããå Žåãã»ã¯ã·ã§ã³4ã§èŠå®ããããšããããã®å€ãæ§æçã«åŠ¥åœãª Trust Chain ã§ããããšãæ€èšŒãããå®è£ ã¯ãTrust Chain ã®æ«å°Ÿã«ãã Trust Anchor ã® Entity Identifier ãããããã€ã¡ã³ãã«èšå®ããã Trust Anchors ã®ãããããšäžèŽããããšãæ€èšŒããããšãæãŸããã
ãããã®æ€èšŒæé ã®ããããã倱æããå ŽåãEntity Statement ã¯æåŠããªããã°ãªããªãã
3.7. Entity Statement Examples
以äžã¯ãEntity Statement ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããããã®äŸã«ã¯ãEntity Statement ã«å¯Ÿãã critical extension ã§ãã jtiïŒJWT IDïŒãšãããªã·ãŒèšèªã«å¯Ÿãã critical extension ã§ãã regexpïŒRegular expressionïŒã1ã€å«ãŸããŠããã
{
"iss": "https://feide.no",
"sub": "https://ntnu.no",
"iat": 1516239022,
"exp": 1516298022,
"jwks": {
"keys": [
{
"kty": "RSA",
"alg": "RS256",
"use": "sig",
"kid": "NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs",
"n": "pnXBOusEANuug6ewezb9J_...",
"e": "AQAB"
}
]
},
"metadata": {
"openid_provider": {
"issuer": "https://ntnu.no",
"organization_name": "NTNU"
},
"oauth_client": {
"organization_name": "NTNU"
}
},
"metadata_policy": {
"openid_provider": {
"id_token_signing_alg_values_supported": {
"subset_of": ["RS256", "RS384", "RS512"]
},
"op_policy_uri": {
"regexp": "^https:\\/\\/[\\w-]+\\.example\\.com\\/[\\w-]+\\.html"
}
},
"oauth_client": {
"grant_types": {
"one_of": ["authorization_code", "client_credentials"]
}
}
},
"constraints": {
"max_path_length": 2
},
"crit": ["jti"],
"metadata_policy_crit": ["regexp"],
"source_endpoint": "https://feide.no/federation_api/fetch",
"jti": "7l2lncFdY6SlhNia"
}
Figure 2: Example Entity Statement JWT Claims Set
以äžã¯ãtrust_mark_owners Claim Value ã®éèŠç¯çãªäŸã§ããïŒ
{
"https://refeds.org/wp-content/uploads/2016/01/Sirtfi-1.0.pdf": {
"sub": "https://refeds.org/sirtfi",
"jwks": {
"keys": [
{
"alg": "RS256",
"e": "AQAB",
"kid": "key1",
"kty": "RSA",
"n": "pnXBOusEANuug6ewezb9J_...",
"use": "sig"
}
]
}
}
}
Figure 3: Example trust_mark_owners Claim Value
以äžã¯ãtrust_mark_issuers Claim Value ã®éèŠç¯çãªäŸã§ããïŒ
{
"https://openid.net/certification/op": [],
"https://refeds.org/wp-content/uploads/2016/01/Sirtfi-1.0.pdf": [
"https://swamid.se"
]
}
Figure 4: Example trust_mark_issuers Claim Value
4. Trust Chain
Trust Chain ãæ§æããã¹ããŒãã¡ã³ããæã€Entityã¯ã次ã®ããã«åé¡ãããïŒ
- Trust AnchorïŒä¿¡é Œããã第äžè ã衚ãEntityã
- LeafïŒOpenID Connect ã®ã¢ã€ãã³ãã£ãã£ã»ãã§ãã¬ãŒã·ã§ã³ã§ã¯ RP ãŸã㯠OPãOAuth 2.0 ã®ãã§ãã¬ãŒã·ã§ã³ã§ã¯ ClientãAuthorization ServerããŸã㯠Protected Resourceã
- IntermediateïŒLeaf Entity ã§ã Trust Anchor ã§ããªãEntityã
Trust Chain ã¯ãTrust Chain ã®å¯Ÿè±¡ã§ãã Entity Configuration ããå§ãŸããããã¯éåžž Leaf Entity ã§ãããTrust Chain ã¯ãIntermediates ã Immediate Subordinates ã«ã€ããŠçºè¡ãã Subordinate Statements ã0åä»¥äžæã¡ãTrust Anchor ãæäžäœ IntermediateïŒIntermediates ãããå ŽåïŒãŸã㯠Trust Chain ã®å¯Ÿè±¡ïŒIntermediates ããªãå ŽåïŒã«ã€ããŠçºè¡ãã Subordinate Statement ãå«ããTrust Chain ã¯ãå Žåã«ãã£ãŠã¯ Trust Chain ã衚ãJSONé åããçç¥ãããŠãããããè«ççã«ã¯åžžã« Trust Anchor ã® Entity Configuration ã§çµããã
Trust Chain ã«ã¯ãè©äŸ¡æç¹ã«ãã㊠Trust Chain ã®å¯Ÿè±¡ã«é©çšããããã§ãã¬ãŒã·ã§ã³ã®æ§æãå«ãŸããã
ç°¡åãªäŸïŒFederation F ã®ã¡ã³ããŒã§ãã Organization A ã«å±ãã RP ããããšããããã®ãããªæ§æã® Trust Chain ã«ã¯ã次㮠Entity Statements ãå«ãŸããïŒ
- RPãèªãå ¬éãããRPã«ã€ããŠã® Entity Configuration
- Organization A ãå ¬éãããRPã«ã€ããŠã® Subordinate Statement
- F ã® Trust Anchor ãå ¬éãããOrganization A ã«ã€ããŠã® Subordinate Statement
- Trust Anchor ãèªãå ¬éãããF ã® Trust Anchor ã«ã€ããŠã® Entity Configuration
Trust Chain å ã® Entity Statements ã ES[j] ãšåŒã¶ããšã«ãããããã§ j = 0,...,i ã§ããã0ã¯æåã® Entity Statement ã®ã€ã³ããã¯ã¹ãiã¯æåŸã® Entity Statement ã®0å§ãŸãã€ã³ããã¯ã¹ã§ããããããšïŒ
- ES[0]ïŒTrust Chain 察象㮠Entity ConfigurationïŒã¯ãES[0]["jwks"] å ã®éµãçšããŠçœ²åãããã
- Entity Statement ã® iss Claim ã¯ã次㮠Entity Statement ã® sub Claim ã«çãããèšå·çã«èšãæãããšãå j = 0,...,i-1 ã«ã€ããŠãES[j]["iss"] == ES[j+1]["sub"]ã
- Entity Statement ã¯ã次㮠Entity Statement ã® jwks Claim å ã®éµãçšããŠçœ²åããããèšå·çã«èšãæãããšãå j = 0,...,i-1 ã«ã€ããŠãES[j] 㯠ES[j+1]["jwks"] å ã®éµã«ãã£ãŠçœ²åãããã
- ES[i]ïŒTrust Chain ã«ããã Trust Anchor ã® Entity ConfigurationïŒã¯ãES[i]["jwks"] å ã®éµãçšããŠçœ²åãããã
Trust Anchor ã®å ¬ééµã¯ãES[i]ïŒTrust Anchor ã® Entity ConfigurationïŒããã³ ES[i-1]ïŒTrust Chain ã«ããã Immediate Subordinate ã«ã€ããŠã® Trust Anchor ã® Subordinate StatementïŒã®çœ²åæ€èšŒã«çšãããããTrust Anchor ã®å ¬ééµã¯ãTrust Chain ãæ€èšŒããå¿ èŠãããEntityã«å¯ŸããŠãæ¬æžã§èª¬æãããªãå®å šãªã¢ãŠãã»ãªãã»ãã³ãã®æ¹æ³ã§é åžãããã
4.1. Beginning and Ending Trust Chains
Trust Chain ã¯ãä¿¡é Œã確ç«ããããšããŠãã Entity ã® Entity Configuration ããå§ãŸããããã Trust Chain ã® subject ã§ããããã® Entity ã¯éåžžãOpenID Provider ã OpenID Relying Party ã®ãããªãããã³ã«äžã®åœ¹å²ãæ ãã
ãã®ãã㪠Entity ã¯éåžž Leaf Entity ã ããä»ã®ããããžãŒãããåŸããäŸãã°ããã Entity ãåæã« OpenID Provider ã§ãã Intermediate Entity ã§ããããOpenID Relying Parties ããã³ïŒãŸãã¯ä»ã® Intermediates ãããã«å¯Ÿã㊠Subordinate ã§ããããšããããšãããåŸãããã®å ŽåãTrust Chain ã® subject 㯠Leaf Entity ã§ã¯ãªãã
Trust Chain 㯠Trust Anchor ã® Entity Configuration ã§çµãããTrust Anchors ã¯éåžž Superiors ãæããªãããTrust Anchor ãå¥ã®ãã§ãã¬ãŒã·ã§ã³ã§ Intermediate Entity ãšããŠãæ©èœããå ŽåãTrust Anchor 㯠Superior ãæã€ããšã«ãªããããã¯ããã§ãã¬ãŒã·ã§ã³ãéå±€åãããŠããå Žåã«è©²åœããã
ãããã£ãŠãTrust Chain ã Superiors ãæããªã Trust Anchor ã§çµããã®ãäžè¬çã§ã¯ãããã®ã®ãTrust Chain ã Superior Entities ãæã€ Trust Anchor ã§çµããç¶æ³ãååšããã
4.2. Trust Chain Example
以äžã¯ãLeaf ã® Entity Configuration ãšãIntermediate Entity ããã³ Trust Anchor ã«ãã£ãŠçºè¡ããã Subordinate Statements ããæ§æããã Trust Chain ã®äŸã§ãããããã§ã¯ã3ã€ã® Entitiesããããã® Entity Configurationsãããã³ãããã® Subordinate Statements ã®é¢ä¿ã瀺ããSubordinate Statements ã¯ãsubject ã® Immediate Superior ã® federation_fetch_endpoint ããååŸããããfederation_fetch_endpoint ã®URLã¯ãImmediate Superior ã® Entity Configuration ããçºèŠãããããªããTrust Chain ã®æåã®ã¡ã³ããŒïŒLeafïŒã¯å³ã®äžåŽã«æãããæåŸã®ã¡ã³ããŒïŒTrust AnchorïŒã¯äžåŽã«æãããŠããã
.----------------. .---------------------------. .---------------------------.
| Role | | .well-known/ | | Trust Chain |
| | | openid-federation | | |
.----------------. .---------------------------. .---------------------------.
| .------------. | | .-----------------------. | | .-----------------------. |
| | | | | | Entity Configuration | | | | Entity Configuration | |
| |Trust Anchor+-+--+-> +-+---------+-> | |
| | | | | | Federation Entity Keys| | | | Federation Entity Keys| |
| '-----.------' | | | Metadata | | | | Metadata | |
| | | | | Trust Mark Issuers | | | | Trust Mark Issuers | |
| | | | | | | | | | |
| | | | '-----------------------' | | '-----------------------' |
| | | | | | |
| | | | |Fetch | .-----------------------. |
| | | | |Endpoint | | Subordinate Statement | |
| | | | | | | | |
| +--------+--+---------------------------+---------+-> | |
| | | | | | Federation Entity Keys| |
| | | | | | Metadata Policy | |
| | | | | | Metadata | |
| | | | | | Constraints | |
| | | | | | | |
| | | | | '-----------.-----------' |
| .------------. | | .-----------------------. | | | |
| | | | | | Entity Configuration | | | | |
| |Intermediate+-+--+-> | | | |sub and key |
| | | | | | Federation Entity Keys| | | | binding |
| '------.-----' | | | Metadata | | | .-----------v-----------. |
| | | | | Trust Marks | | | | Subordinate Statement | |
| | | | | | | | | | |
| | | | | | | | | Federation Entity Keys| |
| | | | '-----------------------' |Fetch | | Metadata Policy | |
| | | | |Endpoint | | Metadata | |
| +-------+--+---------------------------+---------+-> | |
| | | | | '-----------.-----------' |
| | | | | |sub and key |
| | | | | | binding |
| .------------. | | .-----------------------. | | .-----------v-----------. |
| | | | | | Entity Configuration | | | | Entity Configuration | |
| | Leaf +-+--+-> +-+---------+-> | |
| | | | | | Federation Entity Keys| | | | Federation Entity Keys| |
| '------------' | | | Metadata | | | | Metadata | |
| | | | Trust Marks | | | | Trust Marks | |
| | | | | | | | | |
| | | | | | | | | |
| | | '-----------------------' | | '-----------------------' |
'----------------' '---------------------------' '---------------------------'
Figure 5: Relationships between Federation Entities and Statements Issued in a Trust Chain
4.3. Trust Chain Header Parameter
trust_chain JWS header parameter ã¯ãEntity ãšéžæããã Trust Anchor ã®éã® Trust Chain ãæ§æãã Entity Statements ã®äžŠã³ãå«ãJSONé åã§ãããéåžžãTrust Chain ã¯ããã®ããããŒãã©ã¡ãŒã¿ãçŸããJWTã® subject ã® Entity Configuration ããå§ãŸããããããã»ã¯ã·ã§ã³8.3.2ã§å®çŸ©ããã Resolve Response ã®å Žåã®ããã«ãTrust Chain ã issuer ãªã©å¥ã® Entity ã® Entity Configuration ããå§ãŸãããšããããJWTã® issuer ã¯ãTrust Chain ã®å é ã«ãã Entity ãšJWTã® audience ãå ±éã«æã€ Trust Anchor ãéžæããããšãæãŸãããããã§ãªãå Žåã§ããissuer ã¯äœ¿çšãã Trust Anchor ãèªç±ã«éžæã§ãããããã€ãã®äŸå€ãé€ããã»ãšãã©ã®çœ²åä»ãJWT㯠trust_chain JWS header parameter ãå«ããŠããããEntity Configurations ãš Subordinate Statements ã¯ãTrust Chain ã®äžå¯æ¬ ãªæ§æèŠçŽ ã§ãããããtrust_chain header parameter ãå«ãã§ã¯ãªããªãããã®ããããŒãã©ã¡ãŒã¿ã®äœ¿çšã¯ OPTIONAL ã§ããã
以äžã¯ãtrust_chain ãã©ã¡ãŒã¿ãæã€JWSããããŒã®éèŠç¯çãªäŸã§ããã
{
"typ": "...",
"alg": "RS256",
"kid": "SUdtUndEWVY2cUFDeDV5NVlBWDhvOXJodVl2am1mNGNtR0pmd",
"trust_chain": [
"eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImFsZyI6IlJTMjU2Iiwia2lkIjoiVUdaSGF6aHVZalpoT0Y5amNUaHBWa05KU1VkWWQxVnlaR1JGVXpWd09FVXlSMDQwU2tjMk1XMXVPQSJ9.eyJtZXRhZGF0YSI6IHsib3BlbmlkX2NyZWRlbnRpYWxfaXNzdWVyIjogeyJqd2tzIjogeyJrZXlzIjogW3sia3R5IjogIlJTQSIsICJraWQiOiAiUjJSelJYQTBSVkJ5ZHpGT1ZHMWZkV1JUTVRaM1lUUm1ObkUxVjNGZk1FMW9NVVpMZWtsaVkxTllPQSIsICJlIjogIkFRQUIiLCAibiI6ICI1SF9YaDd4Z0RXVHhRVmJKcW1PR3Vyb2tFOGtyMmUxS2dNV2NZT0E3NE9fMVBYZDJ1Z2p5SXE5dDFtVlBTdXd4LXR5U2syUEtwanAtLVdySG4zQTRVS0prdVIxMXpobWRMQnNVOFRPQkJ1NU1aOGF0RHVqZlJ3SUxYZEtzRVhrbHZhQjZQTFQ0emRab2RnQ3MwNUt5MmU1c2I1ejZfQ2lEcWdVVm5XUG1KTE1rZ3BCdFota01kX2xiOVNvb1psbGZVR2xUa3NhdUoyX2dWUS1WcEZVTVhZam9Kak54OTdldWthWW5SRW9DQzNUYV8tOGJjUm9zbHgyeHJJYnVfVUdWcWlwZU4zTlAtbWVmZjlWVFpXWU0zZ21vbHd1cG5NQ1hYaWlrY1I1VVNMVmcwZV9nejZPZm9SVkdLQVdJcFJSTFR6MmFpcXVrVkhaZFpYOXRObXowbXcifV19fSwgImZlZGVyYXRpb25fZW50aXR5IjogeyJvcmdhbml6YXRpb25fbmFtZSI6ICJPcGVuSUQgQ3JlZGVudGlhbCBJc3N1ZXIgZXhhbXBsZSIsICJvcmdhbml6YXRpb25fdXJpIjogImh0dHBzOi8vY3JlZGVudGlhbF9pc3N1ZXIuZXhhbXBsZS5vcmcvaG9tZSIsICJwb2xpY3lfdXJpIjogImh0dHBzOi8vY3JlZGVudGlhbF9pc3N1ZXIuZXhhbXBsZS5vcmcvcG9saWN5IiwgImxvZ29fdXJpIjogImh0dHBzOi8vY3JlZGVudGlhbF9pc3N1ZXIuZXhhbXBsZS5vcmcvc3RhdGljL2xvZ28uc3ZnIiwgImNvbnRhY3RzIjogWyJ0ZWNoQGNyZWRlbnRpYWxfaXNzdWVyLmV4YW1wbGUub3JnIl19fSwgImF1dGhvcml0eV9oaW50cyI6IFsiaHR0cHM6Ly9pbnRlcm1lZGlhdGUuZWlkYXMuZXhhbXBsZS5vcmciXSwgImp3a3MiOiB7ImtleXMiOiBbeyJrdHkiOiAiUlNBIiwgImtpZCI6ICJNR281VVY4dGIwRkpha2xEVm10aFpuTmpZWE50V1hvd1J6aG9OVzQwTTBkTVJqTlRTRWd3TWpNeE9BIiwgIm4iOiAielVITzlvQWJUOXg4TWhGNEdTY0JPU3BkaVRoMGM3dWh0eFo3WG9vRFMxckZyQXRXVUNRLV9nUUFjVmVsMEFjcUIxdEoyQmFTaEdobkdsX1ZVYTlqSXE5WkJpc2xQZS1tZ01STFFYNm1HdnhKR19Gb0FRQ3BOUGNXRWRCT21uNUFkVGxXeTFoYk9mMlY5YV9TUzdKeUpnaVJJMXBodm43bmhyNVVmMFRUX1B2NzJsS0tBZ3drUmdEOXZtWVRSOFBTSzF3b2d6WVJSMFYwYVg2M3I5Xy0wb2ZZN3hRRXIwR2xVY2dqZlVyS0dzS0JJNWswalQtQlIxdXpxaWJVSHlsblQ5UXBNajhBQ0docmktYXRnb2t0Z1ZtNklUTmJXYTBCcnIyMWVLVUpKaHZ1eGVQTUxhUDVPdUoxRy1CanhxakNwOHJGaTB0bWJOU0pWanNiUlplQ3lRIiwgImUiOiAiQVFBQiJ9XX0sICJzdWIiOiAiaHR0cHM6Ly9jcmVkZW50aWFsX2lzc3Vlci5leGFtcGxlLm9yZyIsICJpc3MiOiAiaHR0cHM6Ly9pbnRlcm1lZGlhdGUuZWlkYXMuZXhhbXBsZS5vcmciLCAiaWF0IjogMTc1ODUyNzgxOCwgImV4cCI6IDE3NTg4Mjc4MTh9.W3fbv3JrAxcDsV0MHk00MzcgC1DddTrzkRN8vdT1IRwq3qy9NtsiC2532oInHoxxjlKBu7D8cqF9yG0Tb1v4gk_tejyUo0M9xJqyz32RU2iZP0lpbNHHUDrMxuGv1wPDap2mKisRgbb7pxm6dx_aaIrydhx0uKDM6EwX1RzpMxJeqNMeLK9992_xyCZvsi3kVGRCJDSqd-rXBS_2LFWKUViC1_5GcsWAkRABBgRDeARqQah3FvJVWiAcNv2Te2k6SMW1MNVCT7Q3uf3c2vVuaVA1OwY_wUTrkfFRjKEOmU1sgZ1TndxJKQW0XZZmTxcoJfmrjmCyxtteucYznESMnw",
"eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImFsZyI6IlJTMjU2Iiwia2lkIjoiVUdaSGF6aHVZalpoT0Y5amNUaHBWa05KU1VkWWQxVnlaR1JGVXpWd09FVXlSMDQwU2tjMk1XMXVPQSJ9.eyJzdWIiOiAiaHR0cHM6Ly9jcmVkZW50aWFsX2lzc3Vlci5leGFtcGxlLm9yZyIsICJqd2tzIjogeyJrZXlzIjogW3sia3R5IjogIlJTQSIsICJraWQiOiAiTUdvNVVWOHRiMEZKYWtsRFZtdGhabk5qWVhOdFdYb3dSemhvTlc0ME0wZE1Sak5UU0Vnd01qTXhPQSIsICJuIjogInpVSE85b0FiVDl4OE1oRjRHU2NCT1NwZGlUaDBjN3VodHhaN1hvb0RTMXJGckF0V1VDUS1fZ1FBY1ZlbDBBY3FCMXRKMkJhU2hHaG5HbF9WVWE5aklxOVpCaXNsUGUtbWdNUkxRWDZtR3Z4SkdfRm9BUUNwTlBjV0VkQk9tbjVBZFRsV3kxaGJPZjJWOWFfU1M3SnlKZ2lSSTFwaHZuN25ocjVVZjBUVF9QdjcybEtLQWd3a1JnRDl2bVlUUjhQU0sxd29nellSUjBWMGFYNjNyOV8tMG9mWTd4UUVyMEdsVWNnamZVcktHc0tCSTVrMGpULUJSMXV6cWliVUh5bG5UOVFwTWo4QUNHaHJpLWF0Z29rdGdWbTZJVE5iV2EwQnJyMjFlS1VKSmh2dXhlUE1MYVA1T3VKMUctQmp4cWpDcDhyRmkwdG1iTlNKVmpzYlJaZUN5USIsICJlIjogIkFRQUIifV19LCAiaXNzIjogImh0dHBzOi8vaW50ZXJtZWRpYXRlLmVpZGFzLmV4YW1wbGUub3JnIiwgImlhdCI6IDE3NTg1Mjc4MTgsICJleHAiOiAxNzU4ODI3ODE4fQ.hF0ABpYlQBPzeMJrANe-5VOStDbZrEFdYVnNVwRgxphCMEMyoBfHDVv9kQceJtKqKbzFyFFCiO6QPY-GGt-eI37YxdzG5F8GCr9hBXfoUtTSiWaEop3B0AVXH0SelRO5zvN8W2SlR0rPTJ75kLv2vaVbgES_IzMhneteRvx2HGvCxOdvA4kermxkFT7MSP3YGyuNGJ4JAEvLXT6TmL9wiitGJ3SO34ImWZ4uI9zmSzWqvRIFKZ05dD2_RVybJbKQcOuRS3Th2yn0uq4YPzPw-Na2mw0FcYXMKQhq-SvdkI4Rt4eQMbIyyminMuTxrdIeQD6-rvSOxUTjF31sjnekvA",
"eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImFsZyI6IlJTMjU2Iiwia2lkIjoiTjFsNWVWWTJhMmszU0ZCSGNtcFRjMVJJYkZGM1R6VmlZbkp2VTBNNGJuaE1ZMXBxTkdod01VcEZTUSJ9.eyJzdWIiOiAiaHR0cHM6Ly9pbnRlcm1lZGlhdGUuZWlkYXMuZXhhbXBsZS5vcmciLCAiandrcyI6IHsia2V5cyI6IFt7Imt0eSI6ICJSU0EiLCAia2lkIjogIlVHWkhhemh1WWpaaE9GOWpjVGhwVmtOSlNVZFlkMVZ5WkdSRlV6VndPRVV5UjA0MFNrYzJNVzF1T0EiLCAibiI6ICJvTlhGczdmajR5Q0k2TUotS3JSbDM0WkpBbGR1N2x3ZE5rdHk2N1FHTUx5Wmh6dFpkT0VYV2w3Z1ZRUldIeUM3M01kTGlhU1VJUFB0R2daak5iSVJEUDF0UDFJZWlObU52bmhWTnNCbWNiVjhLRUNkXy1GRGlYWDRTT0VNU0ItNXVhTGpsay1VTGpZajdwZGhPSjJqcWdIQ1dHMmFhMkozYXdUY25zSXc1NDF0YVdoc2NGZlZIT0ktMVZnbzVCTDdmRGdEakRLcGtpeGg4SE5PUVVQTXJrMWdZb2tiakt3V0RKZXphUndtamVNWldOczB1aTFvdmlFWW0xQzRfTVNSWW8wUEVOWHk0QmQ2QzVHLTVTanZyNU83U1dLN19GUWpsY09yZXhrUERyNmdQQWZHZVZnNW1CblJYOGp3b1l0TnlMal94SlpSRGZKMDdjTTRfNXl4cVEiLCAiZSI6ICJBUUFCIn1dfSwgImlzcyI6ICJodHRwczovL3RydXN0LWFuY2hvci5leGFtcGxlLm9yZyIsICJpYXQiOiAxNzU4NTI3ODE4LCAiZXhwIjogMTc1ODgyNzgxOH0.G3DP1Nqt8UTXwes0ozKzADd1KmAYl0K0DhyjQMJOKR7pgqYp_S91ObMKPrBJDh1Mnpy7mpHICUM23pUEMFt7v_-MdqjPTOG5ebrxqjFtemizFk6iHWvwhCcheQIsNMRXf-y64Ox6SgBVXP_JaKHtA_YInTQB9-_bdb-mWvwpOlvvGH-l5Hl7TQten_IoewT9bfC62UkOmKzn0L1VlVFtYn9R7sRFUtnfcqsvvRLIHNfJwaJi-lpODgNv2l7arHssS_FmfX5ZN-3WylJJbZhtkFku1ITKx7c4bvGsZSvEx9m_ixGJYunfD-iKWAmfE1suc6X-ywR7dgdp_BBpMvytlg",
"eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImFsZyI6IlJTMjU2Iiwia2lkIjoiTjFsNWVWWTJhMmszU0ZCSGNtcFRjMVJJYkZGM1R6VmlZbkp2VTBNNGJuaE1ZMXBxTkdod01VcEZTUSJ9.eyJtZXRhZGF0YSI6IHsiZmVkZXJhdGlvbl9lbnRpdHkiOiB7ImZlZGVyYXRpb25fZmV0Y2hfZW5kcG9pbnQiOiAiaHR0cHM6Ly90cnVzdC1hbmNob3IuZXhhbXBsZS5vcmcvZmV0Y2giLCAiZmVkZXJhdGlvbl9yZXNvbHZlX2VuZHBvaW50IjogImh0dHBzOi8vdHJ1c3QtYW5jaG9yLmV4YW1wbGUub3JnL3Jlc29sdmUiLCAiZmVkZXJhdGlvbl9saXN0X2VuZHBvaW50IjogImh0dHBzOi8vdHJ1c3QtYW5jaG9yLmV4YW1wbGUub3JnL2xpc3QiLCAib3JnYW5pemF0aW9uX25hbWUiOiAiVEEgZXhhbXBsZSIsICJvcmdhbml6YXRpb25fdXJpIjogImh0dHBzOi8vdHJ1c3QtYW5jaG9yLmV4YW1wbGUub3JnL2hvbWUiLCAicG9saWN5X3VyaSI6ICJodHRwczovL3RydXN0LWFuY2hvci5leGFtcGxlLm9yZy9wb2xpY3kiLCAibG9nb191cmkiOiAiaHR0cHM6Ly90cnVzdC1hbmNob3IuZXhhbXBsZS5vcmcvc3RhdGljL2xvZ28uc3ZnIiwgImNvbnRhY3RzIjogWyJ0ZWNoQHRydXN0LWFuY2hvci5leGFtcGxlLm9yZyJdfX0sICJjb25zdHJhaW50cyI6IHsibWF4X3BhdGhfbGVuZ3RoIjogMX0sICJqd2tzIjogeyJrZXlzIjogW3sia3R5IjogIlJTQSIsICJraWQiOiAiTjFsNWVWWTJhMmszU0ZCSGNtcFRjMVJJYkZGM1R6VmlZbkp2VTBNNGJuaE1ZMXBxTkdod01VcEZTUSIsICJuIjogIm9pcm5UMEVjMkNva2JPZFJQT0VlbTI0SXc5LXhUeW5DcGwtOWx0cjBQclNUTEJXbHp6VW1IbzNBS25qemttNUg4MmxudVRMVTd1Skd3a0tqMjJaeklCMmFiMDIzendEX09rdDRaOXFyeW1kZUFYc0MtYXFhcVQ5RjZjZjFsbUJVczBvQXlwdWlTSnh1bU5WSVVucF9wbWhvbjlfR3NHUnlYcnJnT3lJclNKZ2hoX3p4RXREb3BnN0NQb3Q3Mmk3QlRpd0U1cXp0MFhGOHBnczM2VndYM0F3WnNMVkhpaGo0WVNUYXlYUUV3aUszMDUxRnhXXzVCbWNIRXJxM0J5WkU0UmZOSjBzbU96Z1NwMEtET0dkVjUwNHR5cTZJS1BjM04ybkhJd3hjUl9NbmczaWlfVWlFVXFYVEkwYkk5TlY4VHV4VWtrUldRcFZab0w5T3V2am9NUSIsICJlIjogIkFRQUIifV19LCAic3ViIjogImh0dHBzOi8vdHJ1c3QtYW5jaG9yLmV4YW1wbGUub3JnIiwgImlzcyI6ICJodHRwczovL3RydXN0LWFuY2hvci5leGFtcGxlLm9yZyIsICJpYXQiOiAxNzU4NTI3ODE4LCAiZXhwIjogMTc1ODgyNzgxOH0.lYDvz35LPE0V6nVUfO6Qwe8-AVQ9HBBeup-hg79HPAV-PqGa9dI9YX7GMiwb_khVGL8ASLfru4pFjlk4kjvgWj6u-ZXmWeElo48rAubCTtHKU8XOkHhvPXp04havTUevTCs3J0rBZKiJBLCBS9046yTrLPP8yN2hh_wR_3YExfW9O6w5tuEkghP4pQHZbWVZjE2pXTd-iIL5OFOWF_3050bAMTUQP_XUH5ZAPlj2-_qyDmARM9sh83SMDFwWkSqsDQDrOpWs1Uy7uT_iwqgPBuMSwUl9s4iRV-_CJy3IOdP0DCJOM3IyTWoHSlcMotEKGLmf4zTSnABr9PCPc5Bgrg"
]
}
Figure 6: Example JWS Header with a trust_chain Parameter
4.4. Peer Trust Chain Header Parameter
peer_trust_chain JWS header parameter ã¯ãåœè©²Entityãä¿¡é Œã確ç«ããããšããŠããçžæã® Entity ãšãéžæããã Trust Anchor ã®éã® Trust Chain ãæ§æãã Entity Statements ã®äžŠã³ãå«ãJSONé åã§ãããtrust_chain header parameter ãååšããå Žåãäž¡æ¹ã® Trust Chains ã® Trust Anchor ã¯åäžã§ããããšãæãŸãããäž¡æ¹ã® Trust Chains ãå«ããããšã§ã[App-Fed-Linkage] ã§å®çŸ©ããã Federation Integrity ããã³ Metadata Integrity ã®ç¹æ§ãéæã§ãããEntity Configurations ãš Subordinate Statements ã¯ãTrust Chain ã®äžå¯æ¬ ãªæ§æèŠçŽ ã§ãããããpeer_trust_chain header parameter ãå«ãã§ã¯ãªããªãããã®ããããŒãã©ã¡ãŒã¿ã®äœ¿çšã¯ OPTIONAL ã§ããã
5. Metadata
æ¬ã»ã¯ã·ã§ã³ã¯ãEntities ã«é¢ãã metadata ã®è¡šçŸæ¹æ³ãšäœ¿ç𿹿³ãå®çŸ©ãããå Entity Type ã«é©çšå¯èœãªãæ¢åã® OpenID Connect ããã³ OAuth 2.0 ã® metadata æšæºã䜿çšããã
ã»ã¯ã·ã§ã³3.1ã§è¿°ã¹ããšãããEntity ã® metadata 㯠Entity Statement ã® metadata Claim ã«çœ®ããããã®å€ã¯JSONãªããžã§ã¯ãã§ããããã®ãªããžã§ã¯ãã®ã¡ã³ããŒåã¯ãã»ã¯ã·ã§ã³5.1ã§èŠå®ããã Entity Type Identifiers ã§ãããå Entity Type Identifier ã«ç¶ã metadata ããŒã¿æ§é ã¯JSONãªããžã§ã¯ãã§ããã空ã®JSONãªããžã§ã¯ã {} ã§ãã£ãŠããããããã¯ãSuperiors ãå¿ èŠãª metadata å€ãæäŸããå Žåã«èµ·ããåŸãã
metadata ããŒã¿æ§é ã«ããããããã¬ãã«ã®JSONãªããžã§ã¯ãã¡ã³ããŒã¯ãnull ãé€ãä»»æã®JSONå€ã䜿çšããŠããããnull ã®äœ¿çšã¯çŠæ¢ããããããã¯ãnull å€ãæã€ã¡ã³ããŒãšãçç¥ãããã¡ã³ããŒãšãæ··åããããšã«ãã£ãŠå®è£ äžã®èª€ããçããããããã§ããã
5.1. Entity Type Identifiers
Entity Type Identifier ã¯ããã§ãã¬ãŒã·ã§ã³åå è ã® Entity Type ãšããã® Entity Type ã® metadata 圢åŒãäžæã«èå¥ãããæ¬ã»ã¯ã·ã§ã³ã§ã¯ federation_entity ã® Entity Type Identifierãããã³ OpenID Connect ãš OAuth 2.0 ã® Federation Entities ã®ããã®èå¥åãå®çŸ©ããã
OpenID Connect ããã³ OAuth 2.0 ã®ãã§ãã¬ãŒã·ã§ã³ã®ç¯å²å€ã®ãŠãŒã¹ã±ãŒã¹ãæ¯æŽããããã«ã远å ã® Entity Type Identifiers ãå®çŸ©ããŠãããã
5.1.1. Federation Entity
Entity Type Identifier 㯠federation_entity ã§ããã
以äžã§å®çŸ©ããã Federation Entity ã®ããããã£ã®ãããããå«ã Entities ã¯ããã® Entity Type ã䜿çšããªããã°ãªããªããæ¬¡ã® Federation Entity ããããã£ãå®çŸ©ããïŒ
federation_fetch_endpoint\ OPTIONALãã»ã¯ã·ã§ã³8.1ã§èšè¿°ããã fetch endpointããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªãããportãpathãquery parameter ãå«ãã§ãããïŒfragment ãå«ãã§ã¯ãªããªããIntermediate Entities ãš Trust Anchors 㯠federation_fetch_endpoint ãå ¬éããªããã°ãªããªããLeaf Entities ã¯å ¬éããŠã¯ãªããªãã
federation_list_endpoint\ OPTIONALãã»ã¯ã·ã§ã³8.2ã§èšè¿°ããã list endpointããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªãããportãpathãquery parameter ãå«ãã§ãããïŒfragment ãå«ãã§ã¯ãªããªããIntermediate Entities ãš Trust Anchors 㯠federation_list_endpoint ãå ¬éããªããã°ãªããªããLeaf Entities ã¯å ¬éããŠã¯ãªããªãã
federation_resolve_endpoint\ OPTIONALãã»ã¯ã·ã§ã³8.3ã§èšè¿°ããã resolve endpointããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªãããportãpathãquery parameter ãå«ãã§ãããïŒfragment ãå«ãã§ã¯ãªããªããä»»æã® federation Entity 㯠federation_resolve_endpoint ãå ¬éããŠãããã
federation_trust_mark_status_endpoint\ OPTIONALãã»ã¯ã·ã§ã³8.4ã§èšè¿°ããã Trust Mark Status endpointãTrust Mark Issuers 㯠federation_trust_mark_status_endpoint ãå ¬éããããšãæãŸããããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªãããportãpathãquery parameter ãå«ãã§ãããïŒfragment ãå«ãã§ã¯ãªããªãã
federation_trust_mark_list_endpoint\ OPTIONALãã»ã¯ã·ã§ã³8.5ã§èšè¿°ããã endpointããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªãããportãpathãquery parameter ãå«ãã§ãããïŒfragment ãå«ãã§ã¯ãªããªããTrust Mark Issuers 㯠federation_trust_mark_list_endpoint ãå ¬éããŠãããã
federation_trust_mark_endpoint\ OPTIONALãã»ã¯ã·ã§ã³8.6ã§èšè¿°ããã endpointããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªãããportãpathãquery parameter ãå«ãã§ãããïŒfragment ãå«ãã§ã¯ãªããªããTrust Mark Issuers 㯠federation_trust_mark_endpoint ãå ¬éããŠãããã
federation_historical_keys_endpoint\ OPTIONALãã»ã¯ã·ã§ã³8.7ã§èšè¿°ããã endpointããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªãããportãpathãquery parameter ãå«ãã§ãããïŒfragment ãå«ãã§ã¯ãªããªãããã¹ãŠã® Federation Entities 㯠federation_historical_keys_endpoint ãå ¬éããŠãããã
endpoint_auth_signing_alg_values_supported\ OPTIONALãã»ã¯ã·ã§ã³8.8ã§è¿°ã¹ããšãããfederation endpoints ã«å¯ŸããŠèªèšŒããéã« private_key_jwt ã§äœ¿çšãããJWTã«çœ²åããããã«ãµããŒããã JWS ã¢ã«ãŽãªãºã ïŒalg å€ïŒã®äžèЧãå«ãJSONé åããã®ãšã³ããªãçç¥ãããŠããããã©ã«ãã®ã¢ã«ãŽãªãºã ã¯æé»ã«ç€ºãããªãããµãŒããŒã¯ RS256 ããµããŒãããããšãæãŸãããnone ã®å€ã¯äœ¿çšããŠã¯ãªããªãã
远å ã® Federation Entity ããããã£ãå®çŸ©ããŠäœ¿çšããŠãããã
å Federation Entity ããã»ã¯ã·ã§ã³5.2.2ã§å®çŸ©ããã organization_name Claim ãå«ãããšãæšå¥šãããã
以äžã¯ federation_entity Entity Type ã® metadata ã®éèŠç¯çãªäŸã§ããïŒ
"federation_entity": {
"federation_fetch_endpoint":
"https://amanita.caesarea.example.com/federation_fetch",
"federation_list_endpoint":
"https://amanita.caesarea.example.com/federation_list",
"federation_trust_mark_status_endpoint": "https://amanita.caesarea.example.com/status",
"federation_trust_mark_list_endpoint": "https://amanita.caesarea.example.com/trust_marked_list",
"organization_name": "Ovulo Mushroom",
"organization_uri": "https://amanita.caesarea.example.com"
}
Figure 7: Example of federation_entity Entity Type
5.1.2. OpenID Connect Relying Party
Entity Type Identifier 㯠openid_relying_party ã§ããã
OpenID Connect Dynamic Client Registration 1.0 ã®ã»ã¯ã·ã§ã³2ã[OpenID.RP.Choices]ãããã³ã»ã¯ã·ã§ã³5.2ã§å®çŸ©ããããã¹ãŠã®ãã©ã¡ãŒã¿ãé©çšããããããã«ãIANA ã® âOAuth Dynamic Client Registration Metadataâ ã¬ãžã¹ããªã«ç»é²ããã远å ãã©ã¡ãŒã¿ãé©çšãããããã ããregistration responses ã§ã®ã¿äœ¿çšããããã«ã¬ãžã¹ããªã§å®çŸ©ãããŠãããã©ã¡ãŒã¿ïŒäŸïŒclient_secretïŒã¯é€ãã
å ããŠã次ã®RP metadata ãã©ã¡ãŒã¿ãå®çŸ©ããïŒ
client_registration_types\ RECOMMENDEDãRPããµããŒããã client registration types ãæå®ããæååé åãæ¬ä»æ§ã§å®çŸ©ããå€ã¯ automatic ãš explicit ã§ãããæ¬ä»æ§ã«ããå¶éãªãã«ã远å ã®å€ãå®çŸ©ããŠäœ¿çšããŠãããã
以äžã¯ãRPã® Entity Configuration ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããïŒ
{
"iss": "https://openid.sunet.se",
"sub": "https://openid.sunet.se",
"iat": 1516239022,
"exp": 1516298022,
"metadata": {
"openid_relying_party": {
"application_type": "web",
"redirect_uris": [
"https://openid.sunet.se/rp/callback"
],
"organization_name": "SUNET",
"logo_uri": "https://www.sunet.se/sunet/images/32x32.png",
"grant_types": [
"authorization_code",
"implicit"
],
"signed_jwks_uri": "https://openid.sunet.se/rp/signed_jwks.jose",
"jwks_uri": "https://openid.sunet.se/rp/jwks.json",
"client_registration_types": ["automatic"]
}
},
"jwks": {
"keys": [
{
"alg": "RS256",
"e": "AQAB",
"kid": "key1",
"kty": "RSA",
"n": "pnXBOusEANuug6ewezb9J_...",
"use": "sig"
}
]
},
"authority_hints": [
"https://edugain.org/federation"
]
}
Figure 8: Example Relying Party Entity Configuration JWT Claims Set
5.1.3. OpenID Connect OpenID Provider
Entity Type Identifier 㯠openid_provider ã§ããã
OpenID Connect Discovery 1.0 ã®ã»ã¯ã·ã§ã³3ãããã³ã»ã¯ã·ã§ã³5.2ã§å®çŸ©ããããã¹ãŠã®ãã©ã¡ãŒã¿ãé©çšããããããã«ãIANA ã® âOAuth Authorization Server Metadataâ ã¬ãžã¹ããªã«ç»é²ããã远å ãã©ã¡ãŒã¿ãé©çšããããäŸãã°ãrequire_signed_request_object ããã³ require_pushed_authorization_requests ã® metadata ãã©ã¡ãŒã¿ã䜿çšã§ããã
openid_provider metadata ã® issuer ãã©ã¡ãŒã¿å€ã¯ãFederation Entity identifierïŒEntity Configuration å ã® iss ãã©ã¡ãŒã¿ïŒãšäžèŽããªããã°ãªããªãã
å ããŠã次ã®OP metadata ãã©ã¡ãŒã¿ãå®çŸ©ããïŒ
client_registration_types_supported\ RECOMMENDEDãOPããµããŒããã client registration types ãæå®ããæååé åãæ¬ä»æ§ã§å®çŸ©ããå€ã¯ automatic ãš explicit ã§ãããæ¬ä»æ§ã«ããå¶éãªãã«ã远å ã®å€ãå®çŸ©ããŠäœ¿çšããŠãããã
federation_registration_endpoint\ OPTIONALãOPã®ãã§ãã¬ãŒã·ã§ã³åºæã® Dynamic Client Registration Endpoint ã®URLãOPã Explicit Client Registration Endpoint ããµããŒãããå Žåããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªãããportãpathãquery parameter ãå«ãã§ãããïŒfragment ãå«ãã§ã¯ãªããªããã»ã¯ã·ã§ã³12.2ã§èšè¿°ããã Explicit Client Registration ãOPããµããŒãããå Žåããã®Claim㯠REQUIRED ã§ããã
以äžã¯ãOPã® Entity Configuration ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããïŒ
{
"iss": "https://op.umu.se",
"sub": "https://op.umu.se",
"exp": 1568397247,
"iat": 1568310847,
"metadata": {
"openid_provider": {
"issuer": "https://op.umu.se",
"signed_jwks_uri": "https://op.umu.se/openid/signed_jwks.jose",
"authorization_endpoint": "https://op.umu.se/openid/authorization",
"client_registration_types_supported": [
"automatic",
"explicit"
],
"grant_types_supported": [
"authorization_code",
"implicit",
"urn:ietf:params:oauth:grant-type:jwt-bearer"
],
"id_token_signing_alg_values_supported": [
"ES256",
"RS256"
],
"logo_uri": "https://www.umu.se/img/umu-logo-left-neg-SE.svg",
"op_policy_uri": "https://www.umu.se/en/legal-information/",
"response_types_supported": [
"code",
"code id_token",
"token"
],
"subject_types_supported": [
"pairwise",
"public"
],
"token_endpoint": "https://op.umu.se/openid/token",
"federation_registration_endpoint": "https://op.umu.se/openid/fedreg",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"client_secret_basic",
"client_secret_jwt",
"private_key_jwt"
],
"pushed_authorization_request_endpoint": "https://op.umu.se/openid/par",
"request_object_signing_alg_values_supported": [
"ES256",
"RS256"
],
"token_endpoint_auth_signing_alg_values_supported": [
"ES256",
"RS256"
]
}
},
"authority_hints": [
"https://umu.se"
],
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "dEEtRjlzY3djcENuT01wOGxrZlkxb3RIQVJlMTY0...",
"kty": "RSA",
"n": "x97YKqc9Cs-DNtFrQ7_vhXoH9bwkDWW6En2jJ044yH..."
}
]
}
}
Figure 9: Example OpenID Provider Entity Configuration JWT Claims Set
5.1.4. OAuth Authorization Server
Entity Type Identifier 㯠oauth_authorization_server ã§ããã
[RFC8414] ã®ã»ã¯ã·ã§ã³2ããã³ã»ã¯ã·ã§ã³5.2ã§å®çŸ©ããããã¹ãŠã®ãã©ã¡ãŒã¿ãé©çšããããããã«ãIANA ã® âOAuth Authorization Server Metadataâ ã¬ãžã¹ããªã«ç»é²ããã远å ãã©ã¡ãŒã¿ãé©çšãããã
oauth_authorization_server metadata ã® issuer ãã©ã¡ãŒã¿å€ã¯ãFederation Entity identifierïŒEntity Configuration å ã® iss ClaimïŒãšäžèŽããªããã°ãªããªãã
5.1.5. OAuth Client
Entity Type Identifier 㯠oauth_client ã§ããã
OAuth 2.0 Dynamic Client Registration Protocol ã®ã»ã¯ã·ã§ã³2ããã³ã»ã¯ã·ã§ã³5.2ã§å®çŸ©ããããã¹ãŠã®ãã©ã¡ãŒã¿ãé©çšããããããã«ãIANA ã® âOAuth Dynamic Client Registration Metadataâ ã¬ãžã¹ããªã«ç»é²ããã远å ãã©ã¡ãŒã¿ãé©çšãããã
5.1.6. OAuth Protected Resource
Entity Type Identifier 㯠oauth_resource ã§ãããã»ã¯ã·ã§ã³5.2ã§å®çŸ©ããããã©ã¡ãŒã¿ãé©çšããããå ããŠããããã€ã¡ã³ã㯠[RFC9728] ã§å®çŸ©ããã protected resource metadata ãã©ã¡ãŒã¿ã䜿çšããŠãããã
5.2. Common Metadata Parameters
æ¬ã»ã¯ã·ã§ã³ã¯ã以äžã«èšã JWK Sets ã«é¢ããäŸå€ãé€ããäžèšãã¹ãŠã® Entity Types ã§äœ¿çšããŠããã远å ã® metadata ãã©ã¡ãŒã¿ãå®çŸ©ããã
5.2.1. Extensions for JWK Sets in Entity Metadata
以äžã® metadata ãã©ã¡ãŒã¿ã¯ãEntity ã® Entity Type ã«å¯Ÿãã JWK Sets ãååŸããæ¹æ³ãå®çŸ©ããããããã®éµã¯ãEntity Statements ã«çœ²åããããã«äœ¿çšããã Federation Entity KeysïŒEntity Statement ã® jwks Claim ã«ãããmetadata Claim ã®äžã§ã¯ãªãïŒãšã¯å¥ç©ã§ããç¹ã«æ³šæããããšãJWK Sets ã«å¯Ÿãããããã®æ¡åŒµã¯ãfederation_entity Entity Type ã® metadata ã§ã¯äœ¿çšããŠã¯ãªããªãã
signed_jwks_uri\ OPTIONALãåœè©² Entity Type ã® payload ãšããŠãEntity ã® JWK Set ããã¥ã¡ã³ããæã€çœ²åä»ãJWTãåç §ããURLããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªããªããJWT㯠Federation Entity Key ãçšããŠçœ²åãããªããã°ãªããªãããã®URLããã®æåã¬ã¹ãã³ã¹ã¯ãHTTPã¹ããŒã¿ã¹ã³ãŒã200ããã³ content type application/jwk-set+jwt ã䜿çšããªããã°ãªããªãã眲åéµãšæå·åéµãäž¡æ¹ååšããå Žåãåç §ããã JWK Set å ã®ãã¹ãŠã®éµã«å¯ŸããŠãåéµã®æå³ããçšéã瀺ã useïŒpublic key useïŒãã©ã¡ãŒã¿å€ã REQUIRED ã§ããã
Signed JWK Set JWTs ã¯ã[RFC8725] ã®ã»ã¯ã·ã§ã³3.11ã«åŸããJWTéã®æ··åãé²ããããtyp ããããŒãã©ã¡ãŒã¿ã jwk-set+jwt ã«èšå®ããŠæç€ºçã«åä»ãããããtyp ããããŒãã©ã¡ãŒã¿ããªãããŸãã¯ç°ãªã typ å€ãæã€ Signed JWK Set JWTs ã¯æåŠããªããã°ãªããªãã
Signed JWK Set JWTs ã¯ã䜿çšãã眲åéµã® Key ID ã«çããå€ãæã€ kidïŒKey IDïŒããããŒãã©ã¡ãŒã¿ãå«ãŸãªããã°ãªããªãã
payload ã§ã®äœ¿çšãæå®ããã Claims ã以äžã«ç€ºãïŒkeys 以å€ã¯ãã¹ãŠ [RFC7519] ã§å®çŸ©ãããïŒïŒ
keys\ REQUIREDãJWK Set å ã®JWKå€ã®é åã
iss\ REQUIREDã"iss"ïŒissuerïŒClaim ã¯ãJWTãçºè¡ããäž»äœãèå¥ããã
sub\ REQUIREDãæ¬Claimã¯éµã®ææè ãèå¥ãããissuer ãšåäžã§ããããšãæãŸããã
iat\ OPTIONALãæ°å€ããã®Signed JWK Set ãçºè¡ãããæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãã
exp\ OPTIONALãæ°å€ãæ¬Claimã¯ãJWTãç¡å¹ã«ãªãæå»ãèå¥ããã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãã
[RFC7519] ã§ã¯ããã«å€ãã®Claimsãå®çŸ©ããããããã®æèã§ã¯ aud ã¯ãissuer ã audience ãç¥ãåŸãªããã䜿çšããªãããšãæãŸãããnbf ãš jti ã¯ãã®æèã§ç¹ã«æçšã§ã¯ãªããçç¥ããããšãæãŸããã
äžèšã®ClaimsãšäœµããŠã远å ã®Claimsãå®çŸ©ããŠäœ¿çšããŠãããã
以äžã¯ãSigned JWK Set ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããã
{
"keys": [
{
"kty": "RSA",
"kid": "SUdtUndEWVY2cUFDeDV5NVlBWDhvOXJodVl2am1mNGNtR0pmd",
"n": "y_Zc8rByfeRIC9fFZrDZ2MGH2ZnxLrc0ZNNwkNet5rwCPYeRF3Sv
5nihZA9NHkDTEX97dN8hG6ACfeSo6JB2P7heJtmzM8oOBZbmQ90n
EA_JCHszkejHaOtDDfxPH6bQLrMlItF4JSUKua301uLB7C8nzTxm
tF3eAhGCKn8LotEseccxsmzApKRNWhfKDLpKPe9i9PZQhhJaurwD
kMwbWTAeZbqCScU1o09piuK1JDf2PaDFevioHncZcQO74Obe4nN3
oNPNAxrMClkZ9s9GMEd5vMqOD4huXlRpHwm9V3oJ3LRutOTxqQLV
yPucu7eHA7her4FOFAiUk-5SieXL9Q",
"e": "AQAB"
},
{
"kty": "EC",
"kid": "MFYycG1raTI4SkZvVDBIMF9CNGw3VEZYUmxQLVN2T21nSWlkd3",
"crv": "P-256",
"x": "qAOdPQROkHfZY1daGofOmSNQWpYK8c9G2m2Rbkpbd4c",
"y": "G_7fF-T8n2vONKM15Mzj4KR_shvHBxKGjMosF6FdoPY"
}
],
"iss": "https://example.org/op",
"sub": "https://example.org/op",
"iat": 1618410883
}
Figure 10: Example JWT Claims Set for a Signed JWK Set
jwks_uri\ OPTIONALãåœè©² Entity Type ã®ããã® Entity ã®éµãå«ãJWK Set ããã¥ã¡ã³ããåç §ããURLããã®URL㯠https ã¹ããŒã ã䜿çšããªããã°ãªããªãã眲åéµãšæå·åéµãäž¡æ¹ååšããå Žåãåç §ããã JWK Set å ã®ãã¹ãŠã®éµã«å¯ŸããŠãåéµã®æå³ããçšéã瀺ã useïŒpublic key useïŒãã©ã¡ãŒã¿å€ã REQUIRED ã§ããã
jwks\ OPTIONALãåœè©² Entity Type ã®ããã® Entity ã®éµãå«ãã倿ž¡ãã® JSON Web Key Set ããã¥ã¡ã³ãã眲åéµãšæå·åéµãäž¡æ¹ååšããå ŽåãJWK Set å ã®ãã¹ãŠã®éµã«å¯ŸããŠãåéµã®æå³ããçšéã瀺ã useïŒpublic key useïŒãã©ã¡ãŒã¿å€ã REQUIRED ã§ãããæ¬ãã©ã¡ãŒã¿ã¯ãäœããã®çç±ã§ signed_jwks_uri ãã©ã¡ãŒã¿ã䜿çšã§ããªãåå è ãå©çšããããšãæ³å®ããŠãããjwks ã䜿çšããå©ç¹ã¯ãEntity Type ã®ããã® Entity ã®éµã Trust Chains ã«èšé²ãããç¹ã§ããã
5.2.1.1. Usage of jwks, jwks_uri, and signed_jwks_uri in Entity Metadata
Entity Configuration ãããã® OpenID Connect ãŸã㯠OAuth 2.0 ã® metadata ã«ãããŠãjwksãjwks_uriãsigned_jwks_uri ã®ãããã1ã€ã ãã䜿çšããããšãæšå¥šããããããããEntity ãè€æ°ã®ãã§ãã¬ãŒã·ã§ã³ã«å±ãããã§ãã¬ãŒã·ã§ã³ããšã«äœ¿çšãã¹ã JWK Set 衚çŸã«é¢ããããªã·ãŒãç°ãªãå Žåãªã©ãè€æ°ã® JWK Set 衚çŸã䜿çšããããšãæãŸããç¶æ³ãããåŸãããŸããäžéšã®å®è£ ã¯ããããã¹ãŠã®è¡šçŸãçè§£ã§ããªãå¯èœæ§ãããç¹ã«ã泚æããããšãäŸãã°ãOpenID Connect ã®OP metadata ã§ã¯ jwks_uri ã¯ç¢ºå®ã«çè§£ãããäžæ¹ã§ãsigned_jwks_uri ã¯ãã¹ãŠã® OpenID Connect å®è£ ã§çè§£ããããšã¯éããªãããã®ãããçè§£ããã JWK Set 衚çŸã䜵ããŠååšããå¿ èŠãããã
è€æ°ã® JWK Set 衚çŸã䜿çšãããå Žåãå衚çŸã«å«ãŸããéµã¯åäžã§ããããšãæãŸãããç¹å®ã®ç¬éã«å®å šã«åäžã§ãªãå ŽåïŒéµããŒããŒã·ã§ã³ã®éçšäžã«èµ·ããåŸãïŒã§ãã£ãŠããå®è£ ã¯é©æã«ããããæŽåãããªããã°ãªããªãã
5.2.2. Informational Metadata Extensions
以äžã® metadata ãã©ã¡ãŒã¿ã¯ãEntity Type ã«å¯Ÿãã Entity ã®æ å ±ãååŸããæ¹æ³ãå®çŸ©ããã
organization_name\ OPTIONALããã® Entity ãææããçµç¹ã衚ãã人éãèªããåç§°ãææè ãèªç¶äººã§ããå ŽåãäŸãã°ãã®äººã®ååã§ãã£ãŠãããããã®æ å ±ã¯å ¬éãããç¹ã«æ³šæããããšã
display_name\ OPTIONALãEnd-User ã«æç€ºããããã®ãEntity ã®äººéãèªããåç§°ã
description\ OPTIONALãEnd-User ã«æç€ºã§ãããEntity ã®äººéãèªããç°¡æœãªèª¬æã
keywords\ OPTIONALããã® Entity ã«é©çšãããæ€çŽ¢ããŒã¯ãŒããã¿ã°ãã«ããŽãªããŸãã¯ã©ãã«ã衚ãã1ã€ä»¥äžã®æååãæã€JSONé åã
contacts\ OPTIONALããã® Entity ã®é£çµ¡æ åœè ã衚ãã1ã€ä»¥äžã®æååãæã€JSONé åãååãã¡ãŒã«ã¢ãã¬ã¹ã説æãé»è©±çªå·ãªã©ãå«ãã§ãããã
logo_uri\ OPTIONALãæååããã® Entity ã®ããŽãæãURLãããŽãå«ããã¡ã€ã«ã¯ãWebçµç±ã§é²èЧã§ãã圢åŒã§å ¬éããããšãæãŸããã
policy_uri\ OPTIONALããã® Entity ã«é¢é£ããæ¡ä»¶ãããªã·ãŒã®ææžã®URLã
information_uri\ OPTIONALãEnd-User ãé²èЧã§ããããã® Entity ã«é¢ããè¿œå æ å ±ã®ææžã®URLã
organization_uri\ OPTIONALããã® Entity ãææããçµç¹ã®WebããŒãžã®URLã
ãããã® metadata ãã©ã¡ãŒã¿ã¯ãEntity ã䜿çšããä»»æã® Entity Types ã® metadata ã«ååšããŠãããã
6. Federation Policy
6.1. Metadata Policy
Trust Anchors ãš Intermediate Entities ã¯ãèªèº«ã® Subordinates ã® metadata ã«é©çšãããããªã·ãŒãå®çŸ©ããŠãããã
ãã§ãã¬ãŒã·ã§ã³ã¯ãç¹å®ã®ç®çãéæããããã« metadata policies ãå©çšã§ãããäŸãã°ãOpenID Connect ã® Entities ãããªããã§ãã¬ãŒã·ã§ã³ã§ã¯ãOpenID Providers ãš Relying Parties ãå ¬éãã metadata ãçžäºéçšå¯èœã§ããããšã確ä¿ããããšããç®çãããåŸããå¥ã®ç®çãšããŠãäŸãã° FAPI ã®ãããªã»ãã¥ãªãã£ãããã¡ã€ã«ã« Entity metadata ãæºæ ãããããšããããšãããåŸãã
metadata_policy ã¯ãmetadata ãã©ã¡ãŒã¿ã®JSONå€åã確èªãæ€èšŒããããã®ãã®ã§ã¯ãªãç¹ã«æ³šæããããšããã®ãããªæ€æ»ã¯ãæåè£ã«è§£æ±ºããã Trust Chain ãã Entity metadata ãååŸããåŸãã¢ããªã±ãŒã·ã§ã³å±€ã§å®æœããããšãæãŸããã
6.1.1. Principles
OpenID Federation ã¯ã以äžã®ç¹æ§ãæã€ metadata policies ã®å®çŸ©ãå¯èœã«ããïŒ
Hierarchy\ ãã£ãã metadata ãã©ã¡ãŒã¿ã«é©çšããã metadata policy ã¯ãTrust Chain ã®äžã§äžäœã«äœçœ®ãã Intermediate Entities ã«ãã£ãŠæ€åãããããããç·©ããã®ã«ããããã¯ã§ããªãã
ããªã·ãŒã®éå±€æ§ã¯ããããã§ãã¬ãŒã·ã§ã³ã® Trust Anchor ãå¥ã®ãã§ãã¬ãŒã·ã§ã³ã§ Intermediate Entity ãšããŠæ©èœããããã¹ããããã§ãã¬ãŒã·ã§ã³ã§ãç¶æãããã
Equal Opportunity\ Trust Chain å ã®ãã¹ãŠã® Superior Entities ã¯ãåçã®ç«å Žã§ metadata policies ã«å¯äžã§ããããã ãããã®å¯äžã®çµæãšããŠåŸãããçµååŸã® metadata policy ãè«ççã«å¥å šã§ããããšãæ¡ä»¶ã§ãããäŸãã°ãä»»æã® Intermediate ã¯ãSuperiors ãæå®ãããã®ã«å¯ŸããŠãSubordinates ã® metadata ãããã«å¶éã§ãããIntermediate ã metadata policies ã®éã«ççŸãå°å ¥ããå Žåããã® Trust Chain ã¯ç¡å¹ãšèŠãªãããã
Specificity and Granularity\ metadata ãšåæ§ã«ãmetadata policy ã¯ç¹å®ã® Entity Type ã«çµã³ä»ãããããããã«ãããç°ãªã Entity Types ã®ããªã·ãŒã¯äºãã«ç¬ç«ããéé¢ãããã
ããªã·ãŒã¯åã ã® metadata ãã©ã¡ãŒã¿ã®ã¬ãã«ã§è¡šçŸãããããããã£ãŠããã Entity Type ã®ç¹å®ã® metadata ãã©ã¡ãŒã¿ã«å¯Ÿããããªã·ãŒã¯ãä»ã®ãã©ã¡ãŒã¿ã«å¯Ÿããããªã·ãŒããç¬ç«ããéé¢ãããã
Trust Anchor ãŸã㯠Intermediate Entity ãããã Entity Type ã«å¯Ÿãã metadata policy ãå®çŸ©ããå Žåããã®ããªã·ãŒã¯ Trust Chain å ã«ããåœè©²åã®ãã¹ãŠã® Subordinate Entities ã® metadata ã«é©çšãããã
ããªã·ãŒãå®çŸ©ããå Žæã¯ Subordinate Statement ã§ããããã€å Entity Statement ã¯ç¹å®ã® subject ã«å¯ŸããŠçºè¡ãããããããã§ãã¬ãŒã·ã§ã³æš©åšã¯ããã¹ãŠã® Subordinates ã«å ±éã® Entity Type metadata policy ãå®çŸ©ããããšããç¹å®ã® Subordinates ã«å¯ŸããŠç¹å®ã® Entity Type metadata policies ãå®çŸ©ããããšãéžã¹ãã
Operation\ ããªã·ãŒã¯ãäžãããã metadata ãã©ã¡ãŒã¿ã«å¯ŸããŠãæ€æ»ã倿ŽããŸãã¯ãã®äž¡æ¹ãè¡ãããšã«ãã£ãŠåäœãããæ¬ä»æ§ã¯ãã»ã¯ã·ã§ã³6.1.3.1ã§è¿°ã¹ãæšæºã®æŒç®åã»ãããå®çŸ©ããããã§ãã¬ãŒã·ã§ã³ã¯ãæ¬ã»ã¯ã·ã§ã³ããã³ã»ã¯ã·ã§ã³6.1.3ãšã»ã¯ã·ã§ã³6.1.3.2ã§è¿°ã¹ãååã«é©åããéãã远å ã®æŒç®åãæå®ããŠäœ¿çšããŠãããã
Integral Metadata Enforcement\ metadata policies ã®è§£æ±ºãšé©çšã¯ãã»ã¯ã·ã§ã³10ã§è¿°ã¹ããšãããTrust Chain 解決ããã»ã¹ã®äžå¯æ¬ ãªäžéšã§ããã
ããã¯æ¬¡ãæå³ããïŒ
- äŸãã° Intermediate Entity ã®ããªã·ãŒã Superior ã®ããªã·ãŒãšè¡çªãããªã©ã®ãšã©ãŒã«ãããmetadata policy ã®è§£æ±ºã«å€±æãã Trust Chain ã¯ç¡å¹ãšèŠãªãããã
- 解決æžã¿ã® metadata policies ã«æºæ ããªã Entity metadata ãæã€ Trust Chain ã¯ç¡å¹ãšèŠãªãããã
Determinism\ Trust Chain ã«ããã metadata policies ã®è§£æ±ºãšé©çšã¯æ±ºå®çã§ããããããã£ãŠ Trust Anchors ãš Intermediate Entities ã¯ãäºæž¬å¯èœã§åçŸå¯èœãªçµæã瀺ãããªã·ãŒãå®åŒåã§ããã
6.1.2. Structure
Metadata policies ã¯ãã»ã¯ã·ã§ã³3.3ã§è¿°ã¹ããšãããSubordinate Statement ã®
metadata_policy Claim ã«è¡šçŸããããClaim
ã®å€ã¯JSONãªããžã§ã¯ãã§ããããã®ããŒã¿æ§é ã¯3éå±€ããæãïŒ
Entity Types ã«å¯Ÿãã metadata policiesã
æäžäœïŒç¬¬1éå±€ïŒã«ã¯ã1ã€ä»¥äžã®ã¡ã³ããŒãå«ãŸããããããããã Entity Type
ã«å¯Ÿãã metadata policy ã衚ããåã¡ã³ããŒåã¯ãã»ã¯ã·ã§ã³5.1ã§èŠå®ããã
Entity Type
IdentifierïŒäŸïŒopenid_relying_partyïŒã§ãããã¡ã³ããŒå€ã¯ãmetadata
ãã©ã¡ãŒã¿ã«å¯Ÿããããªã·ãŒãå«ãJSONãªããžã§ã¯ãã§ããã
åœè©² Entity Type ã® metadata ãã©ã¡ãŒã¿ã«å¯Ÿããããªã·ãŒã
第2éå±€ã«ã¯ã1ã€ä»¥äžã®ã¡ã³ããŒãå«ãŸãããããããåœè©² Entity Type ã®ãã
metadata ãã©ã¡ãŒã¿ã«å¯Ÿããããªã·ãŒã衚ããåã¡ã³ããŒå㯠metadata
ãã©ã¡ãŒã¿åïŒäŸïŒid_token_signed_response_algïŒã§ãããååã¯ãã»ã¯ã·ã§ã³14ã§è¿°ã¹ãèšèªã¿ã°ãå«ãã§ãããããã®å Žåãåœè©²
metadata ãã©ã¡ãŒã¿ã«å¯Ÿããããªã·ãŒã¯ãæå®ãããèšèªã¿ã°ãæã€ metadata
ãã©ã¡ãŒã¿ã«ã®ã¿é©çšããããã¡ã³ããŒå€ã¯ãããªã·ãŒæŒç®åãå«ãJSONãªããžã§ã¯ãã§ããã
åœè©² Entity Type ã® metadata ãã©ã¡ãŒã¿ããªã·ãŒã«å¯ŸããæŒç®åã
第3éå±€ã«ã¯ã1ã€ä»¥äžã®ã¡ã³ããŒãå«ãŸãããããããã»ã¯ã·ã§ã³6.1.3ã§è¿°ã¹ããšãããmetadata ãã©ã¡ãŒã¿ãæ€æ»ãŸãã¯å€æŽããæŒç®åã衚ããããã«ã¯ãåæŒç®åã®ä»æ§ã§å®çŸ©ããããšãããäºãã«çµã¿åãããããšãèš±ãããæŒç®åã ããåæã«å«ããããšãã§ããã
metadata_policy Claim
ã®ããŒã¿æ§é ã®3éå±€ã®ãããã«ãããŠããJSONãªããžã§ã¯ãã®ã¡ã³ããŒåãéè€ããŠååšããŠã¯ãªããªãã
以äžã¯ãid_token_signed_response_alg ãšãã metadata
ãã©ã¡ãŒã¿ã«å¯Ÿããåäžã®ããªã·ãŒããæããdefault ãš one_of
ã®2ã€ã®æŒç®åãçšãã OpenID Relying Party åã metadata policy
ã®éèŠç¯çãªäŸã§ããïŒ
"metadata_policy" : {
"openid_relying_party": {
"id_token_signed_response_alg": {
"default": "ES256",
"one_of": ["ES256", "ES384", "ES512"]
}
}
}
Figure 11: Example metadata_policy Claim
6.1.3. Operators
metadata policy operator ã¯æ¬¡ã®æ§è³ªãæã€ïŒ
- äžæã§å€§æåå°æåãåºå¥ããåç§°ã«ãã£ãŠèå¥ãããã
- åäžã® metadata ãã©ã¡ãŒã¿ã«äœçšãããæŒç®åã®å®çŸ©ã¯ããµããŒããå¿ é ã§ãã metadata ãã©ã¡ãŒã¿ã®JSONå€åãæå®ããªããã°ãªãããããã«ãµããŒããä»»æã§ããJSONå€åãæå®ããŠããããmetadata ãã©ã¡ãŒã¿ããµããŒããããªãJSONå€åãæã€å ŽåãæŒç®åã¯ããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
- metadata ãã©ã¡ãŒã¿ã«å¯Ÿããäœçšã¯ãå€ã®æ€æ»ãå€ã®å€æŽããŸãã¯ãã®äž¡æ¹ã«ãªãåŸããæŒç®åã®äœçšãå€ã®å€æŽã§ããå ŽåãæŒç®å㯠metadata ãã©ã¡ãŒã¿ãåé€ããŠãããã
- æŒç®åã®äœçšã¯JSONå€ã«ãã£ãŠèšå®ããããæŒç®åã®å®çŸ©ã¯ããµããŒããå¿ é ã§ããæŒç®åèšå®çšJSONå€åãæå®ããªããã°ãªãããããã«ãµããŒããä»»æã§ããJSONå€åãæå®ããŠããããæŒç®åããµããŒããããªãJSONå€åã§èšå®ãããå ŽåãæŒç®åã¯ããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
- çµã¿åããå¯èœãªä»ã®æŒç®åã宣èšããªããã°ãªããªããããã¯ãã»ã¯ã·ã§ã³6.1.2ããã³ã»ã¯ã·ã§ã³6.1.4ã§è¿°ã¹ããšãããåå¥ã® metadata ãã©ã¡ãŒã¿ããªã·ãŒã«ããããŒãžåŸã® metadata ãã©ã¡ãŒã¿ããªã·ãŒã«ãé©çšããããçµã¿åããã¯ç¡æ¡ä»¶ã§ãã£ãŠããããã2ã€ã®æŒç®åã®èšå®å€ãäžå®ã®æ¡ä»¶ãæºããããšãèŠæ±ããæ¡ä»¶ä»ãã§ãã£ãŠããããèš±ãããªãçµã¿åããã¯ãããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
- metadata ãã©ã¡ãŒã¿ã«é©çšãããé åºã宣èšããªããã°ãªããªããé åºã¯çµ¶å¯Ÿé åºããŸãã¯åœè©² metadata ãã©ã¡ãŒã¿ããªã·ãŒå ã®ä»ã®æŒç®åã«å¯Ÿããçžå¯Ÿé åºã§ãããå€ãæ€æ»ããæŒç®åã¯äžè¬ã«ãå€ã®å€æŽãè¡ãæŒç®åã®åŸã«é©çšããããšãæãŸããã
- Trust Chain å ã§è€æ°ã® Subordinate Statement ããåäžã®æŒç®åãçšããåäžã® Entity Type ã® metadata ãã©ã¡ãŒã¿ã«å¯Ÿããããªã·ãŒãæã€å Žåã«ãããåäžãŸãã¯ããå¶çŽçãªããªã·ãŒãçæããããã«æŒç®åã®å€ãããŒãžããããšãèš±ããã©ãããèš±ããªããã®æ¡ä»¶ãæå®ããªããã°ãªããªãããã®ãããªæŒç®åå€ããŒãžã®çµæã«ãããé åºã¯å®çŸ©ãããªããæŒç®åããã®ãããªããŒãžãèš±ããªãå ŽåãæŒç®åã¯ããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
æŒç®åã¯ãnull å€ãæã€ metadata ãã©ã¡ãŒã¿ãåºåããŠã¯ãªããªãã
JSONææ³ã«é©åããŠããŠãã[RFC8259] ã®ã»ã¯ã·ã§ã³4ããã³8ã«ãã JSON ã®çžäºéçšå¯èœãªå©çšã衚ããŠããªã metadata ãã©ã¡ãŒã¿ãããªã·ãŒã¯ãäºæž¬äžèœãªæåãåŒãèµ·ããåŸãç¹ã«æ³šæããããšã
6.1.3.1. Standard Operators
æ¬ä»æ§ã¯ã以äžã® metadata policy operator ãå®çŸ©ããïŒ
6.1.3.1.1. value
Name: value
Action: metadata ãã©ã¡ãŒã¿ã¯æŒç®åã®å€ã«èšå®ãããªããã°ãªããªããæŒç®åã®å€ã null ã®å Žåãmetadata ãã©ã¡ãŒã¿ã¯åé€ãããªããã°ãªããªãã
metadata ãã©ã¡ãŒã¿ã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒstring, number, boolean, array
æŒç®åã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒstring, number, boolean, array, null
metadata ãã©ã¡ãŒã¿ããªã·ãŒå ã®ä»ã®æŒç®åãšã®çµã¿åããïŒ
addãšçµã¿åãããŠãããããã®å Žåãaddã®å€ã¯valueã®å€ã®éšåéåã§ãªããã°ãªããªããvalueã®å€ã null ã§ãªãå Žåãdefaultãšçµã¿åãããŠããããone_ofãšçµã¿åãããŠãããããã®å Žåãvalueã®å€ã¯one_ofã®å€ã®ããããã§ãªããã°ãªããªããsubset_ofãšçµã¿åãããŠãããããã®å Žåãvalueã®å€ã¯subset_ofã®å€ã®éšåéåã§ãªããã°ãªããªããsuperset_ofãšçµã¿åãããŠãããããã®å Žåãvalueã®å€ã¯superset_ofã®å€ã®äžäœéåã§ãªããã°ãªããªããessentialãšçµã¿åãããŠãããããã ãvalueã null ã§essentialã true ã®å Žåãé€ãã
Order of application: First
Operator value merge: æŒç®åå€ãçããå Žåã«ã®ã¿èš±å¯ããããçãããªãå Žåãããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
6.1.3.1.2. add
Name: add
Action: æ¬æŒç®åã®å€ïŒåæ°ãŸãã¯è€æ°ïŒã¯ metadata ãã©ã¡ãŒã¿ã«è¿œå ãããªããã°ãªããªããmetadata ãã©ã¡ãŒã¿ã«æ¢ã«ååšããå€ã¯å床远å ããŠã¯ãªããªããmetadata ãã©ã¡ãŒã¿ãååšããªãå ŽåãæŒç®åã®å€ã§åæåãããªããã°ãªããªãã
metadata ãã©ã¡ãŒã¿ã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒæååã®é åïŒarray of stringsïŒ
- ãµããŒãä»»æïŒãªããžã§ã¯ãã®é åïŒarray of objectsïŒãæ°å€ã®é åïŒarray of numbersïŒ
æŒç®åã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒæååã®é åïŒarray of stringsïŒ
- ãµããŒãä»»æïŒãªããžã§ã¯ãã®é åïŒarray of objectsïŒãæ°å€ã®é åïŒarray of numbersïŒ
metadata ãã©ã¡ãŒã¿ããªã·ãŒå ã®ä»ã®æŒç®åãšã®çµã¿åããïŒ
valueãšçµã¿åãããŠãããããã®å Žåãaddã®å€ã¯valueã®å€ã®éšåéåã§ãªããã°ãªããªããdefaultãšçµã¿åãããŠããããsubset_ofãšçµã¿åãããŠãããããã®å Žåãaddã®å€ã¯subset_ofã®å€ã®éšåéåã§ãªããã°ãªããªããsuperset_ofãšçµã¿åãããŠããããessentialãšçµã¿åãããŠãããã
Order of application: After value.
Operator value merge: 2ã€ã® add
æŒç®åã®å€ãããŒãžããçµæã¯ãå€ã®åéåã§ããã
6.1.3.1.3. default
Name: default
Action: metadata ãã©ã¡ãŒã¿ãååšããªãå ŽåãæŒç®åã®å€ã«èšå®ãããªããã°ãªããªããmetadata ãã©ã¡ãŒã¿ãååšããå Žåããã®æŒç®åã¯åœ±é¿ããªãã
metadata ãã©ã¡ãŒã¿ã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒstring, number, boolean, array
æŒç®åã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒstring, number, boolean, array
metadata ãã©ã¡ãŒã¿ããªã·ãŒå ã®ä»ã®æŒç®åãšã®çµã¿åããïŒ
valueã®å€ã null ã§ãªãå Žåãvalueãšçµã¿åãããŠããããaddãšçµã¿åãããŠããããone_ofãšçµã¿åãããŠããããsubset_ofãšçµã¿åãããŠããããsuperset_ofãšçµã¿åãããŠããããessentialãšçµã¿åãããŠãããã
Order of application: After add.
Operator value merge: æŒç®åå€ã¯çãããªããã°ãªããªããçãããªãå Žåãããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
6.1.3.1.4. one_of
Name: one_of
Action: metadata ãã©ã¡ãŒã¿ãååšããå Žåããã®å€ã¯æŒç®åå€ã«åæããããã®ã®ããããã§ãªããã°ãªããªãã
metadata ãã©ã¡ãŒã¿ã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒstring
- ãµããŒãä»»æïŒobject, number
æŒç®åã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒæååã®é åïŒarray of stringsïŒ
- ãµããŒãä»»æïŒãªããžã§ã¯ãã®é åïŒarray of objectsïŒãæ°å€ã®é åïŒarray of numbersïŒ
metadata ãã©ã¡ãŒã¿ããªã·ãŒå ã®ä»ã®æŒç®åãšã®çµã¿åããïŒ
valueãšçµã¿åãããŠãããããã®å Žåãvalueã®å€ã¯one_ofã®å€ã®ããããã§ãªããã°ãªããªããdefaultãšçµã¿åãããŠããããessentialãšçµã¿åãããŠãããã
Order of application: After default.
Operator value merge: 2ã€ã® one_of
æŒç®åã®å€ãããŒãžããçµæã¯ãæŒç®åå€ã®å
±ééšåã§ãããå
±ééšåã空ã®å Žåãããªã·ãŒãšã©ãŒã«ãªããªããã°ãªããªãã
6.1.3.1.5. subset_of
Name: subset_of
Action: metadata ãã©ã¡ãŒã¿ãååšããå ŽåãæŒç®åã®å€ãš metadata
ãã©ã¡ãŒã¿ã®å€ãšã®å
±ééšåã«èšå®ããããçµæãšããŠå
±ééšåã空é
å []
ã«ãªãåŸãç¹ã«æ³šæããããšããŸããsubset_of
ã¯å€ã®æ€æ»ã§ãããšåæã«ãå€ã®å€æŽã«ãªãåŸãç¹ã«ã泚æããããšã
metadata ãã©ã¡ãŒã¿ã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒæååã®é åïŒarray of stringsïŒ
- ãµããŒãä»»æïŒãªããžã§ã¯ãã®é åïŒarray of objectsïŒãæ°å€ã®é åïŒarray of numbersïŒ
æŒç®åã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒæååã®é åïŒarray of stringsïŒ
- ãµããŒãä»»æïŒãªããžã§ã¯ãã®é åïŒarray of objectsïŒãæ°å€ã®é åïŒarray of numbersïŒ
metadata ãã©ã¡ãŒã¿ããªã·ãŒå ã®ä»ã®æŒç®åãšã®çµã¿åããïŒ
valueãšçµã¿åãããŠãããããã®å Žåãvalueã®å€ã¯subset_ofã®å€ã®éšåéåã§ãªããã°ãªããªããaddãšçµã¿åãããŠãããããã®å Žåãaddã®å€ã¯subset_ofã®å€ã®éšåéåã§ãªããã°ãªããªããdefaultãšçµã¿åãããŠããããsuperset_ofãšçµã¿åãããŠãããããã®å Žåãsubset_ofã®å€ã¯superset_ofã®å€ã®äžäœéåã§ãªããã°ãªããªããessentialãšçµã¿åãããŠãããã
Order of application: After one_of.
Operator value merge: 2ã€ã® subset_of
æŒç®åã®å€ãããŒãžããçµæã¯ãæŒç®åå€ã®å
±ééšåã§ãããçµæãšããŠå
±ééšåã空é
å
[] ã«ãªãåŸãç¹ã«æ³šæããããšã
6.1.3.1.6. superset_of
Name: superset_of
Action: metadata ãã©ã¡ãŒã¿ãååšããå Žåããã®å€ã¯æŒç®åå€ã§æå®ãããå€ãå«ãŸãªããã°ãªããªããäžäœéåãæ°åŠçã«å®çŸ©ãããããçããå Žåãå«ãŸããã
metadata ãã©ã¡ãŒã¿ã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒæååã®é åïŒarray of stringsïŒ
- ãµããŒãä»»æïŒãªããžã§ã¯ãã®é åïŒarray of objectsïŒãæ°å€ã®é åïŒarray of numbersïŒ
æŒç®åã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒæååã®é åïŒarray of stringsïŒ
- ãµããŒãä»»æïŒãªããžã§ã¯ãã®é åïŒarray of objectsïŒãæ°å€ã®é åïŒarray of numbersïŒ
metadata ãã©ã¡ãŒã¿ããªã·ãŒå ã®ä»ã®æŒç®åãšã®çµã¿åããïŒ
valueãšçµã¿åãããŠãããããã®å Žåãvalueã®å€ã¯superset_ofã®å€ã®äžäœéåã§ãªããã°ãªããªããaddãšçµã¿åãããŠããããdefaultãšçµã¿åãããŠããããsubset_ofãšçµã¿åãããŠãããããã®å Žåãsubset_ofã®å€ã¯superset_ofã®å€ã®äžäœéåã§ãªããã°ãªããªããessentialãšçµã¿åãããŠãããã
Order of application: After subset_of.
Operator value merge: 2ã€ã® superset_of
æŒç®åã®å€ãããŒãžããçµæã¯ãæŒç®åå€ã®åéåã§ããã
6.1.3.1.7. essential
Name: essential
Action: æ¬æŒç®åã®å€ã true ã®å Žåãmetadata
ãã©ã¡ãŒã¿ã¯ååšããªããã°ãªããªããfalse ã®å Žåãmetadata
ãã©ã¡ãŒã¿ã¯ä»»æã§ãããååšããªããŠããããessential
æŒç®åãçç¥ãããå Žåãå€ã false ã® essential ãå«ããã®ãšç䟡ã§ããã
metadata ãã©ã¡ãŒã¿ã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒstring, number, boolean, object, array
æŒç®åã®JSONå€ïŒ
- ãµããŒãå¿ é ïŒboolean
metadata ãã©ã¡ãŒã¿ããªã·ãŒå ã®ä»ã®æŒç®åãšã®çµã¿åããïŒ
valueãšçµã¿åãããŠãããããã ãvalueã null ã§essentialã true ã®å Žåãé€ãã- ä»ã®ä»»æã®æŒç®åãšçµã¿åãããŠãããã
Order of application: Last
Operator value merge: 2ã€ã® essential
æŒç®åã®å€ãããŒãžããçµæã¯ãè«çåïŒORïŒã§ããã
6.1.3.1.8. Notes on Operators
ãéåãçãããããšãèŠæ±ãã metadata ãã©ã¡ãŒã¿ããªã·ãŒã¯ãsubset_of ãš
superset_of ã®æŒç®åããåäžã®é
åå€ã§çµã¿åãããããšã«ãã衚çŸã§ããã
äžéšã®JSONã©ã€ãã©ãªã¯JSONãªããžã§ã¯ãã®æ¯èŒã«åé¡ãæ±ããå¯èœæ§ãããããã®ãããJSONãªããžã§ã¯ãã§ãã
metadata å€ã«å¯Ÿã㊠metadata policy ãé©çšãããµããŒããå¿
é ãšãªãã®ã¯
essential æŒç®åã®ã¿ã§ãããessential
ã¯å€ã®æ¯èŒãå¿
èŠãšããªããå€ã®æ¯èŒãå¿
èŠãšãªã
addãone_ofãsubset_ofãsuperset_ofïŒããããJSONé
åã«äœçšããïŒã«ã€ããŠã¯ãJSONãªããžã§ã¯ãã®é
åã«å¯ŸãããµããŒãã¯
OPTIONAL ã§ããããŸããvalue ãš default
ã«ã€ããŠããå€ããã³ããã©ã«ãã®ããŒãžã«ã¯æŒç®åå€ãšæ¢åå€ã®æ¯èŒãå¿
èŠãšãªããããJSONãªããžã§ã¯ãã«å¯ŸãããµããŒãã¯
OPTIONAL ã§ããã
[RFC7591] ã§å®çŸ©ããã OAuth 2.0 client ã® metadata ãã©ã¡ãŒã¿ scope
ã¯ãã¹ããŒã¹åºåãã®æååå€ã®äžŠã³ã衚ãæååãšããŠè¡šçŸãããããããªã·ãŒæŒç®åïŒdefaultãsubset_ofãsuperset_of
ãªã©ïŒã«ãã£ãŠã¯æååé
åãšããŠæ±ããåŠçãããã¹ãã§ãããçµæãšããŠåŸããã
scope metadata ãã©ã¡ãŒã¿ã¯ãåã
ã® scope
å€ãã¹ããŒã¹ã§åºåã£ãæååã§ãããå«ãŸãã scope å€ã¯ãscope
ãã©ã¡ãŒã¿ã«å¯Ÿã㊠metadata æŒç®åãé©çšããŠåŸãããå€é
åããåãããã
以äžã®è¡šã¯ãessential ãš subset_of
ã®ããªã·ãŒæŒç®åã®çµã¿åããããå
¥åãšãªã metadata
ãã©ã¡ãŒã¿å€ã®éãã«ããã©ã®ãããªåºåãçæãããã瀺ã察å¿è¡šã§ãããæåŸã®è¡ã«ç€ºããšãããmetadata
ãã©ã¡ãŒã¿ãååšããããã€ä»»æïŒvoluntaryïŒãšæå®ãããŠããå Žåã«ã¯ subset_of
ã®æ€æ»ã¯ã¹ããããããç¹ã«æ³šæããããšã
Table 1: Examples of Outputs with Combinations of essential and subset_of for Different Inputs\ Policy Metadata Parameter\ essential subset_of input output\ true [a,b,c] [a,e] [a]\ false [a,b,c] [a,e] [a]\ true [a,b,c] [d,e] []\ false [a,b,c] [d,e] []\ true [a,b,c] no parameter error\ false [a,b,c] no parameter no parameter
6.1.3.2. Additional Operators
ãã§ãã¬ãŒã·ã§ã³ã¯ãã»ã¯ã·ã§ã³6.1.1ããã³ã»ã¯ã·ã§ã³6.1.3ã®ååã«é©åãã远å ã® metadata policy operator ãæå®ããŠäœ¿çšããŠãããã
远å ã®æŒç®åã¯ãã»ã¯ã·ã§ã³6.1.3.1ã§å®çŸ©ãããæšæºæŒç®åã«å¯Ÿããé©çšé åºã«é¢ããŠã次ã®èŠåãå®ããªããã°ãªããªãïŒ
- metadata ãã©ã¡ãŒã¿ã倿Žãã远å ã®æŒç®åã¯ãã»ã¯ã·ã§ã³6.1.3.1.1ã§èŠå®ããã
valueæŒç®åã®åŸã«é©çšãããªããã°ãªããªãã - metadata ãã©ã¡ãŒã¿ãæ€æ»ãã远å ã®æŒç®åã¯ãã»ã¯ã·ã§ã³6.1.3.1.7ã§èŠå®ããã
essentialæŒç®åã®åã«é©çšãããªããã°ãªããªãã
å®è£
ã¯ãçè§£ã§ããªã远å ã®æŒç®åãç¡èŠããªããã°ãªããªãããã ããæŒç®ååã
metadata_policy_crit Subordinate Statement Claim
ã«å«ãŸããŠããå Žåã¯äŸå€ã§ããããã®å Žåãåœè©²æŒç®åã¯çè§£ããåŠçãããªããã°ãªããªããmetadata_policy_crit
ã«åæããã远å ã®æŒç®åãçè§£ã§ããªãããŸãã¯åŠçã§ããªãå Žåãããã¯ããªã·ãŒãšã©ãŒãçæããªããã°ãªããããã®
Trust Chain ã¯ç¡å¹ãšèŠãªãããªããã°ãªããªãã
6.1.4. Enforcement
æ¬ã»ã¯ã·ã§ã³ã¯ãTrust Chain ã«å¯Ÿãã metadata policy ã®è§£æ±ºãããã³ Trust Chain ã® subject ã§ãã Federation Entity ã® metadata ãžã®é©çšã«ã€ããŠè¿°ã¹ãã
metadata policy ã®è§£æ±ºãŸãã¯é©çšã®éçšã§ããªã·ãŒãšã©ãŒããããã¯å¥ã®ãšã©ãŒã«ééããå Žåããã® Trust Chain ã¯ç¡å¹ãšèŠãªãããªããã°ãªããªãã
6.1.4.1. Resolution
Trust Chain ã® metadata policy ã¯ããã§ãŒã³ãæ§æãã Subordinate Statements
ã«å«ãŸããïŒååšããïŒmetadata_policy Claims ã®äžŠã³ã«ãã£ãŠæ±ºå®ãããã
解決ããã»ã¹ã¯ãŸããã»ã¯ã·ã§ã³6.1.3.1ã§å®çŸ©ãããæšæºæŒç®å以å€ã®ãã¹ãŠã®ããªã·ãŒæŒç®ååã®ãã¡ãcritical
ãšå®£èšãããŠãããã®ã®ååãåéããªããã°ãªããªããããã¯ãTrust Chain å
ã®å
Subordinate Statement ã«å¯ŸããŠãã»ã¯ã·ã§ã³3.3ã§è¿°ã¹ãä»»æã®
metadata_policy_crit Claim
ã確èªãããã®äžã«èŠã€ãã£ãæŒç®ååãåéããããšã§è¡ãã
解決ããã»ã¹ã¯ããã®åŸ Subordinate Statements ãå埩åŠçããããšã§é²ãããã®å埩åŠçã®é åºã¯æ¥µããŠéèŠã§ãããæãäžäœã® Entity ã«ãã£ãŠçºè¡ããã Subordinate Statement ããéå§ããTrust Chain subject ã® Immediate Superior ã«ãã£ãŠçºè¡ããã Subordinate Statement ã§çµãããªããã°ãªããªãã
å埩åŠçäžã®éèŠãªäœæ¥ã®1ã€ã metadata_policy
ã®æ€èšŒã§ãããæ€èšŒã¯ãããŒã¿æ§é ãé©åããŠããããšãããã³ãã¹ãŠã® metadata
ãã©ã¡ãŒã¿ããªã·ãŒããã»ã¯ã·ã§ã³6.1.3ã§è¿°ã¹ããšããããã€æŒç®åã®ä»æ§ã«åŸã£ãŠãèš±å¯ãããæŒç®åã®çµã¿åããã®ã¿ãå«ãããšãä¿èšŒããªããã°ãªããªãããŸããåéããã
metadata_policy_crit
ã®å€ã«å«ãŸããååãæã¡ãªãããçè§£ããã³åŠçã§ããªãæŒç®åã metadata_policy
ã«å«ãŸããŠããªãããšãä¿èšŒãããªããã°ãªããªããæ€èšŒã«å€±æããå Žåã¯ããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
åå埩ã¹ãããã§ãSubordinate Statement ã« metadata_policy Claim
ãååšãããã確èªããªããã°ãªããªããæåã«èŠã€ãã£ã metadata_policy
ã¯äžèšã®ãšããæ€èšŒããããã®åŸãçŸåšã® metadata policyïŒcurrent metadata
policyïŒãšãªãã
å埩ã®çµæã次ã®äžäœïŒsubordinateïŒã® metadata_policy Claim
ãåŸãããå Žåããããäžèšã®ãšããæ€èšŒããããã®åŸãçŸåšã® metadata policy
ã«ããŒãžãããªããã°ãªããªãã
ããŒãžã¯ãã»ã¯ã·ã§ã³6.1.2ã§è¿°ã¹ã metadata_policy
ããŒã¿æ§é ã®3éå±€ããããã§ãæäžäœããé ã«è¡ãããïŒ
- Entity Types ã«å¯Ÿãã metadata policiesã
- ãã Entity Type ã«å¯Ÿãã metadata ãã©ã¡ãŒã¿ã®ããªã·ãŒã
- ãã Entity Type ã«å¯Ÿãã metadata ãã©ã¡ãŒã¿ããªã·ãŒã®æŒç®åã
Entity Types ã«å¯Ÿãã metadata policies ã®éå±€ã§ã¯ãããŒãžã¯æ¬¡ã®ãšããé²ãïŒ
- 次ã®äžäœã®
metadata_policyClaim ããçŸåšã® metadata policy ã«æ¢ã«ååšãã Entity Type ã® metadata policy ãå«ãå Žåãããã¯æ¬¡ã®äžäœéå±€ïŒmetadata ãã©ã¡ãŒã¿ããªã·ãŒïŒã®èŠåã«åŸã£ãŠããŒãžãããªããã°ãªããªãã - 次ã®äžäœã®
metadata_policyClaim ã«ååšããçŸåšã® metadata policy ã«ã¯ååšããªã Entity Type ã® metadata policy ã¯ãçŸåšã® metadata policy ã«ã³ããŒãããªããã°ãªããªãã
metadata ãã©ã¡ãŒã¿ããªã·ãŒã®éå±€ã§ã¯ãããŒãžã¯æ¬¡ã®ãšããé²ãïŒ
- ãã metadata ãã©ã¡ãŒã¿ããªã·ãŒããçŸåšã® Entity Type ã® metadata policy ã«æ¢ã«ååšããå Žåãããã¯æ¬¡ã®äžäœéå±€ïŒmetadata ãã©ã¡ãŒã¿ããªã·ãŒã®æŒç®åïŒã®èŠåã«åŸã£ãŠããŒãžãããªããã°ãªããªããçµæãšããŠåŸããã metadata ãã©ã¡ãŒã¿ããªã·ãŒããã»ã¯ã·ã§ã³6.1.3ã§è¿°ã¹ããšããããã€æŒç®åã®ä»æ§ã«åŸã£ãŠãèš±å¯ãããªãçµã¿åãããå«ãå Žåãããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
- çŸåšã® Entity Type ã® metadata policy ã«ååšããªãäžäœã® metadata ãã©ã¡ãŒã¿ããªã·ãŒã¯ãçŸåšã®ãã®ã«ã³ããŒãããªããã°ãªããªãã
æŒç®åã®éå±€ã§ã¯ãããŒãžã¯æ¬¡ã®ãšããé²ãïŒ
- ããæŒç®åããçŸåšã® metadata ãã©ã¡ãŒã¿ããªã·ãŒã«æ¢ã«ååšããå Žåãäžäœã®æŒç®åã®å€ã¯ãã»ã¯ã·ã§ã³6.1.3ã§è¿°ã¹ããšããããã€æŒç®åã®ä»æ§ã«åŸã£ãŠããŒãžãããªããã°ãªããªããæŒç®åå€ããŒãžãèš±å¯ãããªãããŸãã¯ãã以å€ã®çç±ã§äžæåã§ããå Žåãããªã·ãŒãšã©ãŒãçæããªããã°ãªããªãã
- çŸåšã® metadata ãã©ã¡ãŒã¿ããªã·ãŒã«ååšããªãäžäœã®æŒç®åã¯ãçŸåšã®ãã®ã«ã³ããŒãããªããã°ãªããªãã
metadata_policy Claim ãæã€ Subordinate Statements
ããã以äžèŠã€ãããªãå ŽåãçŸåšã® metadata policy ã Trust Chain
ã«å¯ŸããŠè§£æ±ºãããïŒresolvedïŒmetadata policy ãšãªãã
6.1.4.2. Application
Trust Chain subject ã«ã€ããŠã® Subordinate Statement ã metadata Claim
ãå«ãå Žåãããã¯ãŸããã»ã¯ã·ã§ã³3.1ã® Claim
å®çŸ©ã§è¿°ã¹ããšããé©çšãããªããã°ãªããªãããã®åŸã«ã®ã¿ã解決ããã metadata
policy ã®é©çšã«é²ãããšãã§ããã
ã»ã¯ã·ã§ã³6.1.4.1ã§è¿°ã¹ãããã»ã¹ã«ãããTrust Chain å
ã« metadata_policy
Claim ãå«ã Subordinate Statements ãèŠã€ãããªãã£ãå ŽåãTrust Chain subject
ã® metadata ã¯ããã® Entity Configuration ã«èŠã€ãã metadata
ã«åçŽã«è§£æ±ºãããããã ããImmediate Superior ãæäŸãã metadata
ãã©ã¡ãŒã¿ã¯ããã«é©çšãããã
Trust Chain ã«å¯Ÿã㊠metadata policy ã解決ãããå Žåã察å¿ãã metadata ãã©ã¡ãŒã¿ããªã·ãŒãååšãããã¹ãŠã® Entity Type metadata ããã³ metadata ãã©ã¡ãŒã¿ã«ã€ããŠãå«ãŸããããªã·ãŒæŒç®åã¯ãã»ã¯ã·ã§ã³6.1.3ã§è¿°ã¹ããšããããã€æŒç®åã®ä»æ§ã«åŸã£ãŠé©çšãããªããã°ãªããªããæŒç®åã¯ãåæŒç®åã«æå®ããã絶察é åºãŸãã¯çžå¯Ÿé åºã«ãã£ãŠæ±ºå®ãããé çªã§ãmetadata ãã©ã¡ãŒã¿ã«é©çšãããªããã°ãªããªãã
metadata policies ã®é©çšã«ãã£ãŠäžæ£ããŸãã¯ãã®ä»ã®èª€ãããã Resolved Metadata ãçããå Žåããã® metadata ã¯ç ŽæããŠãããã®ãšèŠãªããã䜿çšããŠã¯ãªããªãã
Trust Chain subject ã¯ããã§ãã¬ãŒã·ã§ã³ã® metadata policies ãé©çšããçµæãšããŠåŸããã Resolved Metadata ããµããŒãã§ãããã€ããã«æºæ ã§ããããšãæ€èšŒãã責任ãè² ããäŸãã°ãçµæãšããŠåŸããã Resolved Metadata ãèŠæ±ããæå·ã¢ã«ãŽãªãºã ããµããŒããããŠããããšã®ç¢ºèªãããã«å«ãŸãåŸããåæ§ã«ãTrust Chain subject ã¯ãèªèº«ã® Entity Types ã«å¿ èŠãª metadata ãã©ã¡ãŒã¿ããã¹ãŠååšããããšãããã³ Resolved Metadata å ã® metadata å€ããã¹ãŠæå¹ã§ããããšãæ€èšŒããªããã°ãªããªããmetadata policies ã倿Žãããå ŽåãTrust Chain subjects ã¯ããµããŒãããã³æºæ ã«ã€ããŠåè©äŸ¡ãå¿ èŠã«ãªãå¯èœæ§ãããã
6.1.5. Metadata Policy Example
以äžã¯ãOpenID relying party ã«å¯Ÿãã Trust Chain ã® metadata policies ã解決ãé©çšããéèŠç¯çãªäŸã§ããã
ãŸãããã§ãã¬ãŒã·ã§ã³ã® Trust Anchor ãRPåãã«æã€ metadata_policy
ããéå§ããïŒ
"metadata_policy": {
"openid_relying_party": {
"grant_types": {
"default": [
"authorization_code"
],
"subset_of": [
"authorization_code",
"refresh_token"
],
"superset_of": [
"authorization_code"
]
},
"token_endpoint_auth_method": {
"one_of": [
"private_key_jwt",
"self_signed_tls_client_auth"
],
"essential": true
},
"token_endpoint_auth_signing_alg" : {
"one_of": [
"PS256",
"ES256"
]
},
"subject_type": {
"value": "pairwise"
},
"contacts": {
"add": [
"helpdesk@federation.example.org"
]
}
}
}
Figure 12: Example Metadata Policy of a Trust Anchor for RPs
次ã«ãIntermediate çµç¹ããäžäœã®RPåãã«æã€ metadata_policy ãšããã®
Immediate Subordinate ã®RPåãã«èšå®ãã metadata å€ã瀺ãïŒ
{
"metadata_policy": {
"openid_relying_party": {
"grant_types": {
"subset_of": [
"authorization_code"
]
},
"token_endpoint_auth_method": {
"one_of": [
"self_signed_tls_client_auth"
]
},
"contacts": {
"add": [
"helpdesk@org.example.org"
]
}
}
},
"metadata": {
"openid_relying_party": {
"sector_identifier_uri": "https://org.example.org/sector-ids.json",
"policy_uri": "https://org.example.org/policy.html"
}
}
}
Figure 13: Example Metadata Policy and Metadata Values of an Intermediate Entity for RPs
Intermediate Entity ã®äŸã®RP metadata policy ã Trust Anchor ã®RP metadata policy ã«ããŒãžãããšãTrust Chain ã«å¯ŸããŠæ¬¡ã®ããªã·ãŒãçæãããïŒ
{
"grant_types": {
"default": [
"authorization_code"
],
"superset_of": [
"authorization_code"
],
"subset_of": [
"authorization_code"
]
},
"token_endpoint_auth_method": {
"one_of": [
"self_signed_tls_client_auth"
],
"essential": true
},
"token_endpoint_auth_signing_alg": {
"one_of": [
"PS256",
"ES256"
]
},
"subject_type": {
"value": "pairwise"
},
"contacts": {
"add": [
"helpdesk@federation.example.org",
"helpdesk@org.example.org"
]
}
}
Figure 14: Example Merged Metadata Policy for RPs
Trust Chain ã® subject 㯠Leaf Entity ã§ãããEntity Configuration ã«ãããŠæ¬¡ã®RP metadata ãå ¬éããŠããïŒ
"metadata": {
"openid_relying_party": {
"redirect_uris": [
"https://rp.example.org/callback"
],
"response_types": [
"code"
],
"token_endpoint_auth_method": "self_signed_tls_client_auth",
"contacts": [
"rp_admins@rp.example.org"
]
}
}
Figure 15: Example Entity Configuration RP Metadata
Intermediate Entity ã Immediate Subordinates ã«å¯ŸããŠæå®ãã metadata å€ã Trust Chain subject ã® metadata ã«é©çšãããããã®åŸãããŒãžããã metadata policy ãé©çšãããæ¬¡ã®è§£æ±ºæžã¿ïŒresolvedïŒã®RP metadata ãåŸãããïŒ
{
"redirect_uris": [
"https://rp.example.org/callback"
],
"grant_types": [
"authorization_code"
],
"response_types": [
"code"
],
"token_endpoint_auth_method": "self_signed_tls_client_auth",
"subject_type": "pairwise",
"sector_identifier_uri": "https://org.example.org/sector-ids.json",
"policy_uri": "https://org.example.org/policy.html",
"contacts": [
"rp_admins@rp.example.org",
"helpdesk@federation.example.org",
"helpdesk@org.example.org"
]
}
Figure 16: The Resulting Resolved RP Metadata for the Trust Chain Subject
6.2. Constraints
Trust Anchors ãš Intermediate Entities ã¯ãèªèº«ã® Subordinates
ã«é©çšãããå¶çŽæ¡ä»¶ïŒconstraining
criteriaïŒãå®çŸ©ããŠãããããããã¯ãã»ã¯ã·ã§ã³3.3ã§è¿°ã¹ããšãããSubordinate
Statement ã® constraints Claim ã«è¡šçŸãããã
次ã®å¶çŽãã©ã¡ãŒã¿ãå®çŸ©ããïŒ
max_path_length\ OPTIONALãå¶çŽãèšå®ãã Entity ãš Trust Chain subject ã®éã«ååšã§ãã Intermediate Entities ã®æå€§æ°ãæå®ããæŽæ°ãnaming_constraints\ OPTIONALãSubordinate Entities ã® Entity Identifiers ã®URIã«å¯Ÿããå¶éãæå®ããJSONãªããžã§ã¯ããå¶éã¯ãèš±å¯ãããURIåã®éšåæšïŒpermittedïŒãšé€å€ãããURIåã®éšåæšïŒexcludedïŒã®èгç¹ã§å®çŸ©ããããallowed_entity_types\ OPTIONALãæååã® Entity Type Identifier ã®é åãEntity Type Identifiers ã¯ã»ã¯ã·ã§ã³5.1ã§å®çŸ©ãããããã®å¶çŽã¯ãSubordinate Entities ãæã€ããšãèš±ããã Entity Typesãã²ããŠã¯ metadata ãæå®ããã
远å ã®å¶çŽãã©ã¡ãŒã¿ãå®çŸ©ããŠäœ¿çšããŠããããçè§£ã§ããªãå Žåã¯ç¡èŠãããªããã°ãªããªãã
以äžã¯ãå¶çŽã»ããã®éèŠç¯çãªäŸã§ããïŒ
{
"max_path_length": 2,
"naming_constraints": {
"permitted": [
".example.com"
],
"excluded": [
"east.example.com"
]
},
"allowed_entity_types": [
"openid_provider",
"openid_relying_party"
]
}
Figure 17: Example Set of Constraints
Entity ã® Trust Chain ã解決ããéãå Subordinate Statement ã« constraints
Claim
ãååšããå Žåãããã¯ç¬ç«ã«é©çšãããªããã°ãªããªããå¶çŽã®æ€æ»ã®ããããã倱æããå Žåããã®
Trust Chain ã¯ç¡å¹ãšèŠãªãããªããã°ãªããªãã
6.2.1. Max Path Length
max_path_length å¶çŽã¯ãå¶çŽãèšå®ãã Trust Anchor ãŸã㯠Intermediate ãš
Trust Chain subject ã®éã«ååšã§ãã Intermediate Entities
ã®æå€§èš±å®¹æ°ãæå®ããã
max_path_length ã0ã§ããå¶çŽã¯ããã® Entity ãš Trust Chain subject ã®éã«
Intermediates ãååšããŠã¯ãªããªãããšã瀺ããmax_path_length
å¶çŽã¯ã0以äžã®å€ãæããªããã°ãªããªãã
max_path_length
å¶çŽãçç¥ããããšã¯ãæ¢ã«æå¹ãªå¶çŽä»¥å€ã«è¿œå ã®å¶çŽããªãããšãæå³ããã
次ã®4ã€ã® Entity Statements ãããªã Trust Chain ããããšä»®å®ããïŒ
- Leaf EntityïŒLEïŒã® Entity Configuration
- Intermediate 1ïŒI1ïŒãLEã«ã€ããŠçºè¡ãã Subordinate Statement
- Intermediate 2ïŒI2ïŒãI1ã«ã€ããŠçºè¡ãã Subordinate Statement
- Trust AnchorïŒTAïŒãI2ã«ã€ããŠçºè¡ãã Subordinate Statement
ãã®ãšããäŸãã°æ¬¡ã®å Žåã« Trust Chain ã¯å¶çŽãæºããïŒ
- TA ã 2 以äžã®
max_path_lengthãæå®ããã - TA ã
max_path_length=2ãæå®ããI2 ãmax_path_length=1ãæå®ããI1 ãmax_path_lengthå¶çŽãçç¥ããã - TA ãš I2 ã®ãããã
max_path_lengthå¶çŽãæå®ãããI1 ãmax_path_length=0ãèšå®ããã
äŸãã°æ¬¡ã®å Žåã« Trust Chain ã¯å¶çŽãæºãããªãïŒ
- TA ã
max_path_lengthã1ã«èšå®ããã
6.2.2. Naming Constraints
naming_constraints ã¡ã³ããŒã¯ãTrust Chain å
ã® Subordinate Entities ã® Entity
Identifiers ãé
眮ãããªããã°ãªããªãURIåå空éãæå®ããã
å¶éã¯URIåã®éšåæšã®èгç¹ã§å®çŸ©ãããnaming_constraints ã¡ã³ããŒå
ã®
permitted ããã³ïŒãŸã㯠excluded
ã¡ã³ããŒãçšãããåã¡ã³ããŒã«ã¯ãèš±å¯ããïŒé€å€ããååã®é
åãå«ãŸãããexcluded
ã®ãªã¹ãã«ããå¶éã«äžèŽããååã¯ãpermitted
ã«çŸããæ
å ±ã«é¢ä¿ãªãç¡å¹ã§ããã
æ¬ä»æ§ã¯ã[RFC5280]
ã®ã»ã¯ã·ã§ã³4.2.1.10ã§æå®ããããã¡ã€ã³åå¶çŽã®æ§æã䜿çšãããåã»ã¯ã·ã§ã³ã§è¿°ã¹ãããŠãããšããããã¡ã€ã³åå¶çŽã¯å®å
šä¿®é£Ÿãã¡ã€ã³åãšããŠæå®ãããªããã°ãªããããã¹ããŸãã¯ãã¡ã€ã³ãæå®ããŠããããäŸãšããŠ
"host.example.com" ããã³ ".example.com"
ãããããã¡ã€ã³åå¶çŽãããªãªãã§å§ãŸãå Žåã1ã€ä»¥äžã®ã©ãã«ãä»å ããŠå±éããŠããããããªãã¡ããã¡ã€ã³åå¶çŽ
".example.com" 㯠host.example.com 㚠my.host.example.com
ã®äž¡æ¹ã§æºããããããããããã¡ã€ã³åå¶çŽ ".example.com" 㯠"example.com"
ã§ã¯æºããããªãããã¡ã€ã³åå¶çŽãããªãªãã§å§ãŸããªãå Žåãããã¯ãã¹ããæå®ããã[RFC5280]
ãšåæ§ã«ããã¡ã€ã³åå¶çŽã¯URIã®ãã¹ãéšåã«é©çšãããã
6.2.3. Entity Type Constraints
allowed_entity_types å¶çŽã¯ãTrust Chain å
ã® Subordinate Entities ã® metadata
ã® Entity Types ãšããŠåãå
¥ãå¯èœãªãã®ãæå®ãããallowed_entity_types
å¶çŽããªãå Žåãä»»æã® Entity Type
ãèš±å¯ãããããšãæå³ãããã»ã¯ã·ã§ã³5.1.1ã§èŠå®ããã federation_entity
Entity Type Identifier ã¯åžžã«èš±å¯ãããå¶çŽã«å«ããŠã¯ãªããªããå¶çŽã空é
å []
ã®å Žåãfederation_entity Entity Type ã®ã¿ãèš±å¯ãããããšãæå³ããã
Trust Chain Resolution ã®éã« allowed_entity_types
å¶çŽãé©çšãããããallowed_entity_types å¶çŽã«åæãããŠããªããã¹ãŠã® Entity
Types ã¯ãsubject ã® Entity Configuration å
ã® metadata Claim
ããåé€ãããªããã°ãªããªããfederation_entity Entity Type
ã¯åé€ããŠã¯ãªããªããããã¯ãMetadata Policies ãé©çšããåã§ãããã〠direct
superior ã® Subordinate Statement ããã® Metadata
ãé©çšããåŸã«è¡ãããªããã°ãªããªãã
7. Trust Marks
ã»ã¯ã·ã§ã³1.2ã®å®çŸ©ã«ããã°ãTrust Marks ã¯ãèªå®æ©é¢ïŒaccreditation
authorityïŒãå®ããåºæºéåãžã®é©åã衚ãã¹ããŒãã¡ã³ãã§ãããæ¬ä»æ§ã§äœ¿çšããã
Trust Marks ã¯çœ²åä»ãJWTã§ãããEntity Statements ã¯ãã»ã¯ã·ã§ã³3.2ã®
trust_marks Claim å®çŸ©ã§è¿°ã¹ããšãããTrust Marks ãå«ãã§ãããã
Trust Marks ã¯ãTrust Mark Issuer
ãšåŒã°ãããã§ãã¬ãŒã·ã§ã³ã§èªå®ãããæš©åšã«ãã£ãŠçœ²åãããããã¹ãŠã® Trust
Mark Issuers ã¯ããã§ãã¬ãŒã·ã§ã³å
ã§ Entity
ãšããŠè¡šçŸãããªããã°ãªããªããTrust Mark Issuer
ããã§ãã¬ãŒã·ã§ã³ã«åãå
¥ããããŠããäºå®ã¯ãTrust Anchor ã® Entity
Configuration ã«ããã trust_mark_issuers Claim ã«ãã£ãŠè¡šçŸãããã
Trust Mark issuer ã Trust Marks ã«çœ²åããããã«çšããéµã¯ããã® Federation Entity Keys ã®éåã«å«ãŸããç§å¯éµã®ããããã§ãªããã°ãªããªãã
Trust Mark JWTs ã¯ã䜿çšãã眲åéµã® Key ID ãå€ãšãã kidïŒKey
IDïŒããããŒãã©ã¡ãŒã¿ãå«ãŸãªããã°ãªããªãã
ãã§ãã¬ãŒã·ã§ã³ã¯ãEntity ã«èªå·±çœ²åã® Trust Marks ãèš±å¯ããŠãããç¹ã«æ³šæããããšã
Trust Mark JWTs ã¯ã[RFC8725] ã®ã»ã¯ã·ã§ã³3.11ã«åŸããJWTéã®æ··åãé²ããã
typ ããããŒãã©ã¡ãŒã¿ãçšããŠæç€ºçã«åä»ããããªããã°ãªããªããtyp
ããããŒãã©ã¡ãŒã¿å€ã¯ã䜿çšããã trust framework ãåœè©²çš®å¥ã® Trust Mark
ã«å¯ŸããŠããå
·äœçãªã¡ãã£ã¢ã¿ã€ãå€ãå®çŸ©ããŠããå Žåãé€ããtrust-mark+jwt
ã§ãªããã°ãªããªããtyp ããããŒãã©ã¡ãŒã¿ãæããªãããŸãã¯èªèã§ããªã typ
å€ãæã€ Trust Marks ã¯æåŠãããªããã°ãªããªãã
7.1. Trust Mark Claims
Trust Mark ã«å«ãŸãã Claims ã¯æ¬¡ã®ãšããã§ããïŒ
iss\ REQUIREDãæååãTrust Mark ã® issuer ã® Entity Identifierãsub\ REQUIREDãæååããã® Trust Mark ãé©çšããã Entity ã® Entity Identifierãtrust_mark_type\ REQUIREDãtrust_mark_typeClaim ã¯ãTrust Marks ã«ãã㊠Trust Mark ã®åã®èå¥åãæäŸããããã«çšãããããTrust Mark ã®åèå¥åã¯ãè€æ°ã®ãã§ãã¬ãŒã·ã§ã³ã«ãŸããã£ãŠè¡çªèæ§ãæããªããã°ãªããªããèå¥åå€ã¯ãçºè¡ããããã§ãã¬ãŒã·ã§ã³ããŸãã¯ãããçºè¡ããã trust framework ãäžæã«èå¥ããURLãçšããŠæ§æããããšãæšå¥šããããããã¯ãç°ãªããã§ãã¬ãŒã·ã§ã³ã§çºè¡ããã Trust Marks ãèå¥åã®è¡çªãèµ·ããããšãé²ãããã«å¿ èŠã§ãããiat\ REQUIREDãæ°å€ããã® Trust Mark ãçºè¡ãããæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šããlogo_uri\ OPTIONALãæååãçºè¡ããã Trust Mark ã®ããŽãåç §ããURLããã®ãã£ãŒã«ãã®å€ã¯æå¹ãªç»åãã¡ã€ã«ãæããŠããªããã°ãªããªããexp\ OPTIONALãæ°å€ããã® Trust Mark ãæå¹ã§ãªããªãæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šããååšããªãå ŽåãTrust Mark ã¯å€±å¹ããªãããšãæå³ãããref\ OPTIONALãã»ã¯ã·ã§ã³13.5ã§å®çŸ©ãããrefïŒreferenceïŒClaim ã¯ãTrust Mark ã®çºè¡ã«é¢ãã人éãèªããæ å ±ãåç §ããURLãæäŸããããã« Trust Marks ã§çšãããããdelegation\ OPTIONALãã»ã¯ã·ã§ã³13.6ã§å®çŸ©ãããdelegationClaim ã¯ãç¹å®ã®èå¥åãæã€ Trust Marks ãçºè¡ããæš©å©ãå§ä»»ããããã«çšãããããå€ã¯ãã»ã¯ã·ã§ã³7.2.1ã§å®çŸ©ããã Trust Mark delegation JWT ã§ããã
äžèšã® Claims ãšäœµããŠã远å ã® Claims ãå®çŸ©ããŠäœ¿çšããŠãããã
7.2. Trust Mark Delegation
äœããã®çç±ã§ãTrust Mark ã®ææè ãã管çäžãŸãã¯æè¡äžã®èŠä»¶ã«ãã Trust Mark Issuer ãšäžèŽããªãå ŽåããããäŸãšããŠè»äž¡æ€æ»ãæãããè»äž¡æ€æ»ã¯å€ãã®åœã§åœå®¶ãŸãã¯å°æ¹æ¿åºã«ãã£ãŠçŸ©åä»ããããæç¶ã§ãããå®å šæ§ãæåºã¬ã¹ããŸãã¯ãã®äž¡æ¹ã«é¢ããèŠå¶ã«é©åããŠããããšã確èªããããã«è»äž¡ãæ€æ»ãããæ€æ»ã矩åä»ããæ©é¢ãæ€æ»ã宿œããããã§ã¯ãªãã代ããã«åæ¥äŒç€Ÿãæ€æ»ã宿œãããã®åŸã« Trust Mark ãçºè¡ããå Žåãããã
Trust Mark type ã®ææè
ã§ã¯ãªã Trust Mark Issuer ã«ãã£ãŠ Trust Mark
ãçºè¡ãããäºå®ã¯ãTrust Mark ã« delegation Claim
ãå«ããããšã«ãã£ãŠè¡šçŸãããããã®å€ã¯ãã»ã¯ã·ã§ã³7.2.1ã§å®çŸ©ããã Trust Mark
delegation JWT ã§ããã
Federation Operator ãããã Trust Mark type identifier ãæã€ Trust Marks
ããTrust Mark type identifier ã®ææè
ã§ã¯ãªã Trust Mark Issuers
ã«ãã£ãŠæ£åœã«ãçºè¡ããåŸãããšãç¥ã£ãŠããå Žåãææè
ããã³ Trust Mark type
identifier ã«é¢ããæ
å ±ã¯ãTrust Anchor ã® Entity Configuration ã«ããã
trust_mark_owners Claim ã«å«ããããªããã°ãªããªãã
7.2.1. Trust Mark Delegation JWT
Trust Mark Delegation JWT ã¯ãTrust Mark Owner ã«ãã£ãŠçºè¡ãããç¹å®ã®èå¥åãæã€ Trust Marks ã®æ£åœãªå§ä»»å issuer ãèå¥ãã眲åä»ãJWTã§ããã
Trust Mark delegation JWT ã¯ã[RFC8725]
ã®ã»ã¯ã·ã§ã³3.11ã«åŸããJWTéã®æ··åãé²ããããtyp ããããŒãã©ã¡ãŒã¿ã
trust-mark-delegation+jwt ã«èšå®ããŠæç€ºçã«åä»ããããªããã°ãªããªããtyp
ããããŒãã©ã¡ãŒã¿ãæããªãããŸãã¯ç°ãªã typ å€ãæã€ Trust Mark delegation
JWTs ã¯æåŠãããªããã°ãªããªãããã㯠Federation Entity Key ã§çœ²åãããã
Trust Mark delegation JWTs ã¯ã䜿çšãã眲åéµã® Key ID ãå€ãšãã kidïŒKey
IDïŒããããŒãã©ã¡ãŒã¿ãå«ãŸãªããã°ãªããªãã
Trust Mark delegation JWT ã«å«ãŸãã Claims ã¯æ¬¡ã®ãšããã§ããïŒ
iss\ REQUIREDãæååãTrust Mark ã®ææè ïŒownerïŒãsub\ REQUIREDãæååããã®å§ä»»ãé©çšããã Entityãtrust_mark_type\ REQUIREDãæååãTrust Mark ã®åã®èå¥åãiat\ REQUIREDãæ°å€ããã®å§ä»»ãçºè¡ãããæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šããexp\ OPTIONALãæ°å€ããã®å§ä»»ãæå¹ã§ãªããªãæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šããååšããªãå Žåãå§ä»»ã¯å€±å¹ããªãããšãæå³ãããref\ OPTIONALãæååãTrust Mark ã«é¢é£ãã人éãèªããæ å ±ãæãURLã
äžèšã® Claims ãšäœµããŠã远å ã® Claims ãå®çŸ©ããŠäœ¿çšããŠãããã
7.2.2. Validating a Trust Mark Delegation
Trust Mark Delegation ã®æ€èšŒãšã¯ãç¹å®ã®çœ²åä»ãJWTã§è¡šçŸããã Trust Mark Delegation ã®ã€ã³ã¹ã¿ã³ã¹ãæ€èšŒããããšãæå³ããã
以åŸããdelegationã㯠Trust Mark Delegation JWT ã®ç¥èšãšããŠçšããããã以äžã§åç §ããã Trust Anchor ã¯ãTrust Mark Issuer ã«å¯Ÿããä¿¡é Œç¢ºç«ã«ãããŠæåè£ã«äœ¿çšããã Trust Anchor ã§ããã
delegation ãæ€èšŒããããã以äžã®æ€èšŒæé ãå®è¡ããªããã°ãªããªãããããã®æ€èšŒã®ããããã倱æããå Žåãæ€èšŒããã»ã¹å šäœã倱æããdelegation ã¯ç¡å¹ãšèŠãªãããç¹ã«æ³šæããããšã
- delegation ã¯çœ²åä»ãJWTã§ãªããã°ãªããªãã
- delegation ã¯
trust-mark-delegation+jwtã®å€ãæã€typããããŒãæããªããã°ãªããªãã - delegation ã¯ãåãå
¥ãå¯èœãªJWS眲åã¢ã«ãŽãªãºã ã§ããå€ãæã€
algïŒalgorithmïŒããããŒãã©ã¡ãŒã¿ãæããªããã°ãªãããnone ã§ãã£ãŠã¯ãªããªãã - Trust Mark Issuer ã® Entity Identifier ã¯ãdelegation ã®
subã®å€ãšäžèŽããªããã°ãªããªãã - Trust Mark Owner ã® Entity Identifier ã¯ãdelegation ã®
issã®å€ãšäžèŽããªããã°ãªããªãã - çŸåšæå»ã¯ãdelegation ã®
iatïŒissued atïŒClaim ã衚ãæå»ããåŸã§ãªããã°ãªããªãïŒæèšã®ãããèæ ®ããŠå°ããªç¶äºãèªããããšãããïŒã - çŸåšæå»ã¯ãdelegation ã®
expïŒexpirationïŒClaim ã衚ãæå»ããåã§ãªããã°ãªããªãïŒæèšã®ãããèæ ®ããŠå°ããªç¶äºãèªããããšãããïŒã - delegation ã®
trust_mark_typeClaim ã®å€ã¯ãTrust Mark ã®trust_mark_typeClaim ã®å€ãšåäžã§ãªããã°ãªããªãã - delegation ã®çœ²åã¯ãããããŒãã©ã¡ãŒã¿
kidã®å€ã§èå¥ããã Trust Mark Owner ã®éµã®ãããããçšããŠæ€èšŒã§ããªããã°ãªããªããTrust Mark Owner ã®éµã¯ãTrust Anchor ã® Entity Configuration ã«ãããtrust_mark_ownersClaim ã§èŠã€ããããšãã§ããã
7.3. Validating a Trust Mark
Trust Mark ã®æ€èšŒãšã¯ãç¹å®ã®çœ²åä»ãJWTã§è¡šçŸããã Trust Mark ã®ã€ã³ã¹ã¿ã³ã¹ãæ€èšŒããããšãæå³ãããããã¯ãç¹å®çš®é¡ã® Trust Mark ãååšå¯èœãã©ãããæ€èšŒããããšã§ã¯ãªãã
Trust Mark Issuer ã«å¯Ÿããä¿¡é Œã¯ãtrust mark ã«å¯Ÿããä¿¡é Œããå ã«ç¢ºç«ããããTrust Mark Issuer ãä¿¡é Œã§ããªãå Žåããã® trust mark ãä¿¡é Œã§ããªãããããã£ãŠ Entity ã¯ã以äžã§å®çŸ©ãã Trust Mark ã®æ€èšŒããã»ã¹ãéå§ããåã«ãã»ã¯ã·ã§ã³10ã§å®çŸ©ãããæé ã«åŸã£ãŠ Trust Mark Issuer ã«å¯Ÿããä¿¡é Œã確ç«ããªããã°ãªããªãã
以åŸããinstanceã㯠Trust Mark instance ã®ç¥èšãšããŠçšããããã以äžã§åç §ããã Trust Anchor ã¯ãTrust Mark Issuer ã«å¯Ÿããä¿¡é Œç¢ºç«ã«ãããŠæåè£ã«äœ¿çšããã Trust Anchor ã§ããã
instance ãæ€èšŒããããã以äžã®æ€èšŒæé ãå®è¡ããªããã°ãªããªãããããã®æ€èšŒã®ããããã倱æããå Žåãæ€èšŒããã»ã¹å šäœã倱æããinstance ã¯ç¡å¹ãšèŠãªãããç¹ã«æ³šæããããšã
- instance ã¯çœ²åä»ãJWTã§ãªããã°ãªããªãã
- instance ã¯
trust-mark+jwtã®å€ãæã€typããããŒãæããªããã°ãªããªãã - instance ã¯ãåãå
¥ãå¯èœãªJWS眲åã¢ã«ãŽãªãºã ã§ããå€ãæã€
algïŒalgorithmïŒããããŒãã©ã¡ãŒã¿ãæããªããã°ãªãããnone ã§ãã£ãŠã¯ãªããªãã - instance ãå«ã Entity Configuration ãæã€ Entity ã® Entity Identifier
ã¯ãTrust Mark ã®
subClaim ã®å€ãšäžèŽããªããã°ãªããªãã - çŸåšæå»ã¯ã
iatïŒissued atïŒClaim ã衚ãæå»ããåŸã§ãªããã°ãªããªãïŒæèšã®ãããèæ ®ããŠå°ããªç¶äºãèªããããšãããïŒã - çŸåšæå»ã¯ã
expïŒexpirationïŒClaim ã衚ãæå»ããåã§ãªããã°ãªããªãïŒæèšã®ãããèæ ®ããŠå°ããªç¶äºãèªããããšãããïŒã - instance ã®çœ²åã¯ã
kidã®å€ã§èå¥ããã Trust Mark issuer ã®éµãçšããŠæ€èšŒã§ããªããã°ãªããªãã - instance ã®
trust_mark_typeã Trust Anchor ã® Entity Configuration ã«ãããtrust_mark_ownersClaim ã«çŸããå Žåãinstance ã¯delegationClaim ãå«ãŸãªããã°ãªããªãã - instance ã«
delegationClaim ãååšããå Žåããã® Claim ã®å€ã¯ã»ã¯ã·ã§ã³7.2.2ã«åŸã£ãŠæ€èšŒãããªããã°ãªããªãã
Trust Marks ã倱广å»ãªãã«çºè¡ãããå ŽåãTrust Mark Status endpoint ããã³ïŒãŸã㯠Trust Marked Entities Listing endpoint ãªã©ãããããæ€èšŒããããã®ä»çµã¿ãæäŸããããšãæšå¥šãããã
äžèšã® Trust Marks ã®æ€èšŒæé ã®ä»£æ¿ãšããŠãå®è£ ã¯ãã»ã¯ã·ã§ã³8.4ã§è¿°ã¹ããšãããTrust Mark Status endpoint ãçšã㊠Trust Mark ãæå¹ã§ããããªãã¢ã¯ãã£ãã§ããããšã確èªããŠãããã
7.4. Trust Mark Examples
Entity Configuration ã® JWT Claims Set ã«ããã trust_marks Claim
ã®éèŠç¯çãªäŸã¯ä»¥äžã®ãšããã§ããïŒ
{
"iss": "https://rp.example.it/spid/",
"sub": "https://rp.example.it/spid/",
"iat": 1516239022,
"exp": 1516298022,
"trust_marks": [
{
"trust_mark_type": "https://www.spid.gov.it/certification/rp",
"trust_mark": "eyJ0eXAiOiJ0cnVzdC1tYXJrK2p3dCIsImFsZyI6IlJTMjU2Iiwia2lkIjoia29
zR20yd3VaaDlER21OeEF0a3VPNDBwUGpwTDMtakNmMU4tcVBPLVllVSJ9.
eyJpc3MiOiJodHRwczovL3d3dy5hZ2lkLmdvdi5pdCIsInN1YiI6Imh0dHBzOi8
vcnAuZXhhbXBsZS5pdC9zcGlkIiwiaWF0IjoxNTc5NjIxMTYwLCJ0cnVzdF9tYX
JrX3R5cGUiOiJodHRwczovL3d3dy5zcGlkLmdvdi5pdC9jZXJ0aWZpY2F0aW9uL
3JwIiwibG9nb191cmkiOiJodHRwczovL3d3dy5hZ2lkLmdvdi5pdC90aGVtZXMv
Y3VzdG9tL2FnaWQvbG9nby5zdmciLCJyZWYiOiJodHRwczovL2RvY3MuaXRhbGl
hLml0L2RvY3Mvc3BpZC1jaWUtb2lkYy1kb2NzL2l0L3ZlcnNpb25lLWNvcnJlbn
RlLyJ9.
L_pSh1InEiFAcs3E-1HBM7fNZYwF5ru3UGA_8yc80dGS3sszfA_sbj4AoW_zAJW
QBdZpjxnHBBmybYXFrfZBcqxcedsrvUYrmbt1nPYxbUE54fRRoZK-sJmVqh1GzS
an5nOmkxuAtMinU8k_-aWnPWj83sYe2AzT2mMgkXiz8zhda3jZm8hoxZ4jR6B0Y
AvbMlq2pPWO5OWKdZhiFRMSprwh0GYluQkK0j1aLNMGXD3keMJd2zEoWX9D7w2f
XShAA48W3cNhuXyBVnCoum1K4IWK3s_fx4nIkp6W-V4jCBOpxp7Yo8LZ30o_xpE
OzGTIECGWVR86azOAlwVC8XSiAA"
}
],
"metadata": {
"openid_relying_party": {
"application_type": "web",
"client_registration_types": ["automatic"],
"client_name": "https://rp.example.it/spid/",
"contacts": [
"ops@rp.example.it"
]
}
}
}
Figure 18: Trust Mark in an Entity Configuration JWT Claims Set
åœã®å ¬çãµãŒãã¹ãããã¡ã€ã«ãžã®é©åã蚌æãããã®ãšããŠRPã«å¯ŸããŠçºè¡ãããããã³ãŒãæžã¿ Trust Mark payload ã®äŸïŒ
{
"trust_mark_type": "https://mushrooms.federation.example.com/openid_relying_party/public/",
"iss": "https://epigeo.tm-issuer.example.it",
"sub": "https://porcino.example.com/rp",
"iat": 1579621160,
"organization_name": "Porcino Mushrooms & Co.",
"policy_uri": "https://porcino.example.com/privacy_policy",
"tos_uri": "https://porcino.example.com/info_policy",
"service_documentation": "https://porcino.example.com/api/v1/get/services",
"ref": "https://porcino.example.com/documentation/manuale_operativo.pdf"
}
Figure 19: Trust Mark for a National Profile
æªæå¹ŽãŠãŒã¶ãŒã®ããŒã¿ç®¡çèŠåãžã®é©åã蚌æãããã®ãšããŠRPã«å¯ŸããŠçºè¡ãããããã³ãŒãæžã¿ Trust Mark payload ã®äŸïŒ
{
"trust_mark_type": "https://mushrooms.federation.example.com/openid_relying_party/private/under-age",
"iss": "https://trustissuer.pinarolo.example.it",
"sub": "https://vavuso.example.com/rp",
"iat": 1579621160,
"organization_name": "Pinarolo Suillus luteus",
"policy_uri": "https://vavuso.example.com/policy",
"tos_uri": "https://vavuso.example.com/tos"
}
Figure 20: Trust Mark Issued to an RP
2ã€ã®çµç¹ã® Entities ã®éã§ç· çµãããåæã蚌æããããã³ãŒãæžã¿ Trust Mark payload ã®äŸïŒ
{
"trust_mark_type": "https://mushrooms.federation.example.com/arrosto/agreements",
"iss": "https://agaricaceae.example.it",
"sub": "https://coppolino.example.com",
"iat": 1579621160,
"logo_uri": "https://coppolino.example.com/sgd-cmyk-150dpi-90mm.svg",
"organization_type": "public",
"id_code": "123456",
"email": "info@coppolino.example.com",
"organization_name#it": "Mazza di Tamburo",
"policy_uri#it": "https://coppolino.example.com/privacy_policy",
"tos_uri#it": "https://coppolino.example.com/info_policy",
"service_documentation": "https://coppolino.example.com/api/v1/get/services",
"ref": "https://agaricaceae.example.it/documentation/agaricaceae.pdf"
}
Figure 21: Trust Mark Attesting to an Agreement Between Entities
ã»ãã¥ãªãã£ãããã¡ã€ã«ãžã®é©åã䞻匵ããããã³ãŒãæžã¿ Trust Mark payload ã®äŸïŒ
{
"trust_mark_type": "https://mushrooms.federation.example.com/ottimo/commestibile",
"iss": "https://cantharellus.cibarius.example.org",
"sub": "https://gallinaccio.example.com/op",
"iat": 1579621160,
"logo_uri": "https://cantharellus.cibarius/static/images/cantharellus-cibarius.svg",
"ref": "https://cantharellus.cibarius/cantharellus/cibarius"
}
Figure 22: Trust Mark Asserting Conformance to a Security Profile
ãã³ãŒãæžã¿ã®èªå·±çœ²å Trust Mark ã®äŸïŒ
{
"trust_mark_type": "https://mushrooms.federation.example.com/trust-marks/self-signed",
"iss": "https://amanita.muscaria.example.com",
"sub": "https://amanita.muscaria.example.com",
"iat": 1579621160,
"logo_uri": "https://amanita.muscaria.example.com/img/amanita-mus.svg",
"ref": "https://amanita.muscaria.example.com/uploads/cookbook.zip"
}
Figure 23: Self-Signed Trust Mark
Trust Marks ã®ããã®ç¬¬äžè èªå®æ©é¢ã®äŸïŒ
{
"iss": "https://swamid.se",
"sub": "https://umu.se/op",
"iat": 1577833200,
"exp": 1609369200,
"trust_mark_type": "https://refeds.org/wp-content/uploads/2016/01/Sirtfi-1.0.pdf"
}
Figure 24: Third-Party Accreditation Authority for Trust Marks
7.5. Trust Mark Delegation Example
å¥ã®Entityã代衚ããŠTrust Marksãçºè¡ããEntityã«ãã£ãŠTrust Markãçºè¡ãããã±ãŒã¹ã®ãEntity Configuration ã® JWT Claims Set ã«ããã trust_marks Claim ã®éèŠç¯çãªäŸã§ãããTrust Markã®ææè ã§ã¯ãªã Trust Mark Issuer ã«ãã£ãŠ Trust Mark ãçºè¡ãããäºå®ã¯ãTrust Mark ã« delegation Claim ãå«ããããšã§è¡šçŸããããã®å€ã¯çœ²åä»ãJWTã§ããã
{
"delegation": "eyJ0eXAiOiJ0cnVzdC1tYXJrLWRlbGVnYXRpb24rand0IiwiYWxnIjoiUl
MyNTYiLCJraWQiOiJrb3NHbTJ3dVpoOURHbU54QXRrdU80MHBQanBMMy1qQ
2YxTi1xUE8tWWVVIn0.
eyJzdWIiOiJodHRwczovL3RtaS5leGFtcGxlLm9yZyIsInRydXN0X21hcmt
fdHlwZSI6Imh0dHBzOi8vcmVmZWRzLm9yZy9zaXJ0ZmkiLCJpc3MiOiJodH
RwczovL3RtX293bmVyLmV4YW1wbGUub3JnIiwiaWF0IjoxNzI1MTc2MzAyfQ.
ao0rWGpVjEgpNyFxsKawps8q71eYnp78TzRdY4P52
CT8QX6etXt-2L2Z1Vw5A6jx2mhjpPwWi_sOxfiOSA5TugJfN0Gbwj7teTzM
0IMciuasCWgnLrKyLZjS147ZE50I9e9P8Ot8UQwhmXcLiuwsbDxSdqM4pVp
75lfWnmzPH0L2pDZG5COFgIgSOAlK3TVMBOR8fziF-VmWNPzAfB0lSc-hjH
-7q66GyT43o3Exnm6DsoLxyB8bxG99BQltLxURDT90CzM6szGcF3OG64Rbe
0I4lT_LAOfvhlrRbT56eK4sJNCsbVbGnDBfFmyfB_HIeBMGP0L7T5JPMOUU
9bjIlA",
"iat": 1725176302,
"trust_mark_type": "https://refeds.org/sirtfi",
"sub": "https://entity.example.org",
"exp": 1727768302,
"iss": "https://tmi.example.org"
}
Figure 25: delegation ãçšãã Trust Mark ã®äŸãTrust Mark ã® JWT Claims Set ã®ã¿ã瀺ãã
äžèšã® "delegation" Claim ã«å«ãŸãã Trust Mark delegation JWT ã® JWS Header Parameters
{
"typ": "trust-mark-delegation+jwt",
"alg": "RS256",
"kid": "kosGm2wuZh9DGmNxAtkuO40pPjpL3-jCf1N-qPO-YeU"
}
Figure 26: Trust Mark delegation JWT ã® JWS Header Parameters
äžèšã® "delegation" Claim ã«å«ãŸãã Trust Mark delegation JWT ã® JWT Claims Set
{
"sub": "https://tmi.example.org",
"trust_mark_type": "https://refeds.org/sirtfi",
"iss": "https://tm_owner.example.org",
"iat": 1725176302
}
Figure 27: Trust Mark delegation JWT Claim Set
8. Federation Endpoints
Entity ã® federation endpoints ã¯ãã»ã¯ã·ã§ã³9ã§è¿°ã¹ã configuration response ããããŸãã¯ä»ã®ææ®µã§èŠã€ããããšãã§ããã
ãã¹ãŠã® federation endpoints ã«ã€ããŠãåœåã«æå®ããããã®ä»¥å€ã®è¿œå ã®ãªã¯ãšã¹ããã©ã¡ãŒã¿ãå®çŸ©ããŠäœ¿çšããŠããããçè§£ã§ããªãå Žåã¯ç¡èŠãããªããã°ãªããªãã
8.1. Fetching a Subordinate Statement
fetch endpoint ã¯ãTrust Chains ãçµã¿ç«ãŠãéã« Subordinate Statements ã1ã€ãã€åéããããã«çšãããããSubordinates ãæã€ Entity 㯠fetch endpoint ãå ¬éããªããã°ãªããªããEntity ã¯ãèªèº«ã® Immediate Subordinates ã«é¢ãã Subordinate Statements ã fetch endpoint çµç±ã§å ¬éããªããã°ãªããªãã
fetch endpoint ã®å Žæã¯ãã»ã¯ã·ã§ã³5.1.1ã§å®çŸ©ããã federation_fetch_endpoint ãã©ã¡ãŒã¿ãšããŠãEntity ã® federation_entity metadata ã«å ¬éãããããã® endpoint 㯠Trust Chains ã®æ§ç¯ããã³æ€èšŒã§äœ¿çšãããããããã®å Žæã¯ãSuperiors ããã® metadata ããã³ metadata policies ãé©çšã§ããããã«ãªãåã«å©çšå¯èœã§ãªããã°ãªããªãããããã£ãŠããã® endpoint 㯠Subordinate Statements ã§ã¯ãªããEntity Configuration metadata ã«çŽæ¥å ¬éãããªããã°ãªããªãã
Subordinate Statement ãååŸããã«ã¯ãåãåããå ã® Entity ã®èå¥åïŒissuerïŒãåœè©² Entity ã® fetch endpointããã㊠Subordinate Statement ã® subject ã® Entity Identifier ãç¥ãå¿ èŠããããissuer ã¯éåžžãåœè©² Subordinate Statement ã® subject ã® Immediate Superior ã§ããã
8.1.1. Fetch Subordinate Statement Request
client authentication ã䜿çšããªãå Žåããªã¯ãšã¹ãã¯ãapplication/x-www-form-urlencoded 圢åŒã§ãšã³ã³ãŒããããæ¬¡ã®ã¯ãšãªãã©ã¡ãŒã¿ãä»ã㊠fetch endpoint ãžéã GET ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããªãããªã¯ãšã¹ãã¯æå®ããã issuer ã® fetch endpoint ã«å¯ŸããŠè¡ãããã
sub\ REQUIREDãèŠæ±ããŠãã Subordinate Statement ã® subject ã® Entity Identifierã
client authentication ã䜿çšããå Žåããªã¯ãšã¹ã㯠POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããããã©ã¡ãŒã¿ã¯ POST ããã£ã§æž¡ãããªããã°ãªããªãã
以äžã¯ãedugain.org ãã https://openid.sunet.se ã«é¢ãã Subordinate Statement ãååŸãã HTTP GET ãªã¯ãšã¹ãã®éèŠç¯çãªäŸã§ããïŒ
GET /federation_fetch_endpoint?
sub=https%3A%2F%2Fopenid%2Esunet%2Ese HTTP/1.1
Host: edugain.org
Figure 28: Subordinate Statement ã® API Request
8.1.2. Fetch Subordinate Statement Response
æåã¬ã¹ãã³ã¹ã¯ãHTTP status code 200 ãš content type application/entity-statement+jwt ã䜿çšããã¬ã¹ãã³ã¹ã Entity Statement ãå«ãããšãæç¢ºã§ãªããã°ãªããªãããšã©ãŒã¬ã¹ãã³ã¹ã®å Žåãå 容ã¯JSONãªããžã§ã¯ãã§ãããcontent type 㯠application/json ã§ãªããã°ãªããªããfetch endpoint ãèŠæ±ããã sub ãã©ã¡ãŒã¿ã«å¯ŸããããŒã¿ãæäŸã§ããªãå Žåãnot_found ãšã©ãŒã³ãŒããè¿ãããšãæšå¥šããããsub ãã©ã¡ãŒã¿ãçºè¡å Entity ã® Entity Identifier ãåç §ããŠããå Žåãinvalid_request ãšã©ãŒã³ãŒããè¿ãããšãæšå¥šãããããšã©ãŒã¬ã¹ãã³ã¹ã«ã€ããŠã¯ã»ã¯ã·ã§ã³8.9ãåç §ããããšã
以äžã¯ãfetch ã¬ã¹ãã³ã¹ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããïŒ
{
"iss": "https://edugain.org",
"sub": "https://openid.sunet.se",
"exp": 1568397247,
"iat": 1568310847,
"source_endpoint": "https://edugain.org/federation_fetch_endpoint",
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "dEEtRjlzY3djcENuT01wOGxrZlkxb3RIQVJlMTY0...",
"kty": "RSA",
"n": "x97YKqc9Cs-DNtFrQ7_vhXoH9bwkDWW6En2jJ044yH..."
}
]
},
"metadata": {
"federation_entity": {
"organization_name": "SUNET"
}
},
"metadata_policy": {
"openid_provider": {
"subject_types_supported": {
"value": ["pairwise"]
},
"token_endpoint_auth_methods_supported": {
"default": ["private_key_jwt"],
"subset_of": ["private_key_jwt", "client_secret_jwt"],
"superset_of": ["private_key_jwt"]
}
}
}
}
Figure 29: Fetch Response JWT Claims Set
8.2. Subordinate Listings
listing endpoint ã¯ãTrust AnchorãIntermediateããŸã㯠Trust Mark Issuer ãšããŠåäœãã Federation Entities ã«ãã£ãŠå ¬éãããããã® endpoint ã¯ãTrust AnchorãIntermediateããŸã㯠Trust Mark Issuer ã Entity Statements ãçºè¡ãã察象ã§ãã Immediate Subordinates ãäžèЧåããã
Trust Mark Issuer ãšããŠã¯ãåœè©² endpoint ãå ¬éãã issuer ãåŸè¿°ã®ãšãã Trust Mark filtering ããµããŒãããå ŽåãTrust Marks ãçºè¡ããããã€çŸåšãæå¹ã§ãã Immediate Subordinates ãäžèЧåããŠãããã
ãããã®å Žåããçµæã«å«ãŸãããªã¹ãã¯éåžžã«å€§ãããªãåŸãã
list endpoint ã®å Žæã¯ãã»ã¯ã·ã§ã³5.1.1ã§å®çŸ©ããã federation_list_endpoint ãã©ã¡ãŒã¿ãšããŠãEntity ã® federation_entity metadata ã«å ¬éãããããã® endpoint 㯠Subordinate Statements ã§ã¯ãªããEntity Configuration metadata ã«çŽæ¥å ¬éãããªããã°ãªããªãã
以äžã®äŸã¯ãSubordinate listing endpoints ãéããŠçºèŠã»åéããããåäžãã§ãã¬ãŒã·ã§ã³ã«å±ãã Entities ã®ããªãŒïŒTrust AnchorãIntermediate EntitiesãLeaf Entities ãå«ãïŒã瀺ãïŒ
+----------------------+
| Trust Anchor |
+----------------------+
+---------------+ Subordinate Listing +--------------+
| +----------+-----------+ |
| | |
| | |
| | |
| | |
| | |
+------v-------+ +----------v-----------+ +------v-------+
| Leaf | | Intermediate | | Leaf |
+--------------+ +----------------------+ +--------------+
+----+ Subordinate Listing |
| +------------+---------+
| |
| |
| |
+----------v-----------+ |
| Intermediate | |
+----------------------+ |
| Subordinate Listing | |
+-+---------+----------+ |
| | |
| | |
+-------v--+ +v--------+ +--v------+
| Leaf | | Leaf | | Leaf |
+----------+ +---------+ +---------+
Figure 30: Subordinate Listing Endpoints ãéããŠåéããããã§ãã¬ãŒã·ã§ã³å ã® Entities ã®ããªãŒ
8.2.1. Subordinate Listing Request
client authentication ã䜿çšããªãå Žåããªã¯ãšã¹ãã¯ãapplication/x-www-form-urlencoded 圢åŒã§ãšã³ã³ãŒããããæ¬¡ã®ã¯ãšãªãã©ã¡ãŒã¿ãä»ã㊠list endpoint ãžéã GET ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããªãã
entity_type\ OPTIONALããã®ãã©ã¡ãŒã¿ã®å€ã¯ Entity Type Identifier ã§ãããã¬ã¹ãã³ããèªèº«ã® Immediate Subordinates ã® Entity Types ãç¥ã£ãŠããå Žåãçµæã¯ãæå®ããã Entity Type ãå«ããã®ã ããå«ãããã«ãã£ã«ã¿ãããªããã°ãªããªããè€æ°ã® entity_type ãã©ã¡ãŒã¿ãååšããå ŽåïŒäŸïŒentity_type=openid_provider&entity_type=openid_relying_partyïŒãçµæã¯æå®ããããã¹ãŠã® Entity Types ãå«ãããã«ãã£ã«ã¿ãããªããã°ãªããªããã¬ã¹ãã³ãããã®æ©èœããµããŒãããªãå ŽåãHTTP status code 400 ãš content type application/json ã䜿çšãããšã©ãŒã³ãŒã unsupported_parameter ãè¿ããªããã°ãªããªãã
trust_marked\ OPTIONALãBooleanãtrust_marked ãã©ã¡ãŒã¿ãååšããã〠true ã«èšå®ãããŠããå Žåãçµæã«ã¯ãå°ãªããšã1ã€ã® Trust Mark ãçºè¡ããããã€çŸåšãæå¹ã§ãã Immediate Subordinates ã®ã¿ãå«ãŸãããã¬ã¹ãã³ãããã®æ©èœããµããŒãããªãå ŽåãHTTP status code 400 ã䜿çšããcontent type ã application/json ã«èšå®ãããšã©ãŒã³ãŒã unsupported_parameter ãè¿ããªããã°ãªããªãã
trust_mark_type\ OPTIONALããã®ãã©ã¡ãŒã¿ã®å€ã¯ Trust Mark ã®åã®èå¥åã§ãããã¬ã¹ãã³ããæå®ããã Trust Mark type identifier ãæã€ Trust Marks ãçºè¡ããŠããå Žåãã¬ã¹ãã³ã¹ã®ãªã¹ãã¯ããã® Trust Mark type identifier ãçºè¡ããããã€çŸåšãæå¹ã§ãã Immediate Subordinates ã®ã¿ãå«ãããã«ãã£ã«ã¿ããããã¬ã¹ãã³ãããã®æ©èœããµããŒãããªãå ŽåãHTTP status code 400 ã䜿çšããcontent type ã application/json ã«èšå®ãããšã©ãŒã³ãŒã unsupported_parameter ãè¿ããªããã°ãªããªãã
intermediate\ OPTIONALãBooleanãintermediate ãã©ã¡ãŒã¿ãååšããã〠true ã«èšå®ãããŠããå Žåãã¬ã¹ãã³ããèªèº«ã® Immediate Subordinates ã Intermediates ãã©ãããç¥ã£ãŠãããªããçµæã¯ããã«å¿ããŠãã£ã«ã¿ãããªããã°ãªããªããã¬ã¹ãã³ãããã®æ©èœããµããŒãããªãå ŽåãHTTP status code 400 ãš content type application/json ã䜿çšãããšã©ãŒã³ãŒã unsupported_parameter ãè¿ããªããã°ãªããªãã
client authentication ã䜿çšããå Žåããªã¯ãšã¹ã㯠POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããããã©ã¡ãŒã¿ã¯ POST ããã£ã§æž¡ãããªããã°ãªããªãã
以äžã¯ãImmediate Subordinates ã®äžèЧãååŸãã HTTP GET ãªã¯ãšã¹ãã®éèŠç¯çãªäŸã§ããïŒ
GET /list HTTP/1.1
Host: openid.sunet.se
Figure 31: Subordinate Listing Request
8.2.2. Subordinate Listing Response
æåã¬ã¹ãã³ã¹ã¯ãHTTP status code 200 ãš content type application/json ã䜿çšããæ¢ç¥ã® Entity Identifiers ãå«ãJSONé åãå«ãŸãªããã°ãªããªãã
ãšã©ãŒã¬ã¹ãã³ã¹ã¯ã»ã¯ã·ã§ã³8.9ã§å®çŸ©ãããã
以äžã¯ãImmediate Subordinate Entities ãå«ãã¬ã¹ãã³ã¹ã®éèŠç¯çãªäŸã§ããïŒ
200 OK
Content-Type: application/json
[
"https://ntnu.andreas.labs.uninett.no/",
"https://blackboard.ntnu.no/openid/callback",
"https://serviceprovider.andreas.labs.uninett.no/application17"
]
Figure 32: Subordinate Listing Response
8.3. Resolve Entity
Entity 㯠resolve endpoint ã䜿çšããŠããã Entity ã® Resolved Metadataã䜿çšãã Trust Chainããã㊠Trust Marks ãååŸããŠããããresolver 㯠subject ã® Entity Configuration ãååŸããsubject ã® Entity Configuration ããéå§ããŠæå®ããã Trust Anchor ã® Entity Configuration ã§çµãã Trust Chain ãçµã¿ç«ãŠãTrust Chain ãæ€èšŒãããã®åŸ Trust Chain ã«ååšãããã¹ãŠã®ããªã·ãŒã subject ã® metadata ã«é©çšããã
resolver ã¯ããã§ãã¬ãŒã·ã§ã³å ã§èªèãããèå¥åãæã€ãååšãããã¹ãŠã® Trust Marks ãã¢ã¯ãã£ãã§ããããšãæ€èšŒããªããã°ãªããªããã¬ã¹ãã³ã¹ã»ããã«ã¯ãæ€èšŒæžã¿ã® Trust Marks ã®ã¿ãå«ãŸããªããã°ãªããªãã
resolve endpoint ã®å Žæã¯ãã»ã¯ã·ã§ã³5.1.1ã§å®çŸ©ããã federation_resolve_endpoint ãã©ã¡ãŒã¿ãšããŠãEntity ã® federation_entity metadata ã«å ¬éãããã
8.3.1. Resolve Request
client authentication ã䜿çšããªãå Žåããªã¯ãšã¹ãã¯ãapplication/x-www-form-urlencoded 圢åŒã§ãšã³ã³ãŒããããæ¬¡ã®ã¯ãšãªãã©ã¡ãŒã¿ãä»ã㊠resolve endpoint ãžéã GET ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããªãã
sub\ REQUIREDã解決æžã¿ããŒã¿ãèŠæ±ãã Entity ã® Entity Identifierã
trust_anchor\ REQUIREDãmetadata ã解決ããéã« resolve endpoint ã䜿çšããªããã°ãªããªã Trust Anchorãå€ã¯ Entity identifier ã§ããã
trust_anchor ãªã¯ãšã¹ããã©ã¡ãŒã¿ã¯è€æ°ååºçŸããŠãããããã®å Žå resolver ã¯ãæäŸããã Trust Anchor å€ã®ãããããçšããŠæåãã resolve ã¬ã¹ãã³ã¹ãè¿ããŠãããã
entity_type\ OPTIONALã解決察象ãšããç¹å®ã® Entity Typeãå€ã¯ã»ã¯ã·ã§ã³5.1ã§èŠå®ããã Entity Type Identifier ã§ããããã®ãã©ã¡ãŒã¿ãååšããªãå Žåããã¹ãŠã® Entity Types ãè¿ãããã
entity_type ãªã¯ãšã¹ããã©ã¡ãŒã¿ã¯è€æ°ååºçŸããŠãããããã®å Žåãentity_type ãã©ã¡ãŒã¿å€ã«å«ãŸãã Entity Type Identifier ãæã€å Entity Type ã®ããŒã¿ãè¿ãããã
client authentication ã䜿çšããå Žåããªã¯ãšã¹ã㯠POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããããã©ã¡ãŒã¿ã¯ POST ããã£ã§æž¡ãããªããã°ãªããªãã
以äžã¯ Resolve Request ã®éèŠç¯çãªäŸã§ããïŒ
GET /resolve?
sub=https%3A%2F%2Fop.example.it%2Fspid&
entity_type=openid_provider&
trust_anchor=https%3A%2F%2Fswamid.se HTTP/1.1
Host: openid.sunet.se
Figure 33: Example Resolve Request
8.3.2. Resolve Response
æåã¬ã¹ãã³ã¹ã¯ãHTTP status code 200 ãš content type application/resolve-response+jwt ã䜿çšããResolved Metadata ãšæ€èšŒæžã¿ Trust Marks ãå«ãŸãªããã°ãªããªãã
ã¬ã¹ãã³ã¹ã¯çœ²åä»ãJWTã§ããã[RFC8725] ã®ã»ã¯ã·ã§ã³3.11ã«åŸã£ãŠJWTéã®æ··åãé²ããããtyp ããããŒãã©ã¡ãŒã¿ã resolve-response+jwt ã«èšå®ããŠæç€ºçã«åä»ãããããtyp ããããŒãã©ã¡ãŒã¿ãæããªãããŸãã¯ç°ãªã typ å€ãæã€ Resolve responses ã¯æåŠãããªããã°ãªããªãããã㯠Federation Entity Key ã§çœ²åãããã
resolve response JWT ã¯ã䜿çšãã眲åéµã® Key ID ãå€ãšãã kidïŒKey IDïŒããããŒãã©ã¡ãŒã¿ãå«ãŸãªããã°ãªããªãã
resolve response JWT ã¯ãtrust_chain ãã©ã¡ãŒã¿ã«ãããŠãsubject ãã Trust Anchor ãŸã§ã® Trust Chain ãè¿ããªããã°ãªããªãã
resolve response ã¯ãŸããã»ã¯ã·ã§ã³4.3ã§èŠå®ããããšãããtrust_chain JWS header parameter ã«ãããŠãissuer ãã Trust Anchor ãŸã§ã® Trust Chain ãè¿ããŠãããããããååšããå ŽåãTrust Chain å ã® Trust Anchor ã¯ãé¢é£ãããªã¯ãšã¹ãã® trust_anchor ãã©ã¡ãŒã¿ã§èŠæ±ããã Trust Anchor ãšäžèŽããªããã°ãªããªãã
resolve response ã®äžã§èªèº«ã® Trust Chain ãæäŸãã issuer ã¯ãã¬ã¹ãã³ã¹ã® subject ãšåäžã®ãã§ãã¬ãŒã·ã§ã³ã®äžéšã§ããããšãæç¢ºã«ããããããã£ãŠãissuer ãš subject ã®åæ¹ã® Trust Chains ãå©çšã§ããã〠Federation Historical Keys endpoint ã Trust Anchor ã«ãã£ãŠæäŸãããå Žåãresolve response ã¯é·æçãªèšŒæãšãªããå°æ¥ Federation Keys ã倿ŽãããŠããåžžã«æ€èšŒã§ããã
ã¬ã¹ãã³ã¹ã¯ãèŠæ±å ãã»ã¯ã·ã§ã³8.8ã§è¿°ã¹ããšããèªèšŒãããŠããå Žåã«ã®ã¿ aud Claim ãå«ããããšãæãŸããããã®å Žåããã®å€ã¯èŠæ±å ã® Entity Identifier ã§ãªããã°ãªãããä»ã®å€ãå«ããŠã¯ãªããªãã
resolve response ã«å«ãŸãã Claims ã¯æ¬¡ã®ãšããã§ããïŒ
iss\ REQUIREDãæååãresolve response ã® issuer ã® Entity Identifierã
sub\ REQUIREDãæååãresolve response ã® subject ã® Entity Identifierã
iat\ REQUIREDãæ°å€ããã®è§£æ±ºçµæãçºè¡ãããæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãã
exp\ REQUIREDãæ°å€ããã®è§£æ±ºçµæãæå¹ã§ãªããªãæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šããresolve response ã®å ãšãªã£ã Trust Chain ã® exp å€ãããã³ã¬ã¹ãã³ã¹ã«å«ãŸããä»»æã® Trust Mark ã® exp å€ã®æå°å€ã§ãªããã°ãªããªãã
metadata\ REQUIREDãèŠæ±ãããåã«åŸã£ãã解決æžã¿ subject metadata ãå«ãJSONãªããžã§ã¯ããã»ã¯ã·ã§ã³3.1ã§å®çŸ©ããã metadata 圢åŒã§è¡šçŸãããã
trust_chain\ REQUIREDãTrust Chain ãæ§æãã Entity Statements ã®äžŠã³ãå«ãé åãsubject ããéå§ããéžæããã Trust Anchor ã§çµããã
trust_marks\ OPTIONALãåèŠçŽ ãã»ã¯ã·ã§ã³3.2ã§å®çŸ©ããã Trust Mark ã衚ããªããžã§ã¯ãã§ããé åãTrust Anchor ã«ãã£ãŠãã®çš®ã® Trust Marks ãçºè¡ããããšãä¿¡é ŒãããŠãã Trust Mark issuers ã«ãã£ãŠçºè¡ããããæå¹ãª Trust Marks ã®ã¿ã resolver response ã«çŸããŠããã
äžèšã® Claims ãšäœµããŠã远å ã® Claims ãå®çŸ©ããŠäœ¿çšããŠãããã
ãšã©ãŒã¬ã¹ãã³ã¹ã¯ã»ã¯ã·ã§ã³8.9ã§å®çŸ©ãããã
以äžã¯ resolve response ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããïŒ
{
"iss": "https://resolver.spid.gov.it/",
"sub": "https://op.example.it/spid/",
"iat": 1516239022,
"exp": 1516298022,
"metadata": {
"openid_provider": {
"contacts": ["legal@example.it", "technical@example.it"],
"logo_uri": "https://op.example.it/static/img/op-logo.svg",
"op_policy_uri": "https://op.example.it/en/about-the-website/legal-information",
"federation_registration_endpoint": "https://op.example.it/spid/fedreg",
"authorization_endpoint": "https://op.example.it/spid/authorization",
"token_endpoint": "https://op.example.it/spid/token",
"response_types_supported": ["code", "code id_token", "token"],
"grant_types_supported": [
"authorization_code",
"urn:ietf:params:oauth:grant-type:jwt-bearer"
],
"subject_types_supported": ["pairwise"],
"id_token_signing_alg_values_supported": ["RS256"],
"issuer": "https://op.example.it/spid",
"jwks": {
"keys": [
{
"kty": "RSA",
"use": "sig",
"n": "1Ta-sE ...",
"e": "AQAB",
"kid": "FANFS3YnC9tjiCaivhWLVUJ3AxwGGz_98uRFaqMEEs"
}
]
}
}
},
"trust_marks": [
{
"trust_mark_type": "https://www.spid.gov.it/certification/op/",
"trust_mark": "eyJ0eXAiOiJ0cnVzdC1tYXJrK2p3dCIsImFsZyI6IlJTMjU2Iiwia2lkIjoiOH
hzdUtXaVZmd1NnSG9mMVRlNE9VZGN5NHE3ZEpyS2ZGUmxPNXhoSElhMCJ9.
eyJpc3MiOiJodHRwczovL3d3dy5hZ2lkLmdvdi5pdCIsInN1YiI6Imh0dHBzOi
8vb3AuZXhhbXBsZS5pdC9zcGlkLyIsImlhdCI6MTU3OTYyMTE2MCwidHJ1c3Rf
bWFya190eXBlIjoiaHR0cHM6Ly93d3cuc3BpZC5nb3YuaXQvY2VydGlmaWNhdG
lvbi9vcC8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vd3d3LmFnaWQuZ292Lml0L3Ro
ZW1lcy9jdXN0b20vYWdpZC9sb2dvLnN2ZyIsInJlZiI6Imh0dHBzOi8vZG9jcy
5pdGFsaWEuaXQvaXRhbGlhL3NwaWQvc3BpZC1yZWdvbGUtdGVjbmljaGUtb2lk
Yy9pdC9zdGFiaWxlL2luZGV4Lmh0bWwifQ.
xyz-PDQ_..."
}
],
"trust_chain": [
"eyJhbGciOiJSUzI1NiIsImtpZCI6Ims1NEhRdERpYnlHY3M5WldWTWZ2aUhm ...",
"eyJhbGciOiJSUzI1NiIsImtpZCI6IkJYdmZybG5oQU11SFIwN2FqVW1BY0JS ...",
"eyJhbGciOiJSUzI1NiIsImtpZCI6IkJYdmZybG5oQU11SFIwN2FqVW1BY0JS ..."
]
}
Figure 34: Resolve Response JWT Claims Set
8.3.3. Trust Considerations
æ¬ä»æ§ã®åºæ¬çãªåæã¯ãEntity 㯠Trust Anchor ãšèªåèªèº«ã®èœå以å€ã«ã¯èª°ãçŽæ¥ä¿¡é Œããªãã¹ãã ãšããããšã§ããããã ããEntities ã¯ä»ã® Entities ã«å¯ŸããŠäžçš®ã®æšç§»çãªä¿¡é Œã確ç«ããŠããããäŸãã° Trust Anchor ã¯èªèº«ã® Immediate Subordinates ã誰ã§ããããè¿°ã¹ãEntities ã¯ããããä¿¡é Œããããšãéžãã§ããããããåœäºè ããå¥ã® Entity ã® resolve service ãçšããŠãã§ãã¬ãŒã·ã§ã³ããŒã¿ãååŸããå Žåããã®åœäºè ã¯ãæå·çã«ä¿è·ããã metadata ã®æ€èšŒãæ£ããè¡ããçæ£ãªçµæãæäŸããããšã«ã€ã㊠resolver ãä¿¡é ŒããŠããã
8.4. Trust Mark Status
ããã¯ãEntity ã«å¯ŸããŠçºè¡ããã Trust Mark Instance ãçŸåšãã¢ã¯ãã£ããã©ãããå€å®ã§ããããã«ãããåãåãã㯠Trust Mark Issuer ã«éãããªããã°ãªããªãã
Trust Mark Status endpoint ã®å Žæã¯ãã»ã¯ã·ã§ã³5.1.1ã§å®çŸ©ããã federation_trust_mark_status_endpoint ãã©ã¡ãŒã¿ãšããŠãEntity ã® federation_entity metadata ã«å ¬éãããããã® endpoint 㯠Subordinate Statements ã§ã¯ãªããEntity Configuration metadata ã«çŽæ¥å ¬éãããªããã°ãªããªãã
8.4.1. Trust Mark Status Request
ãªã¯ãšã¹ãã¯ãapplication/x-www-form-urlencoded 圢åŒã§ãšã³ã³ãŒããããæ¬¡ã®ãã©ã¡ãŒã¿ãä»ã㊠Trust Mark Status endpoint ã«éã POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããªãã
trust_mark\ REQUIREDãæ€èšŒå¯Ÿè±¡ã® Trust Markã
client authentication ã䜿çšããå Žåããªã¯ãšã¹ã㯠POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããããã©ã¡ãŒã¿ã¯ POST ããã£ã§æž¡ãããªããã°ãªããªãã
以äžã¯ Trust Mark Status request ã®éèŠç¯çãªäŸã§ããïŒ
POST /federation_trust_mark_status_endpoint HTTP/1.1
Host: op.example.org
Content-Type: application/x-www-form-urlencoded
trust_mark=eyJ0eXAiOiJ0cnVzdC1tYXJrK2p3dCIsImFsZyI6 ...
Figure 35: Trust Mark Status Request
8.4.2. Trust Mark Status Response
æåã¬ã¹ãã³ã¹ã¯ãHTTP status code 200 ãš content type application/trust-mark-status-response+jwt ã䜿çšããTrust Mark Status Response ã§ãã眲åä»ãJWTãå«ãŸãªããã°ãªããªãã
Trust Mark Status Response ã¯çœ²åä»ãJWTã§ããã[RFC8725] ã®ã»ã¯ã·ã§ã³3.11ã«åŸã£ãŠJWTéã®æ··åãé²ããããtyp ããããŒãã©ã¡ãŒã¿ã trust-mark-status-response+jwt ã«èšå®ããŠæç€ºçã«åä»ãããããtyp ããããŒãã©ã¡ãŒã¿ãæããªãããŸãã¯ç°ãªã typ å€ãæã€ Trust Mark Status Responses ã¯æåŠãããªããã°ãªããªãããã㯠Federation Entity Key ã§çœ²åãããã
Trust Mark Status Response JWT ã¯ã䜿çšãã眲åéµã® Key ID ãå€ãšãã kidïŒKey IDïŒããããŒãã©ã¡ãŒã¿ãå«ãŸãªããã°ãªããªãã
Trust Mark Status JWT ã® JWT Claims Set ã¯ã次㮠Claims ãå«ãJSONãªããžã§ã¯ãã§ããïŒ
iss\ REQUIREDãæååãTrust Mark Status JWT ã® issuer ã® Entity Identifierã
iat\ REQUIREDãæ°å€ããã® Trust Mark Status JWT ãçºè¡ãããæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãã
trust_mark\ REQUIREDãæååããã® status response ã察象ãšãã Trust Mark JWTã
status\ REQUIREDã倧æåå°æåãåºå¥ããæååã§ãTrust Mark ã®ã¹ããŒã¿ã¹ã瀺ããæ¬ä»æ§ãå®çŸ©ããå€ã¯æ¬¡ã®ãšããïŒ
active\ Trust Mark ã¯ã¢ã¯ãã£ãã§ããã
expired\ Trust Mark ã¯å€±å¹ããŠããã
revoked\ Trust Mark ã¯å€±å¹ïŒrevokedïŒããŠããã
invalid\ çœ²åæ€èšŒã«å€±æããããŸãã¯å¥ã®ãšã©ãŒãæ€åºãããã
äžèšã«å ããŠã远å ã® status å€ãå®çŸ©ããŠäœ¿çšããŠãããã\ äžèšã«å ããŠã远å ã® Trust Mark Status JWT Claims ãå®çŸ©ããŠäœ¿çšããŠãããã
以äžã¯ãstatus ã active ã®ã¬ã¹ãã³ã¹ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããïŒ
{
"iss": "https://www.agid.gov.it",
"trust_mark": "eyJ0eXAiOiJ0cnVzdC1tYXJrK2p3dCIsImFsZyI6IlJTMjU2Iiwia2
lkIjoia29zR20yd3VaaDlER21OeEF0a3VPNDBwUGpwTDMtakNmMU4tcVBPLVllVSJ9.
eyJpc3MiOiJodHRwczovL3d3dy5hZ2lkLmdvdi5pdCIsInN1YiI6Imh0dHBzOi8
vcnAuZXhhbXBsZS5pdC9zcGlkIiwiaWF0IjoxNTc5NjIxMTYwLCJ0cnVzdF9tYX
JrX3R5cGUiOiJodHRwczovL3d3dy5zcGlkLmdvdi5pdC9jZXJ0aWZpY2F0aW9uL
3JwIiwibG9nb191cmkiOiJodHRwczovL3d3dy5hZ2lkLmdvdi5pdC90aGVtZXMv
Y3VzdG9tL2FnaWQvbG9nby5zdmciLCJyZWYiOiJodHRwczovL2RvY3MuaXRhbGl
hLml0L2RvY3Mvc3BpZC1jaWUtb2lkYy1kb2NzL2l0L3ZlcnNpb25lLWNvcnJlbn
RlLyJ9.
L_pSh1InEiFAcs3E-1HBM7fNZYwF5ru3UGA_8yc80dGS3sszfA_sbj4AoW_zAJW
QBdZpjxnHBBmybYXFrfZBcqxcedsrvUYrmbt1nPYxbUE54fRRoZK-sJmVqh1GzS
an5nOmkxuAtMinU8k_-aWnPWj83sYe2AzT2mMgkXiz8zhda3jZm8hoxZ4jR6B0Y
AvbMlq2pPWO5OWKdZhiFRMSprwh0GYluQkK0j1aLNMGXD3keMJd2zEoWX9D7w2f
XShAA48W3cNhuXyBVnCoum1K4IWK3s_fx4nIkp6W-V4jCBOpxp7Yo8LZ30o_xpE
OzGTIECGWVR86azOAlwVC8XSiAA",
"iat": 1759897995,
"status": "active"
}
Figure 36: Active Trust Mark Status Response JWT Claims Set
以äžã¯ãstatus ã revoked ã®ã¬ã¹ãã³ã¹ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããïŒ
{
"iss": "https://www.agid.gov.it",
"trust_mark": "eyJ0eXAiOiJ0cnVzdC1tYXJrK2p3dCIsImFsZyI6IlJTMjU2Iiwia2
lkIjoia29zR20yd3VaaDlER21OeEF0a3VPNDBwUGpwTDMtakNmMU4tcVBPLVllVSJ9.
eyJpc3MiOiJodHRwczovL3d3dy5hZ2lkLmdvdi5pdCIsInN1YiI6Imh0dHBzOi8
vcnAuZXhhbXBsZS5pdC9zcGlkIiwiaWF0IjoxNTc5NjIxMTYwLCJ0cnVzdF9tYX
JrX3R5cGUiOiJodHRwczovL3d3dy5zcGlkLmdvdi5pdC9jZXJ0aWZpY2F0aW9uL
3JwIiwibG9nb191cmkiOiJodHRwczovL3d3dy5hZ2lkLmdvdi5pdC90aGVtZXMv
Y3VzdG9tL2FnaIWQvbG9nby5zdmciLCJyZWYiOiJodHRwczovL2RvY3MuaXRhbGl
hLml0L2RvY3Mvc3BpZC1jaWUtb2lkYy1kb2NzL2l0L3ZlcnNpb25lLWNvcnJlbn
RlLyJ9.
L_pSh1InEiFAcs3E-1HBM7fNZYwF5ru3UGA_8yc80dGS3sszfA_sbj4AoW_zAJW
QBdZpjxnHBBmybYXFrfZBcqxcedsrvUYrmbt1nPYxbUE54fRRoZK-sJmVqh1GzS
an5nOmkxuAtMinU8k_-aWnPWj83sYe2AzT2mMgkXiz8zhda3jZm8hoxZ4jR6B0Y
AvbMlq2pPWO5OWKdZhiFRMSprwh0GYluQkK0j1aLNMGXD3keMJd2zEoWX9D7w2f
XShAA48W3cNhuXyBVnCoum1K4IWK3s_fx4nIkp6W-V4jCBOpxp7Yo8LZ30o_xpE
OzGTIECGWVR86azOAlwVC8XSiAA",
"iat": 1759898057,
"status": "revoked"
}
Figure 37: Revoked Trust Mark Status Response JWT Claims Set
Trust Mark Status request ã«å¯Ÿãããšã©ãŒã¬ã¹ãã³ã¹ã¯ã»ã¯ã·ã§ã³8.9ã§å®çŸ©ãããã
Trust Mark Issuer ããæªç¥ã® Trust Markãããªãã¡èªåãçºè¡ããŠããªãããŸãã¯èªèããŠããªã Trust Mark ã®ã¹ããŒã¿ã¹ã«é¢ãããªã¯ãšã¹ããåãåã£ãå ŽåãHTTP status code 404ïŒNot foundïŒã§å¿çããªããã°ãªããªãã
8.5. Trust Marked Entities Listing
Trust Marked Entities Listing endpoint 㯠Trust Mark Issuers ã«ãã£ãŠå ¬éãããTrust Marks ãçºè¡ããããã€çŸåšãæå¹ã§ãããã¹ãŠã® Entities ãäžèЧåããã
Trust Marked Entities Listing endpoint ã®å Žæã¯ãã»ã¯ã·ã§ã³5.1.1ã§å®çŸ©ããã federation_trust_mark_list_endpoint ãã©ã¡ãŒã¿ãšããŠãEntity ã® federation_entity metadata ã«å ¬éãããã
8.5.1. Trust Marked Entities Listing Request
client authentication ã䜿çšããªãå Žåããªã¯ãšã¹ãã¯ãapplication/x-www-form-urlencoded 圢åŒã§ãšã³ã³ãŒããããæ¬¡ã®ã¯ãšãªãã©ã¡ãŒã¿ãä»ã㊠list endpoint ãžéã GET ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããªãã
trust_mark_type\ REQUIREDãTrust Mark ã®åã®èå¥åãã¬ã¹ãã³ããæå®ããã Trust Mark type identifier ãæã€ Trust Marks ãçºè¡ããŠããå Žåãã¬ã¹ãã³ã¹ã®ãªã¹ãã¯ããã® Trust Mark type identifier ãçºè¡ããããã€çŸåšãæå¹ã§ãã Entities ã®ã¿ãå«ãããã«ãã£ã«ã¿ãããã
sub\ OPTIONALãTrust Mark ãçºè¡ãããå ã® Entity ã® Entity Identifierãã¬ã¹ãã³ã¹ã§åŸããããªã¹ãã¯ããã®å€ã«äžèŽãã Entity ã®ã¿ãå«ãããã«ãã£ã«ã¿ãããªããã°ãªããªãã
client authentication ã䜿çšããå Žåããªã¯ãšã¹ã㯠POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããããã©ã¡ãŒã¿ã¯ POST ããã£ã§æž¡ãããªããã°ãªããªãã
以äžã¯ Trust Marked Entities ã®äžèЧãååŸãã HTTP GET ãªã¯ãšã¹ãã®éèŠç¯çãªäŸã§ããïŒ
GET /trust_marked_list?trust_mark_type=https%3A%2F%2Ffederation.example.org%2Fopenid_relying_party%2Fprivate%2Funder-age HTTP/1.1
Host: trust-mark-issuer.example.org
Figure 38: Trust Marked Entities Listing Request
8.5.2. Trust Marked Entities Listing Response
æåã¬ã¹ãã³ã¹ã¯ãHTTP status code 200 ãš content type application/json ã䜿çšããEntity Identifiers ãå«ãJSONé åãå«ãŸãªããã°ãªããªãã
ãšã©ãŒã¬ã¹ãã³ã¹ã¯ã»ã¯ã·ã§ã³8.9ã§å®çŸ©ãããã
以äžã¯ãTrust Marked Entities ãå«ãã¬ã¹ãã³ã¹ã®éèŠç¯çãªäŸã§ããïŒ
200 OK
Content-Type: application/json
[
"https://blackboard.ntnu.no/openid/rp",
"https://that-rp.example.org"
]
Figure 39: Trust Marked Entities Listing Response
8.6. Trust Mark Endpoint
Trust Mark endpoint 㯠Trust Mark Issuer ã«ãã£ãŠå ¬éãããsubjects ã« Trust Marks ãæäŸããã
Trust Mark endpoint ã®å Žæã¯ãã»ã¯ã·ã§ã³5.1.1ã§å®çŸ©ããã federation_trust_mark_endpoint ãã©ã¡ãŒã¿ãšããŠãEntity ã® federation_entity metadata ã«å ¬éãããã
8.6.1. Trust Mark Request
client authentication ã䜿çšããªãå Žåããªã¯ãšã¹ãã¯ãapplication/x-www-form-urlencoded 圢åŒã§ãšã³ã³ãŒããããæ¬¡ã®ã¯ãšãªãã©ã¡ãŒã¿ãä»ããŠéã GET ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããªãã
trust_mark_type\ REQUIREDãTrust Mark ã®åã®èå¥åã
sub\ REQUIREDãTrust Mark ãçºè¡ããã Entity ã® Entity Identifierã
client authentication ã䜿çšããå Žåããªã¯ãšã¹ã㯠POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããããã©ã¡ãŒã¿ã¯ POST ããã£ã§æž¡ãããªããã°ãªããªããTrust Mark endpoint ã¯ãsub ãã©ã¡ãŒã¿ã瀺ããšãã Trust Mark subject ã§ã¯ãªã clients ããã®èªèšŒæžã¿ãªã¯ãšã¹ããèš±å¯ããŠããããæ³å®ããããŠãŒã¹ã±ãŒã¹ã®äžäŸã¯ãFederation Entity ãå¥ã® Entity ã® Trust Mark ãååŸã§ããããã«ããããšã§ããã
以äžã¯ãç¹å®ã® Trust Mark type identifier ãš subject ãæå®ã㊠Trust Mark ãååŸãã HTTP ãªã¯ãšã¹ãã®éèŠç¯çãªäŸã§ããïŒ
GET /trust_mark?trust_mark_type=https%3A%2F%2Fwww.spid.gov.it%2Fcertification%2Frp&sub=https%3A%2F%2Frp.example.it%2Fspid HTTP/1.1
Host: tuber.cert.example.org
Figure 40: Trust Mark Request
8.6.2. Trust Mark Response
æåã¬ã¹ãã³ã¹ã¯ãHTTP status code 200 ãš content type application/trust-mark+jwt ã䜿çšããTrust Mark ãå«ãŸãªããã°ãªããªãã
æå®ããã Entity ãæå®ããã Trust Mark ãæããªãå Žåãã¬ã¹ãã³ã¹ã¯ãšã©ãŒã¬ã¹ãã³ã¹ãšãªããHTTP status code 404 ã䜿çšããªããã°ãªããªãã
以äžã¯ãæå®ããã Entity ã® Trust Mark ãå«ãã¬ã¹ãã³ã¹ã®éèŠç¯çãªäŸã§ããïŒè¡šç€ºã®éœåäžãå€ã®éäžã§æ¹è¡ããŠããã ãã§ããïŒïŒ
200 OK
Content-Type: application/trust-mark+jwt
eyJ0eXAiOiJ0cnVzdC1tYXJrK2p3dCIsImFsZyI6IlJTMjU2Iiwia2lkIjoia29zR20yd3Va
aDlER21OeEF0a3VPNDBwUGpwTDMtakNmMU4tcVBPLVllVSJ9.
eyJpc3MiOiJodHRwczovL3d3dy5hZ2lkLmdvdi5pdCIsInN1YiI6Imh0dHBzOi8vcnAuZXhh
bXBsZS5pdC9zcGlkIiwiaWF0IjoxNTc5NjIxMTYwLCJ0cnVzdF9tYXJrX3R5cGUiOiJodHRw
czovL3d3dy5zcGlkLmdvdi5pdC9jZXJ0aWZpY2F0aW9uL3JwIiwibG9nb191cmkiOiJodHRw
czovL3d3dy5hZ2lkLmdvdi5pdC90aGVtZXMvY3VzdG9tL2FnaWQvbG9nby5zdmciLCJyZWYi
OiJodHRwczovL2RvY3MuaXRhbGlhLml0L2RvY3Mvc3BpZC1jaWUtb2lkYy1kb2NzL2l0L3Zl
cnNpb25lLWNvcnJlbnRlLyJ9.
L_pSh1InEiFAcs3E-1HBM7fNZYwF5ru3UGA_8yc80dGS3sszfA_sbj4AoW_zAJWQBdZpjxnH
BBmybYXFrfZBcqxcedsrvUYrmbt1nPYxbUE54fRRoZK-sJmVqh1GzSan5nOmkxuAtMinU8k_
-aWnPWj83sYe2AzT2mMgkXiz8zhda3jZm8hoxZ4jR6B0YAvbMlq2pPWO5OWKdZhiFRMSprwh
0GYluQkK0j1aLNMGXD3keMJd2zEoWX9D7w2fXShAA48W3cNhuXyBVnCoum1K4IWK3s_fx4nI
kp6W-V4jCBOpxp7Yo8LZ30o_xpEOzGTIECGWVR86azOAlwVC8XSiAA
Figure 41: Trust Mark Response
8.7. Federation Historical Keys Endpoint
å Federation Entity ã¯ãã»ã¯ã·ã§ã³5.1.1ã§å®çŸ©ããã historical keys endpoint ã«ãéå»ã«äœ¿çšããŠãã Federation Entity Keys ãå ¬éããŠãããããã® endpoint ã®ç®çã¯ãéµããŒããŒã·ã§ã³åŸã«ãåœè©² Federation Entity ã眲åããã¹ããŒãã¡ã³ãã®åŠèªé²æ¢ïŒnon-repudiationïŒãæäŸãããããéå»ã«äœ¿çšãããéµã®äžèЧãæäŸããããšã§ããããã® endpoint ã¯ãŸããéµãåãäžããããçç±ããªãã³ã«éµã expired ã ã£ãã®ã revoked ã ã£ãã®ãïŒrevocation ã®çç±ãå«ãïŒãé瀺ããã
expired ãšãªã£ãéµãããã®åŸã« revoked ãšããŠè¿œå ã§ããŒã¯ãããå Žåãããç¹ã«æ³šæããããšãããã¯ãéµã®å€±å¹åŸã«çºèŠããã鵿Œããäºæ¡ã瀺ãããã§ããã
historical keys ã®å ¬éã¯ãéµãã»ãã¥ãªãã£äžã®çç±ã§ revoked ã«ãªããªãéããéµã®æå¹æéåŸã Trust Chains ãæ€èšŒå¯èœã§ãããä¿¡é Œå€æã®å ¥åãšããŠå©çšå¯èœã§ããç¶ããããšãä¿èšŒããã
8.7.1. Federation Historical Keys Request
client authentication ã䜿çšããªãå Žåããªã¯ãšã¹ã㯠federation historical keys endpoint ã«éã GET ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªããªãã
client authentication ã䜿çšããå Žåããªã¯ãšã¹ã㯠POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªãããclient authentication ã®ãã©ã¡ãŒã¿ã¯ POST ããã£ã§æž¡ãããªããã°ãªããªãã
以äžã¯ historical keys request ã®éèŠç¯çãªäŸã§ããïŒ
GET /federation_historical_keys HTTP/1.1
Host: trust-anchor.example.com
Figure 42: Federation Historical Keys Request
8.7.2. Federation Historical Keys Response
ã¬ã¹ãã³ã¹ã¯ historical keys ãå«ã眲åä»ã JWK Set ã§ããããã㯠Federation Entity Key ã§çœ²åãããã眲åä»ã JWK Set ã¯ãpayload ã« JWK Set [RFC7517] ãæã€çœ²åä»ãJWTã§ãããæåã¬ã¹ãã³ã¹ã¯ãHTTP status code 200 ãš content type application/jwk-set+jwt ã䜿çšããªããã°ãªããªãã
historical keys JWTs ã¯ã[RFC8725] ã®ã»ã¯ã·ã§ã³3.11ã«åŸã£ãŠJWTéã®æ··åãé²ããããtyp ããããŒãã©ã¡ãŒã¿ã jwk-set+jwt ã«èšå®ããŠæç€ºçã«åä»ãããããtyp ããããŒãã©ã¡ãŒã¿ãæããªãããŸãã¯ç°ãªã typ å€ãæã€ historical keys JWTs ã¯æåŠãããªããã°ãªããªãã
historical keys JWTs ã¯ã䜿çšãã眲åéµã® Key ID ãå€ãšãã kidïŒKey IDïŒããããŒãã©ã¡ãŒã¿ãå«ãŸãªããã°ãªããªãã
historical keys JWT ã«å«ãŸãã Claims ã¯æ¬¡ã®ãšããã§ããïŒ
iss\ REQUIREDãæååãEntity ã® Entity Identifierã
iat\ REQUIREDãæ°å€ããã® historical keys JWT ãçºè¡ãããæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãã
keys\ REQUIREDãJWK圢åŒã®çœ²åéµãå«ãJSONãªããžã§ã¯ãã®é åã
JWKs in the keys Claim use the following parameters:
kid\ REQUIREDãç¹å®ã®éµã«äžèŽãããããã«çšãããããã©ã¡ãŒã¿ãKey ID ã¯ãSHA-256 ããã·ã¥é¢æ°ãçšããéµã® JWK Thumbprint [RFC7638] ãšããããšãæšå¥šãããã
iat\ OPTIONALããã®éµãçºè¡ãããæå»ã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãã
exp\ REQUIREDãéµã®æå¹æéã[RFC7519] ã«åŸããSeconds Since the Epoch ã§è¡šãããã®æå»ä»¥éãéµã¯æå¹ãšèŠãªããŠã¯ãªããªãã
revoked\ OPTIONALã以äžã§å®çŸ©ããããšãããrevocation ã®ããããã£ãå«ãJSONãªããžã§ã¯ãïŒ
revoked_at\ REQUIREDãéµã revoked ãããããŸã㯠revoked ãšèŠãªãããªããã°ãªããªãæå»ã[RFC7519] ã«ããã iat Claim ã®æå»åœ¢åŒã§è¡šãã
reason\ OPTIONALãã»ã¯ã·ã§ã³8.7.3ã§å®çŸ©ããããšãããéµã® revocation çç±ãèå¥ããæååã
revoked ãªããžã§ã¯ãã®è¿œå ã¡ã³ããŒãå®çŸ©ããŠäœ¿çšããŠãããã
äžèšã® Claims ãšäœµããŠã远å ã® Claims ãå®çŸ©ããŠäœ¿çšããŠãããã
keys Claim å ã® JWKs 㯠nbf ãã©ã¡ãŒã¿ãå«ãã§ããããHistorical Keys ã®çšéã§ã¯ãiat ãš exp ã§éµã®çåæéã確ç«ããã®ã«ååã§ãããããnbf ã¯éåžžã¯äžèŠã§ãããããããçºè¡æç¹ã§çŽã¡ã«æå¹ã«ãªããªãéµãçºè¡ããããšãéžã¶å¯èœæ§ã®ãããããã¡ã€ã«ã®ããã«ãnbf ã¯ç»é²ãããŠããããã®å®çŸ©ã¯æ¬¡ã®ãšããã§ããïŒ
nbf\ OPTIONALãããããåã¯éµãæå¹ã§ãªãæå»ã[RFC7519] ã«ããã nbf Claim ã®æå»åœ¢åŒã§è¡šãã
以äžã¯ historical keys response ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããïŒ
{
"iss": "https://trust-anchor.federation.example.com",
"iat": 123972394272,
"keys": [
{
"kty": "RSA",
"n": "5s4qi ...",
"e": "AQAB",
"kid": "2HnoFS3YnC9tjiCaivhWLVUJ3AxwGGz_98uRFaqMEEs",
"iat": 123972394872,
"exp": 123974395972
},
{
"kty": "RSA",
"n": "ng5jr ...",
"e": "AQAB",
"kid": "8KnoFS3YnC9tjiCaivhWLVUJ3AxwGGz_98uRFaqMJJr",
"iat": 123972394872,
"exp": 123974394972,
"revoked": {
"revoked_at": 123972495172,
"reason": "compromised"
}
}
]
}
Figure 43: Federation Historical Keys Response JWT Claims Set
8.7.3. Federation Historical Keys Revocation Reasons
Federation Entities ã«ã¯ãFederation Entity Key ã® revocation çç±ã瀺ãéã«ãæå³ã®ãã reason å€ã䜿çšããããšãåŒ·ãæšå¥šããããunspecified å€ã䜿ã代ããã«ãreason ãçç¥ããŠãããã
以äžã« reason å€ã®å®çŸ©ã瀺ãã
次ã®è¡šã¯ Federation Entity Keys ã® revocation çç±ãå®çŸ©ããããããã®çç±ã¯ [RFC5280] ã®ã»ã¯ã·ã§ã³5.3.1ããçæ³ãåŸãŠããã
Table 2: Federation Entity Keys Revocation Reasons.\ Reason | Description\ unspecified | JWK ã®ã¹ããŒã¿ã¹å€æŽã«é¢ããäžè¬çããŸãã¯æªç¹å®ã®çç±ã\ compromised | ç§å¯éµãæŒãããããšèããããã\ superseded | JWK ã¯ãã¯ãã¢ã¯ãã£ãã§ã¯ãªãã
ãã§ãã¬ãŒã·ã§ã³ã¯ã䜿çšããŠãã trust ãŸã㯠security framework ã«å¿ããŠã远å ã®çç±ãæå®ããŠå©çšããŠãããã
8.7.4. Rationale for the Federation Historical Keys Endpoint
Federation Historical Keys endpoint ã¯ãFederation Entity Keys ããæå¹æéåããŸã㯠revocation ã«ãã倿Žãããå Žåã«ãéå»ã® Trust Chains ãæ€èšŒããåé¡ã解決ããã
Federation Historical Keys endpoint ã¯ãéå»ã« Entity ã䜿çšããå ¬ééµã®äžèЧãå ¬éããããããã®éµã¯ãéå»ã«äœæããã Trust Chains ãæ€èšŒããããã«å¿ èŠã§ããããšããã®ãããã®ãã㪠Trust Chains ã¯ããã¯ã Entity ã® Entity Configuration ã«ã¯å ¬éãããŠããªã Entity keys ã«ãã£ãŠäœæãããŠããå¯èœæ§ãããããã§ããã
Federation Historical Keys endpoint ã®ã¬ã¹ãã³ã¹ã¯ãexpired ããã³ revoked ããããã¹ãŠã® Entity keys ã蚌æãã眲åä»ãJWTãå«ãã
Trust Chain ã圢æãã Entity Statements ã«å«ãŸãã屿§ã«åºã¥ããLeaf Entities ã OpenID Connect (OIDC) ã®ãªã¯ãšã¹ãããã³ã¬ã¹ãã³ã¹ã®çœ²åæäœã«éå»ã«çšãããéãã§ãã¬ãŒã·ã§ã³ã®å ¬ééµãæ€èšŒã§ããå ŽåããããäŸãã°ãLeaf ã«å¯ŸããŠçºè¡ããã Entity Statement ã¯ãmetadata ãŸã㯠metadata_policy Claims ã«ãããŠãLeaf ã® Entity Types ã«é¢ãã jwks Claim ãå«ã¿åŸãã
ç°¡åãªäŸïŒæ¬¡ã® Trust Chain ã«ãããŠãFederation Intermediate ã¯ãLeaf ã«ã€ããŠçºè¡ãã Subordinate Statement ã®äžã§ãLeaf ã® OpenID Connect (OIDC) RP jwks ã蚌æãããçµæãšããŠãRequest Objects ã«å¯Ÿããéå»ã®çœ²åããRPãšããŠLeafãçºè¡ããä»ã®çœ²åä»ãJWTãæ€èšŒããããã«å¿ èŠãªãLeaf ã® OpenID Connect (OIDC) RP JWK Set ãå«ã Trust Chain ãåŸãããããã®äŸã® Trust Chain ã¯æ¬¡ãå«ãïŒ
- RPãå ¬éããRPã«é¢ãã Entity Configuration
- Organization A ãå ¬éããRPã«é¢ãã Subordinate StatementïŒmetadata ãŸã㯠metadata_policy ã« jwks Claim ãå«ã¿ãLeaf ã® OpenID Connect (OIDC) RP jwks ã蚌æããïŒ
- Federation F ãå ¬éãã Organization A ã«é¢ãã Subordinate Statement
8.8. Client Authentication at Federation Endpoints
ããã©ã«ãã§ã¯ããããã® federation endpoints ã«ãããŠã client authentication ã¯äœ¿çšãããªãããã§ãã¬ãŒã·ã§ã³ã¯ãç¹å®ã® federation endpoints ã«ãã㊠client authentication ã OPTIONALãREQUIREDããããŠïŒãŸãã¯çŠæ¢ïŒnot allowedïŒãšããããšãéžã¹ãã
client authentication ããµããŒããããå Žåãfederation endpoints ã«å¯Ÿããããã©ã«ãã® client authentication method 㯠private_key_jwt ã§ããããã® client authentication method 㯠OpenID Connect Core 1.0 [OpenID.Core] ã®ã»ã¯ã·ã§ã³9ã§è¿°ã¹ãããŠãããclient authentication JWT 㯠Federation Entity Key ã§çœ²åãããªããã°ãªããªããJWT ã® audience ã¯ãèªèšŒå ãšãªã federation endpoint ãæã€ Entity ã® Entity Identifier ã§ãªããã°ãªããªããendpoint ã¯ãèªèº«ã® Entity Identifier 以å€ã® audience å€ãå«ãJWTãåãå ¥ããŠã¯ãªããªããclient authentication ã䜿çšããå Žåããªã¯ãšã¹ã㯠POST ã¡ãœããã® HTTP ãªã¯ãšã¹ãã§ãªããã°ãªãããclient authentication ãš endpoint request ã®ãã©ã¡ãŒã¿ã¯ POST ããã£ã§æž¡ãããªããã°ãªããªãããã§ãã¬ãŒã·ã§ã³ã¯ãä»ã® client authentication methods ã䜿çšããããšãéžãã§ãããã
8.8.1. Client Authentication Metadata for Federation Endpoints
client authentication ããµããŒãããä»ã® OAuth ããã³ OpenID endpoints ãšåæ§ã«ãæ¬ä»æ§ã¯ãå endpoint ãã©ã® client authentication methods ããµããŒããããã瀺ã metadata parameters ãå®çŸ©ããããããã¯äž»ãšããŠãOpenID Connect Discovery 1.0 [OpenID.Discovery] ã®ã»ã¯ã·ã§ã³3ã§å®çŸ©ããã token_endpoint_auth_methods_supported metadata å€ã«å¯Ÿå¿ããã
å ·äœçã«ã¯ãã»ã¯ã·ã§ã³5.1.1ã§å®çŸ©ãããå federation endpoints ã«ã€ããŠã*_auth_methods ãšããååã®ãã©ã¡ãŒã¿ãå®çŸ©ãããããã§ * 㯠federation endpoints ã®åç§°ïŒfederation_fetch_endpointãfederation_list_endpointã...ãfederation_historical_keys_endpointïŒã衚ãã
*_auth_methods metadata parameters ã¯ãããã endpoints ããµããŒããã client authentication methods ãåæãããããã¯ãtoken_endpoint_auth_methods_supported ã Token Endpoint ã«å¯ŸããŠè¡ãã®ãšåæ§ã§ãããããã«ãå€ none ã¯ããã® endpoint ã§ client authentication ãäžèŠã§ããããšã瀺ãããã«çšããŠãããã
äŸãã°ã次㮠metadata 宣èšã¯ãprivate_key_jwt ã§èªèšŒããããªã¯ãšã¹ãã federation_trust_mark_endpoint ã«ãã㊠REQUIRED ã§ããããšã瀺ãïŒ
"federation_trust_mark_endpoint_auth_methods": ["private_key_jwt"]
Figure 44: client authentication ã endpoint ã§ REQUIRED ã§ããããšã®å®£èš
çç¥ãããå Žåãããã methods ã®ããã©ã«ãå€ã¯ ["none"] ã§ãããèªèšŒãããŠããªããªã¯ãšã¹ãã®ã¿ãåãå ¥ããããããšã瀺ãã
endpoint_auth_signing_alg_values_supported metadata parameter ã¯ãããã endpoints ããµããŒããã client authentication ã®çœ²åã¢ã«ãŽãªãºã ãåæãããããã¯ãtoken_endpoint_auth_signing_alg_values_supported ã Token Endpoint ã«å¯ŸããŠè¡ãã®ãšåæ§ã§ããã
8.9. Error Responses
èŠæ±ãäžæ£ãªåœ¢åŒã§ããããŸãã¯èŠæ±ã®åŠçäžã«ãšã©ãŒãçºçããå Žåãã¬ã¹ãã³ã¹ããã£ã¯
content type application/json ã® JSON
ãªããžã§ã¯ãã§ããããšãæãŸããïŒSHOULDïŒã[RFC6749]
ã«åŸããæ¬¡ã®æšæºåããããšã©ãŒåœ¢åŒã䜿çšããããšãæãŸããïŒSHOULDïŒã
error\ å¿ é ïŒREQUIREDïŒãIANA ã® "OAuth Extensions Error Registry" [IANA.OAuth.Parameters] ã«ç»é²ãããŠãããšã©ãŒã³ãŒãã䜿çšããŠãããïŒMAYïŒãæ¬ä»æ§ã¯ããã«ã次ã®ãšã©ãŒã³ãŒããå®çŸ©ããã
- invalid_request\ èŠæ±ãäžå®å šã§ããããŸãã¯çŸè¡ã®ä»æ§ã«æºæ ããŠããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠400ïŒBad RequestïŒã§ããããšãæãŸããïŒSHOULDïŒã
- invalid_client\ Client ãèªå¯ã§ããªãããŸãã¯ãã§ãã¬ãŒã·ã§ã³ã®æå¹ãªåå è ã§ã¯ãªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠401ïŒUnauthorizedïŒã§ããããšãæãŸããïŒSHOULDïŒã
- invalid_issuer\ endpoint ã¯èŠæ±ããã issuer ãæäŸã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠404ïŒNot FoundïŒã§ããããšãæãŸããïŒSHOULDïŒã
- invalid_subject\ endpoint ã¯èŠæ±ããã subject ãæäŸã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠404ïŒNot FoundïŒã§ããããšãæãŸããïŒSHOULDïŒã
- invalid_trust_anchor\ Trust Anchor ãèŠã€ããããªãããŸãã¯äœ¿çšã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠404ïŒNot FoundïŒã§ããããšãæãŸããïŒSHOULDïŒã
- invalid_trust_chain\ Trust Chain ãæ€èšŒã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠400ïŒBad RequestïŒã§ããããšãæãŸããïŒSHOULDïŒã
- invalid_metadata\ metadata ãŸã㯠metadata policy ã®å€ãäžæ£ããŸãã¯ç«¶åããŠãããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠400ïŒBad RequestïŒã§ããããšãæãŸããïŒSHOULDïŒã
- not_found\ èŠæ±ããã Entity Identifier ãèŠã€ããããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠404ïŒNot FoundïŒã§ããããšãæãŸããïŒSHOULDïŒã
- server_error\ ãµãŒããäºæããªãç¶æ ã«ééããèŠæ±ãæºãããªãã£ããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠5xx ç³»ïŒäŸïŒ500ïŒInternal Server ErrorïŒïŒã®ããããã§ããããšãæãŸããïŒSHOULDïŒã
- temporarily_unavailable\ ãã§ãã¬ãŒã·ã§ã³ endpoint ããã¹ãããŠãããµãŒãããäžæçãªéè² è·ãŸãã¯ã¡ã³ããã³ã¹ã®ãããçŸåšèŠæ±ãåŠçã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠503ïŒService UnavailableïŒã§ããããšãæãŸããïŒSHOULDïŒã
- unsupported_parameter\ ãµãŒããèŠæ±ããããã©ã¡ãŒã¿ããµããŒãããŠããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠400ïŒBad RequestïŒã§ããããšãæãŸããïŒSHOULDïŒã
error_description\ å¿ é ïŒREQUIREDïŒãçºçãããšã©ãŒãéçºè ãçè§£ããã®ãå©ããããã®è¿œå æ å ±ãæäŸããã人ãèªããããã¹ãã
以äžã¯ããšã©ãŒå¿çã®éèŠç¯çãªäŸã§ããïŒ
400 Bad request
Content-Type: application/json
{
"error": "invalid_request",
"error_description":
"Required request parameter [sub] was missing."
}
å³45: ãšã©ãŒå¿çã®äŸ
9. Obtaining Federation Entity Configuration Information
ãã¹ãŠã® Trust Anchor ããã³ Intermediate Federation Entity ã® Entity
Configuration ã¯ããã® configuration endpoint
ã§å
¬éããªããã°ãªããªãïŒMUSTïŒãLeaf Entity ã® Entity Configuration
ããããã§å
¬éããããšãæãŸããïŒSHOULDïŒããã®å Žæã¯ãEntity Identifier
ã«æåå /.well-known/openid-federation ãé£çµããŠæ±ºå®ããïŒEntity Identifier
㯠https ã¹ããŒã ã䜿çšããhost
ã³ã³ããŒãã³ããå«ãŸãªããã°ãªããïŒMUSTïŒãport ããã³ path
ã³ã³ããŒãã³ããå«ãã§ãããïŒMAYïŒïŒãäŸãã°ãEntity Identifier ã
https://entity.example ã§ããå Žåããã® configuration endpoint 㯠URL
https://entity.example/.well-known/openid-federation ã§ãããEntity Identifier
ã«æ«å°Ÿã® "/" æåãå«ãŸããå Žåã/.well-known/openid-federation
ãé£çµããåã«ããããåãé€ããªããã°ãªããªãïŒMUSTïŒã
ããã«ãEntity Type Identifier federation_entity ãå«ãä»»æã® Entity
Configuration ã¯ããã® configuration endpoint ã§å
¬éããªããã°ãªããªãïŒMUSTïŒã
Leaf Federation Entity ã¯ãèªèº«ã® configuration endpoint ã§ Entity Configuration
ããã¥ã¡ã³ããå©çšå¯èœã«ããããšãæãŸããïŒSHOULDïŒãããã®èŠä»¶ã«ã¯äŸå€ããããããªãã¡ãclient
registration method ã®çµæãšããŠãµãŒãã client ã® Entity Configuration
ãä¿æããããšã«ãªã clients ã¯ããããçç¥ããŠãããïŒMAYïŒãäŸãã°ãExplicit
Registration ãçšãã RP ã¯ãclient registration ã®éã«èªèº«ã® Entity
Configuration ã OP ãž POST ãããããOP 㯠RP
ããå¿
èŠãªæ
å ±ããã¹ãŠååŸã§ãããæ¬ä»æ§ã®ãããã¡ã€ã«ã¯ãEntity Type Identifier
federation_entity ã䜿çšããªã Leaf Entities
ã«å¯Ÿããä»ã®äŸå€ãããã³ããã«äŒŽãåŠçèŠåãå®çŸ©ããŠãããïŒMAYïŒã
9.1. Federation Entity Configuration Request
Entity Configuration ããã¥ã¡ã³ãã¯ãåè¿°ã®ãã¹ã«å¯Ÿãã HTTP GET ãªã¯ãšã¹ãã§åãåãããªããã°ãªããªãïŒMUSTïŒã
ãã®äŸã§ã¯ãèŠæ±åŽã®åœäºè
㯠Entity https://openid.sunet.se
ã«å¯ŸããŠæ¬¡ã®ãªã¯ãšã¹ããè¡ãããã® Entity Configuration ãååŸããïŒ
GET /.well-known/openid-federation HTTP/1.1
Host: openid.sunet.se
å³46: Entity Configuration ã®ãªã¯ãšã¹ã
9.2. Federation Entity Configuration Response
ã¬ã¹ãã³ã¹ã¯ Entity Configuration ã§ãããEntity ã Intermediate Entity ãŸãã¯
Trust Anchor ã®å Žåãã¬ã¹ãã³ã¹ã¯ federation EntityïŒfederation_entityïŒã®
metadata ãå«ãŸãªããã°ãªããªãïŒMUSTïŒã
æåã¬ã¹ãã³ã¹ã¯ HTTP ã¹ããŒã¿ã¹ã³ãŒã 200 ãçšããcontent type ã
application/entity-statement+jwt ãšããã¬ã¹ãã³ã¹ã Entity Statement
ãå«ãããšãæç¢ºã§ãªããã°ãªããªãïŒMUSTïŒããšã©ãŒã®å Žåãã¬ã¹ãã³ã¹ã¯ã»ã¯ã·ã§ã³
8.9 ã§å®çŸ©ããããšããã§ããã
以äžã¯ Intermediate Entity ããã®ã¬ã¹ãã³ã¹ã® JWT Claims Set ã®éèŠç¯çãªäŸã§ããïŒ
{
"iss": "https://openid.sunet.se",
"sub": "https://openid.sunet.se",
"iat": 1516239022,
"exp": 1516298022,
"metadata": {
"federation_entity": {
"contacts": ["ops@sunet.se"],
"federation_fetch_endpoint": "https://sunet.se/openid/fedapi",
"organization_uri": "https://www.sunet.se",
"organization_name": "SUNET"
},
"openid_provider": {
"issuer": "https://openid.sunet.se",
"signed_jwks_uri": "https://openid.sunet.se/jwks.jose",
"authorization_endpoint": "https://openid.sunet.se/authorization",
"client_registration_types_supported": [
"automatic",
"explicit"
],
"grant_types_supported": [
"authorization_code"
],
"id_token_signing_alg_values_supported": [
"ES256",
"RS256"
],
"logo_uri": "https://www.umu.se/img/umu-logo-left-neg-SE.svg",
"op_policy_uri": "https://www.umu.se/en/website/legal-information/",
"response_types_supported": [
"code"
],
"subject_types_supported": [
"pairwise",
"public"
],
"token_endpoint": "https://openid.sunet.se/token",
"federation_registration_endpoint": "https://op.umu.se/openid/fedreg",
"token_endpoint_auth_methods_supported": [
"private_key_jwt"
]
}
},
"jwks": {
"keys": [
{
"alg": "RS256",
"e": "AQAB",
"kid": "key1",
"kty": "RSA",
"n": "pnXBOusEANuug6ewezb9J_...",
"use": "sig"
}
]
},
"authority_hints": [
"https://edugain.org/federation"
]
}
å³47: Entity Configuration Response JWT Claims Set
10. Resolving the Trust Chain and Metadata
å¥ã® EntityïŒParty BïŒãšä¿¡é Œé¢ä¿ã確ç«ããã EntityïŒParty AïŒã¯ãParty B ã® Entity Identifier ãšãTrust Anchors ã® Entity Identifier ã®ãªã¹ãããã³ãããã®å ¬é眲åéµãä¿æããŠããªããã°ãªããªãïŒMUSTïŒãParty A ã¯ãŸããParty B ãã 1 ã€ä»¥äžã® Trust Anchors ãžè³ãå°ãªããšã 1 æ¬ã®ä¿¡é Œã®é£éã確ç«ã§ããã ãã® Entity Statements ãååŸããªããã°ãªããªãïŒMUSTïŒããã®åŸãParty A 㯠Trust Chains ãç¬ç«ã«æ€èšŒããªããã°ãªããïŒMUSTïŒãæå¹ãª Trust Chains ãè€æ°ããããã€ã¢ããªã±ãŒã·ã§ã³ãå¿ èŠãšããå Žåã«ã¯ããã®äžãã䜿çšãã 1 æ¬ãéžæããªããã°ãªããªãïŒMUSTïŒã
Trust Chain ã®è©äŸ¡ãä¿¡é Œã§ãã第äžè ãžå§ä»»ããããã«ãå¥ã® EntityïŒParty BïŒãšä¿¡é Œé¢ä¿ã確ç«ããã EntityïŒParty AïŒã¯ãã»ã¯ã·ã§ã³ 8.3 ã§å®çŸ©ããã resolve endpoint ã䜿çšããŠãããïŒMAYïŒã
10.1. Fetching Entity Statements to Establish a Trust Chain
ç¶æ³ã«ãã£ãŠã¯ãParty A 㯠Party B ã® Entity Configuration ãæž¡ãããããšãããããèªèº«ã§ååŸããªããã°ãªããªãå ŽåããããååŸãå¿ èŠãªå ŽåãParty A 㯠Party B ã® Entity Identifier ã«åºã¥ããã»ã¯ã·ã§ã³ 9 ã§èª¬æããæé ãçšããã
次ã®ã¹ãããã¯ãauthority_hints ã«åæãããŠãã Intermediates ã®ãªã¹ããå埩åŠçããæªç¥ã® Trust Anchor ã§çµãã authority hints ãç¡èŠãã€ã€ãå Intermediate ãã Entity Configuration ãèŠæ±ããããšã§ãããåãåã£ã Entity Configuration ã« authority hint ãå«ãŸããŠããå Žåããã®åŠçãç¹°ãè¿ãã
ãã¹ãŠã® Intermediates ãš Trust Anchor ã®ãªã¹ããåŸãããããã»ã¯ã·ã§ã³ 8.1 ã§å®çŸ©ãããå fetch endpoint ãçšããŠãIntermediates ãš Party B ã«é¢ãã Entity Statements ãååŸããã
ãã§ãã¬ãŒã·ã§ã³åå è ã¯ããã®åŠçã®éäžã§æ¢ã«ååŸãã Entity Statements ãåååŸããããšããŠã¯ãªããªãïŒMUST NOTïŒãããã¯ã«ãŒããé²ãããã§ãããã«ãŒããæ€åºãããå Žåãããã«ã€ãªãã£ã authority hint ã¯äœ¿çšããŠã¯ãªããªãïŒMUST NOTïŒã
æåããã°ã1 ã€ä»¥äžã® Entity Statements ã®ãªã¹ããè¿ããåãªã¹ãã¯èªå·±çœ²åããã Entity Statement ã§çµãããããã㯠Trust Anchor ã«ãã£ãŠçºè¡ãããã
Party B ãããä¿¡é ŒããŠãã Trust Anchors ã®ãã¡å°ãªããšã 1 ã€ãžè³ããã¹ãååšããªãå Žåããã®ãªã¹ãã¯ç©ºã«ãªããParty B ã®æ å ±ã«å¯Ÿããä¿¡é Œã確ç«ããæ¹æ³ã¯ãªããããã Party A ãã©ã®ããã«æ±ããã¯æ¬ä»æ§ã®ã¹ã³ãŒãå€ã§ããã
次ã®ã·ãŒã±ã³ã¹å³ã¯ãOP ã RP ã«å¯ŸããŠè¡ã trust evaluation ã«ããããRPãOPãTrust Anchor ã®çžäºäœçšã衚ããåè¿°ã®èª¬æã«å¯Ÿå¿ã¥ãããšããã®å³ã§ã¯ Party A ã OPãParty B ã RP ã§ããã
+-----+ +-----+ +--------------+
| RP | | OP | | Trust Anchor |
+-----+ +-----+ +--------------+
| | |
| Entity Configuration Request | |
|<------------------------------| |
| | |
| Entity Configuration Response | |
|------------------------------>| |
| | |
| | Evaluates authority_hints |
| |-------------------------- |
| | | |
| |<------------------------- |
| | |
| | Entity Configuration Request |
| |--------------------------------------->|
| | |
| | Entity Configuration Response |
| |<---------------------------------------|
| | |
| | Obtains Fetch Endpoint |
| |----------------------- |
| | | |
| |<---------------------- |
| | |
| | Request Subordinate Statement about RP |
| |--------------------------------------->|
| | |
| | Subordinate Statement about RP |
| |<---------------------------------------|
| | |
| | Evaluates the Trust Chain |
| |-------------------------- |
| | | |
| |<------------------------- |
| | |
| | Applies Metadata Policies |
| |-------------------------- |
| | | |
| |<------------------------- |
| | |
| | Applies Constraints |
| |-------------------- |
| | | |
| |<------------------- |
| | |
| | Derives the RP's Resolved Metadata |
| |----------------------------------- |
| | | |
| |<---------------------------------- |
Figure 48: Resolving Trust Chain and Metadata from the Perspective of an OP
10.2. Validating a Trust Chain
ã»ã¯ã·ã§ã³ 4 ã§èª¬æãããšãããTrust Chain ã¯é åºä»ãããã Entity Statements ã®ãªã¹ãããæ§æãããããããã£ãŠãParty A ãã©ã®ããã«ã㊠Entity Statements ã®éåãååŸãããšããŠããä»åºŠã¯ã»ã¯ã·ã§ã³ 4 ã«ç€ºãããèŠåãçšããŠããããé©å㪠Trust Chain ã§ããããšãæ€èšŒããªããã°ãªããªãïŒMUSTïŒã
Trust Chain å ã® Entity Statements ã ES[j] ãšåŒã¶ããšã«ãããããã§ j = 0,...,i ãšãã0 ã¯æåã® Entity Statement ã®ã€ã³ããã¯ã¹ãi ã¯æåŸã® Entity Statement ã® 0 å§ãŸãã€ã³ããã¯ã¹ã§ãããTrust Chain ãæ€èšŒããããã«ã次ã宿œããªããã°ãªããªãïŒMUSTïŒïŒ
å Entity Statement ES[j]ïŒj = 0,..,iïŒã«ã€ããŠïŒ
- ã¹ããŒãã¡ã³ããå¿ èŠãª Claims ããã¹ãŠå«ãã§ããããšãæ€èšŒããã
- iat ãéå»ã®å€ã§ããããšãæ€èšŒããã
- exp ãå°æ¥ã®å€ã§ããããšãæ€èšŒããã
ES[0]ïŒTrust Chain ã® subject ã® Entity ConfigurationïŒã«ã€ããŠïŒ
- iss == sub ã§ããããšãæ€èšŒããã
- ES[0]["jwks"] ã«å«ãŸããå ¬ééµã®ããããã§çœ²åæ€èšŒãæåããããšãæ€èšŒããã
å j = 0,...,i-1 ã«ã€ããŠïŒ
- ES[j]["iss"] == ES[j+1]["sub"] ã§ããããšãæ€èšŒããã
- ES[j+1]["jwks"] ã«å«ãŸããå ¬ééµã®ããããã§ ES[j] ã®çœ²åæ€èšŒãæåããããšãæ€èšŒããã
ES[i]ïŒTrust Anchor ã® Entity ConfigurationïŒã«ã€ããŠïŒ
- issuer ã Trust Anchor ã® Entity Identifier ãšäžèŽããããšãæ€èšŒããã
- Trust Anchor ã®å ¬ééµã§ ES[i] ã®çœ²åæ€èšŒãæåããããšãæ€èšŒããã
çœ²åæ€èšŒã¯ãã¹ããŒãã¡ã³ãã®æ£ãããã¿ã€ã ã¹ã¿ã³ãã®æ€èšŒãããã¯ããã«é«ã³ã¹ãã§ããããã®ããå®è£ è ã¯ãä»ã®ãã¹ãŠã®æ€æ»ãå®äºãããŸã§çœ²åæ€èšŒãè¡ããªãããšãéžæããŠãããïŒMAYïŒã
ãã§ãã¬ãŒã·ã§ã³åå è ã¯ãã»ã¯ã·ã§ã³ 10.4 ã«åŸããæå¹æéåãã«ãªããŸã§ Entity Statements ãšçœ²åæ€èšŒçµæããã£ãã·ã¥ããŠãããïŒMAYïŒã
äžèšã®æ€èšŒã®åŸãã»ã¯ã·ã§ã³ 6.1.4 ã§èª¬æããããšãããmetadata 㯠Trust Chain ã® subject ã«å¯ŸããŠè§£æ±ºãããªããã°ãªããªãïŒMUSTïŒãããã«ãã»ã¯ã·ã§ã³ 6.2 ã§èª¬æããããšãããTrust Chain ã®å Subordinate Statement ã«ã€ã㊠constraints ãé©çšããªããã°ãªããªãïŒMUSTïŒã
10.3. Choosing One of the Valid Trust Chains
æå¹ãª Trust Chains ãè€æ°èŠã€ãã£ãå ŽåãParty A ã¯ã©ãã䜿çšãããæ±ºå®ããå¿ èŠããããåçŽãªèŠåã®äžäŸã¯ãé·ã chain ããçã chain ãåªå ããããšã§ããããã§ãã¬ãŒã·ã§ã³åå è ã¯ãããŒã«ã«ããªã·ãŒã«åŸã£ãŠä»ã®èŠåã«åŸã£ãŠãããïŒMAYïŒã
10.4. Calculating the Expiration Time of a Trust Chain
Trust Chain å ã®å Entity Statement ã¯çœ²åããããã€æå¹æéïŒexpïŒãæããªããã°ãªããªãïŒMUSTïŒãTrust Chain å šäœã®æå¹æéã¯ãTrust Chain å ã«ããïŒexpïŒå€ã®æå°å€ã§ããã
10.5. Transient Trust Chain Validation Errors
ãã§ãã¬ãŒã·ã§ã³ã®ããããžãæŽæ°äžïŒäŸïŒLeaf Entities ã®éåãæ°ãã Intermediate Entity ãžç§»åãããïŒã§ããå ŽåãTrust Chain ã®æ€èšŒãäžæçã«å€±æããããšããããäžå®æéåŸã«å詊è¡ããããšã§ç¶æ³ã解決ããå Žåãããã
10.6. Resolving the Trust Chain and Metadata with a Resolver
ã»ã¯ã·ã§ã³ 8.3 ã§èª¬æãã resolve endpoint ãçšããããšã«ãããäžèšã®æ¹æ³ã䜿ã£ãŠ EntityïŒParty BïŒã® Trust Chain ã解決ããå¥ã®æ¹æ³ãããç¹ã«æ³šæããããšãããã«ãã resolver ããä¿¡é Œé¢ä¿ã確ç«ããã EntityïŒParty AïŒãæ¬æ¥ã¯èªåèªèº«ã§è¡ãå¿ èŠãããäœæ¥ã代ããã«å®è¡ã§ããã
11. Updating Metadata, Key Rollover, and Revocation
æ¬ä»æ§ã¯ãã¡ã¿ããŒã¿ããã³å ¬ééµãåæ»ã«æŽæ°ã§ããããã«ããã
ã»ã¯ã·ã§ã³10.4ã§è¿°ã¹ããšãããå Trust Chain ã«ã¯æå¹æéãããããã§ãã¬ãŒã·ã§ã³åå è ã¯ãTrust Chain ãæéåãã«ãªã£ãéã«ãããæŽæ°ã§ããããšããµããŒãããªããã°ãªããªãïŒMUSTïŒãåå è ã Trust Chain ãã©ã®çšåºŠã®é »åºŠã§åè©äŸ¡ãããã¯ãäœããå€åããããšãã©ãã ãæ©ãææ¡ããããã«äŸåããã
11.1. Protocol Key Rollover
Leaf Entity ãèªèº«ã®å ¬ééµã jwks ãçšããŠã¡ã¿ããŒã¿å ã«å ¬éããŠããå Žåããã® Entity Configuration ã®æå¹æéãçšããŠãåä¿¡åŽã® Entity ãæŽæ°ãããå ¬ééµã»ãããã©ã®çšåºŠã®é »åºŠã§ååŸããå¿ èŠãããããå¶åŸ¡ã§ããã
11.2. Key Rollover for a Trust Anchor
Trust Anchor ã¯ãèªèº«ã«é¢ãã Entity Configuration ãå ¬éããªããã°ãªããªãïŒMUSTïŒããã® Entity Configuration ã«èšå®ããæå¹æéïŒexpïŒã¯ããã§ãã¬ãŒã·ã§ã³åå è ã劥åœãªééã§ãããåååŸããããšã確å®ã«ããããã«éžã¶ã¹ãã§ãããTrust Anchor ã眲åéµãããŒã«ãªãŒããŒããéã«ã¯ã次ãè¡ãå¿ èŠãããïŒ
- Entity Configuration å ã§ Trust Anchor ã®çœ²åéµã衚ã jwks ã«ãæ°ããéµã远å ããã
- ãã¹ãŠã® Subordinates ãæ°ããéµãååŸã§ããããã«ååãªæéãå€ãéµãçšã㊠Entity Configuration ããã³ Entity Statements ãžã®çœ²åãç¶ç¶ããã
- æ°ããéµã§çœ²åããããåãæ¿ããã
- 劥åœãªæéãçµéããåŸãå€ãéµãåé€ãããããã§åŠ¥åœãšèŠãªãããæéã¯ãTrust Anchor ã®ã»ãã¥ãªãã£ãããã¡ã€ã«ããã³ãªã¹ã¯è©äŸ¡ã«äŸåããã
11.3. Redundant Retrieval of Trust Anchor Keys
ãã§ãã¬ãŒã·ã§ã³éçšè ïŒFederation OperatorsïŒã管çãã Trust Anchors ã®å ¬ééµã«ã€ããŠãããã Trust Anchors ã® Entity Configurations ãšã¯ç¬ç«ããååŸææ®µãæäŸããããšãæšå¥šãããïŒRECOMMENDEDïŒãããã¯ãEntity Configurations ããå ¬ééµãååŸããåºç€ãšãªã£ãŠãã Web PKI [RFC9525] ã䟵害ãããå Žåã«åããŠãåé·æ§ãæäŸããããšãæå³ããŠããã
ãã§ãã¬ãŒã·ã§ã³éçšè ãèŠå®ããç¬ç«ææ®µã«ãã£ãŠååŸããéµã¯ãTrust Anchor ã® Entity Configuration çµç±ã§ååŸããéµãšæ¯èŒãããã¹ãã§ããïŒSHOULDïŒãäžèŽããªãå Žåã¯ãäž¡æ¹ãšãåååŸãããã¹ãã§ããïŒSHOULDïŒãããã§ãäžèŽããªãå Žåãããã¯ã»ãã¥ãªãã£äžãŸãã¯èšå®äžã®åé¡ã瀺åããããã®å Žåã«é©åãªæ¯æ£æé ã¯ããã§ãã¬ãŒã·ã§ã³éçšè ã«ãã£ãŠèŠå®ãããã¹ãã§ããïŒSHOULDïŒã
11.4. Revocation
ãã§ãã¬ãŒã·ã§ã³ã®åå è ã¯ãéåžžã¯é«ãé »åºŠã§å®æçã« Trust Chain ã確èªãããšæåŸ ãããŠãããããæ¬ä»æ§ã¯ revoke ã®æç¶ããå®çŸ©ããªããç¹å®ã®ãã§ãã¬ãŒã·ã§ã³ã¯å¥ã®éžæãããŠãããïŒMAYïŒããã®å Žåã¯ç¬èªã® revoke æç¶ããå®çŸ©ããå¿ èŠãããã
12. OpenID Connect Client Registration
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãæ¬ä»æ§ã§å®çŸ©ãããä»çµã¿ããäºåã«æç€ºçãªèšå®ãç»é²ãäºãã«æããªã RP ãš OP ã®éã§ä¿¡é Œé¢ä¿ã確ç«ããããã«ãã©ã®ããã«å©çšã§ãããã説æãããã»ã¯ã·ã§ã³10ã«åŸã Trust Chains ãçšãã 2 ã€ã® client registration methodãããªãã¡ Automatic Registration ãš Explicit Registration ãå®çŸ©ããããã§ãã¬ãŒã·ã§ã³ã¯ãclient registration ã«ä»ã®é©åãªæ¹æ³ãçšããããšãã§ããã
OpenID Connect Entities ãå«ããã§ãã¬ãŒã·ã§ã³ã¯ããµããŒãããã client registration method ã«ã€ããŠåæããŠããã¹ãã§ããïŒSHOULDïŒã
Automatic Registration ãš Explicit Registration ã¯ãOpenID Connect 以å€ã® OAuth 2.0 ã®ãããã¡ã€ã«ã§ãå©çšã§ããç¹ã«æ³šæããããšããã®å ŽåãEntity Type Identifiers ãšã㊠openid_relying_party ãš openid_provider ã䜿ã代ããã«ãoauth_client ãš oauth_authorization_serverããããã¯äœ¿çšããç¹å®ã® OAuth 2.0 ãããã¡ã€ã«ã§å®çŸ©ãããŠããä»ã® Entity Type Identifiers ã䜿ãããšã«ãªãã
äž¡æ¹ã®æ¹æ³ãçšããå Žåãtrust_anchor_hints ã®å€ã䜿ã£ãŠãRP ãš OP ãå ±æãã Trust Anchors ãç¹å®ã§ãããTrust Chains ãæ§ç¯ããéãå¯èœã§ããã° RP 㯠OP ãšå ±éã® Trust Anchor ãéžã¶ã¹ãã§ããïŒSHOULDïŒã
12.1. Automatic Registration
Automatic Registration ã«ãããRP 㯠OP ãžã®äºåã®ç»é²ã¹ããããªãã« Authentication Requests ãè¡ãããOP ã¯ãAuthentication Request ã«å«ãŸããã¯ã©ã€ã¢ã³ãIDïŒClient IDïŒãã RP ã® Entity Configuration ã解決ããã»ã¯ã·ã§ã³10ã§å®çŸ©ãããæé ã«åŸã£ãŠåŠçããã
RP 㯠Authentication Request ãéä¿¡ããåã«ãã»ã¯ã·ã§ã³10ã§èŠå®ããããšãã OP ã® Trust Chain ãšã¡ã¿ããŒã¿è§£æ±ºãè¡ããªããã°ãªããªãïŒMUSTïŒã解決ãæåããªãã£ãå ŽåãRP 㯠OP ãšã®ãã以äžã®ããåãã詊ã¿ãŠã¯ãªããªãïŒMUST NOTïŒã
Automatic Registration ã«ã¯æ¬¡ã®ç¹åŸŽãããïŒ
- OP ãšã®ãã¹ãŠã®ããåãã«ãããŠãRP ã¯èªèº«ã® Entity Identifier ãã¯ã©ã€ã¢ã³ãIDïŒClient IDïŒãšããŠçšãããOP ã¯ãã»ã¯ã·ã§ã³9ã§è¿°ã¹ããšãããEntity Identifier ããå°åºããã URL ãã RP ã® Entity Configuration ãååŸããã
- Authentication Request ã®åã«ç»é²ã¹ãããããªããããAutomatic Registration ãçšããå ŽåãèŠæ±ã®èªèšŒã«ã¯é察称æå·ãçšããªããã°ãªããªãïŒMUSTïŒãèŠæ±ã®èªèšŒã«ã¯é察称æå·ãçšãããããããOP 㯠RP ã« Client Secret ãå²ãåœãŠããç»é²åŠçã®çµæãšããŠãããè¿ãããšããªãã
- Automatic Registration ããµããŒããã OP ã¯ããã® client_registration_types_supported ã¡ã¿ããŒã¿ãã©ã¡ãŒã¿ã« automatic ããŒã¯ãŒããå«ããªããã°ãªããªãïŒMUSTïŒã
12.1.1. Authentication Request
Authentication Request ã¯ãOpenID Connect Core 1.0 [OpenID.Core] ã®ã»ã¯ã·ã§ã³6ããã³ The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR) [RFC9101] ã§è¿°ã¹ãããŠãããšãããRequest Object ã倿ž¡ããŸãã¯åç §æž¡ãã§æž¡ãããšã«ããå®è¡ãããããããã¯ãPushed Authorization Requests [RFC9126] ã§è¿°ã¹ãããŠãã pushed authorization request ãçšããã
Authentication requests ã¯ã以äžã§èª¬æããããããã®æ¹æ³ãçšããŠãèŠæ±å ã® Entity ããã® Entity ã® RP éµã管çããŠããããšã瀺ããªããã°ãªããªãïŒMUSTïŒãããã瀺ããªã authentication request ã®è©Šè¡ã¯æåŠãããªããã°ãªããªãïŒMUSTïŒã
ãããã€ã«ãã£ãŠã¯ãrequest_uri ãªã¯ãšã¹ããã©ã¡ãŒã¿ãçšã㊠Request Object ãåç §æž¡ãããããšããµããŒãããªãéžæãããŠãããïŒMAYïŒãããã¯ãããã蚱容ãããšãæ»æè ã OAuth 2.0 Authorization Servers ãŸã㯠OpenID Providers ã«å¯ŸããŠãµãŒãã¹äžèœæ»æïŒDoSïŒãè¡ãããããªãããã§ããããããè¡ãããã«ãOP ã®ã¡ã¿ããŒã¿ãã©ã¡ãŒã¿ request_uri_parameter_supported ã false ã«èšå®ã§ããããªã¯ãšã¹ããã©ã¡ãŒã¿ã倧ããããŠã¯ãšãªãã©ã¡ãŒã¿ãšããŠå€æž¡ãããããšãçŸå®çã§ãªãå Žåã¯ãã»ã¯ã·ã§ã³12.1.1.2ã§è¿°ã¹ããšãããHTTP POST ãŸã㯠Pushed Authorization Request [RFC9126] ã«ãã£ãŠéä¿¡ã§ããã
12.1.1.1. Using a Request Object
Request Object ã Authorization Endpoint ãŸã㯠Pushed Authorization Request Endpoint ã§äœ¿çšãããå Žåãrequest ãã©ã¡ãŒã¿ã®å€ã¯ JWT ã§ããããã® Claims 㯠OpenID Connect Core 1.0 [OpenID.Core] ã®ã»ã¯ã·ã§ã³3.1.2ã§èŠå®ããããªã¯ãšã¹ããã©ã¡ãŒã¿ã§ããããã® JWT ã¯çœ²åãããªããã°ãªããïŒMUSTïŒãæå·åããŠãããïŒMAYïŒãRequest Object ã§ã¯æ¬¡ã®ãã©ã¡ãŒã¿ãçšããããïŒ
- aud\ å¿ é ïŒREQUIREDïŒã"aud"ïŒaudienceïŒã®å€ã¯ OP ã® Entity Identifier ã§ãªããã°ãªããïŒMUSTïŒãä»ã®å€ãå«ãã§ã¯ãªããªãïŒMUST NOTïŒã
- client_id\ å¿ é ïŒREQUIREDïŒãclient_id ã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒã
- iss\ å¿ é ïŒREQUIREDïŒãiss ã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒã
- sub\ ååšããŠã¯ãªããªãïŒMUST NOTïŒãããã¯ãprivate_key_jwt ã«ãã client authentication ã®ããã«ã¹ããŒãã¡ã³ããåå©çšãããããšãé²ãã
- jti\ å¿ é ïŒREQUIREDïŒãJWT IDãJWT ã®äžæãªèå¥åã§ãããRequest Object ã®åå©çšé²æ¢ã«äœ¿çšã§ãããRequest Object ã¯ãåœäºè éã§åå©çšæ¡ä»¶ã亀æžãããŠããªãéãã1 åã ã䜿çšãããªããã°ãªããªãïŒMUSTïŒããã®ãããªäº€æžã¯æ¬ä»æ§ã®ã¹ã³ãŒãå€ã§ããã
- exp\ å¿ é ïŒREQUIREDïŒãæ°å€ããã以é㯠JWT ãåŠçã®ããã«åãä»ããŠã¯ãªããªãïŒMUST NOTïŒãšããæå¹æéããã㯠[RFC7519] ã«åŸã Seconds Since the Epoch ãšããŠè¡šãã
- iat\ ä»»æïŒOPTIONALïŒãæ°å€ããã® Request Object ãçºè¡ãããæå»ããã㯠[RFC7519] ã«åŸã Seconds Since the Epoch ãšããŠè¡šãã
- trust_chain\ ä»»æïŒOPTIONALïŒãé åãèŠæ±ãè¡ã RP ãšãéžæããã Trust Anchor ã®éã® Trust Chain ãæ§æãã Entity Statements ã®äžŠã³ãå«ããRP ãš OP ãåäžãã§ãã¬ãŒã·ã§ã³ã®äžéšã§ããå ŽåãRP 㯠OP ãšå ±éã® Trust Anchor ãéžæããªããã°ãªããªãïŒMUSTïŒãããã§ãªãå ŽåãRP ã¯äœ¿çšãã Trust Anchor ãèªç±ã«éžæã§ããã
泚èšïŒNOTEïŒïŒã»ã¯ã·ã§ã³4.3ã§èŠå®ããã trust_chain header parameter ã®äœ¿çšã¯ãæ¬ãã©ã¡ãŒã¿ã®äœ¿çšãããæšå¥šãããïŒRECOMMENDEDïŒãæ¬ãã©ã¡ãŒã¿ã¯æŽå²ççç±ã«ããæ®ãããŠããã
8.9. Error Responses
ãªã¯ãšã¹ããäžæ£ãªåœ¢åŒã§ãã£ãå ŽåããŸãã¯ãªã¯ãšã¹ãã®åŠçäžã«ãšã©ãŒãçºçããå Žåãã¬ã¹ãã³ã¹æ¬æã¯ content type ã application/json ã® JSON ãªããžã§ã¯ãã§ããã¹ãã§ããïŒSHOULDïŒã[RFC6749] ã«æºæ ããŠãæ¬¡ã®æšæºåããããšã©ãŒåœ¢åŒãçšããã¹ãã§ããïŒSHOULDïŒã
error
å¿ é ïŒREQUIREDïŒãIANA ã®ãOAuth Extensions Error Registryã[IANA.OAuth.Parameters] ã«ãããšã©ãŒã³ãŒãã䜿çšããŠãããïŒMAYïŒããã®ä»æ§ã¯ããã«ã次ã®ãšã©ãŒã³ãŒããå®çŸ©ããã
invalid_request
ãªã¯ãšã¹ããäžå®å šã§ããããŸãã¯çŸè¡ã®ä»æ§ã«é©åããŠããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠400ïŒBad RequestïŒã§ããã¹ãã§ããïŒSHOULDïŒã
invalid_client
Client ãèªå¯ã§ããªãããŸãã¯ãã§ãã¬ãŒã·ã§ã³ã®æå¹ãªåå è ã§ã¯ãªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠401ïŒUnauthorizedïŒã§ããã¹ãã§ããïŒSHOULDïŒã
invalid_issuer
åœè©² endpoint ã¯ãèŠæ±ããã issuer ãæäŸã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠404ïŒNot FoundïŒã§ããã¹ãã§ããïŒSHOULDïŒã
invalid_subject
åœè©² endpoint ã¯ãèŠæ±ããã subject ãæäŸã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠404ïŒNot FoundïŒã§ããã¹ãã§ããïŒSHOULDïŒã
invalid_trust_anchor
Trust Anchor ãèŠã€ãããªãããŸãã¯äœ¿çšã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠404ïŒNot FoundïŒã§ããã¹ãã§ããïŒSHOULDïŒã
invalid_trust_chain
Trust Chain ãæ€èšŒã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠400ïŒBad RequestïŒã§ããã¹ãã§ããïŒSHOULDïŒã
invalid_metadata
Metadata ãŸã㯠Metadata Policy ã®å€ãç¡å¹ã§ããããŸãã¯ç«¶åããŠãããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠400ïŒBad RequestïŒã§ããã¹ãã§ããïŒSHOULDïŒã
not_found
èŠæ±ããã Entity Identifier ãèŠã€ãããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠404ïŒNot FoundïŒã§ããã¹ãã§ããïŒSHOULDïŒã
server_error
ãµãŒããŒãäºæããªãç¶æ ã«ééãããªã¯ãšã¹ããæºãããªãã£ããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠5xx ç¯å²ã®ããããïŒããšãã° 500ïŒInternal Server ErrorïŒïŒã§ããã¹ãã§ããïŒSHOULDïŒã
temporarily_unavailable
ãã§ãã¬ãŒã·ã§ã³ endpoint ããã¹ãããŠãããµãŒããŒããäžæçãªéè² è·ãŸãã¯ã¡ã³ããã³ã¹ã®ãããçŸåšãªã¯ãšã¹ããåŠçã§ããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠503ïŒService UnavailableïŒã§ããã¹ãã§ããïŒSHOULDïŒã
unsupported_parameter
ãµãŒããŒãèŠæ±ããããã©ã¡ãŒã¿ããµããŒãããŠããªããHTTP ã¬ã¹ãã³ã¹ã®ã¹ããŒã¿ã¹ã³ãŒã㯠400ïŒBad RequestïŒã§ããã¹ãã§ããïŒSHOULDïŒã
error_description
å¿ é ïŒREQUIREDïŒãçºçãããšã©ãŒãéçºè ãçè§£ã§ããããæ¯æŽããããã«çšãããè¿œå æ å ±ãäžãã人éå¯èªãªããã¹ãã
以äžã¯ãèŠç¯ã§ã¯ãªãïŒnon-normativeïŒãšã©ãŒã¬ã¹ãã³ã¹ã®äŸã§ããã
400 Bad request
Content-Type: application/json
{
"error": "invalid_request",
"error_description":
"Required request parameter [sub] was missing."
}
Figure 45: Example Error Response
9. Obtaining Federation Entity Configuration Information
ãã¹ãŠã® Trust Anchor ããã³ Intermediate Federation Entity ã® Entity
Configuration ã¯ãããããã® configuration endpoint
ã§å
¬éãããªããã°ãªããªãïŒMUSTïŒããŸã Leaf Entity ã® Entity Configuration
ããããã§å
¬éãããã¹ãã§ããïŒSHOULDïŒããã®å Žæã¯ãæåå
/.well-known/openid-federation ã Entity Identifier
ã«é£çµããããšã§æ±ºå®ãããïŒEntity Identifier 㯠https ã¹ããŒã ã䜿çšããhost
ã³ã³ããŒãã³ããå«ãŸãªããã°ãªããïŒMUSTïŒãport ããã³ path
ã³ã³ããŒãã³ããå«ãã§ãããïŒMAYïŒïŒãããšãã°ãEntity Identifier ã
https://entity.example ã§ããå Žåã® configuration endpoint 㯠URL
https://entity.example/.well-known/openid-federation ã§ãããEntity Identifier
ã«æ«å°Ÿã®ã/ãæåãå«ãŸããŠããå Žåã/.well-known/openid-federation
ãé£çµããåã«ãããé€å»ããªããã°ãªããªãïŒMUSTïŒã
ããã«ãEntity Type Identifier ã federation_entity ã§ãã Entity
Configuration ã¯ããã® configuration endpoint
ã§å
¬éãããªããã°ãªããªãïŒMUSTïŒã
Leaf Federation Entity ã¯ãconfiguration endpoint ã§ Entity Configuration
ææžãå©çšå¯èœã«ããã¹ãã§ãããïŒSHOULDïŒããã®èŠä»¶ã«ã¯äŸå€ããããããªãã¡ãã¯ã©ã€ã¢ã³ãç»é²æ¹åŒã®çµæãšããŠãµãŒããŒãã¯ã©ã€ã¢ã³ãã®
Entity Configuration ãä¿æããããšã«ãªã client
ã¯ããããçç¥ããŠãããïŒMAYïŒãããšãã°ãExplicit Registration ãçšãã RP ã¯
client ç»é²ã®éã«èªåã® Entity Configuration ã OP ã« POST ãããããOP 㯠RP
ããå¿
èŠãªãã®ããã¹ãŠååŸããŠããããã®ä»æ§ã®ãããã¡ã€ã«ã¯ãEntity Type
Identifier federation_entity ãçšããªã Leaf Entity
ã«å¯Ÿããä»ã®äŸå€ããããã«ä»éããåŠçèŠåãå®çŸ©ããŠãããïŒMAYïŒã
9.1. Federation Entity Configuration Request
Entity Configuration ææžã¯ãå ã«æå®ãããã¹ã«å¯Ÿã㊠HTTP GET ãªã¯ãšã¹ããçšããŠåãåãããªããã°ãªããªãïŒMUSTïŒã
ãã®äŸã§ã¯ãèŠæ±è
㯠Entity Configuration ãååŸããããã«ãEntity
https://openid.sunet.se ã«å¯ŸããŠæ¬¡ã®ãªã¯ãšã¹ããè¡ãã
GET /.well-known/openid-federation HTTP/1.1
Host: openid.sunet.se
Figure 46: Request for Entity Configuration
9.2. Federation Entity Configuration Response
ã¬ã¹ãã³ã¹ã¯ Entity Configuration ã§ãããEntity ã Intermediate Entity ãŸãã¯
Trust Anchor ã®å Žåãã¬ã¹ãã³ã¹ã«ã¯ federation EntityïŒfederation_entityïŒã®
metadata ãå«ãŸãªããã°ãªããªãïŒMUSTïŒã
æåã¬ã¹ãã³ã¹ã¯ãHTTP ã¹ããŒã¿ã¹ã³ãŒã 200 ãš content type
application/entity-statement+jwt
ãçšããªããã°ãªããªãïŒMUSTïŒãããã¯ãã¬ã¹ãã³ã¹ã Entity Statement
ãå«ãããšãæç¢ºã«ããããã§ããããšã©ãŒã®å Žåãã¬ã¹ãã³ã¹ã¯ Section 8.9
ã§å®çŸ©ãããšããã§ããã
以äžã¯ãIntermediate Entity ããã®ã¬ã¹ãã³ã¹ã«ããã JWT Claims Set ã®ãèŠç¯ã§ã¯ãªãïŒnon-normativeïŒäŸã§ããã
{
"iss": "https://openid.sunet.se",
"sub": "https://openid.sunet.se",
"iat": 1516239022,
"exp": 1516298022,
"metadata": {
"federation_entity": {
"contacts": ["ops@sunet.se"],
"federation_fetch_endpoint": "https://sunet.se/openid/fedapi",
"organization_uri": "https://www.sunet.se",
"organization_name": "SUNET"
},
"openid_provider": {
"issuer": "https://openid.sunet.se",
"signed_jwks_uri": "https://openid.sunet.se/jwks.jose",
"authorization_endpoint": "https://openid.sunet.se/authorization",
"client_registration_types_supported": [
"automatic",
"explicit"
],
"grant_types_supported": [
"authorization_code"
],
"id_token_signing_alg_values_supported": [
"ES256",
"RS256"
],
"logo_uri": "https://www.umu.se/img/umu-logo-left-neg-SE.svg",
"op_policy_uri": "https://www.umu.se/en/website/legal-information/",
"response_types_supported": [
"code"
],
"subject_types_supported": [
"pairwise",
"public"
],
"token_endpoint": "https://openid.sunet.se/token",
"federation_registration_endpoint": "https://op.umu.se/openid/fedreg",
"token_endpoint_auth_methods_supported": [
"private_key_jwt"
]
}
},
"jwks": {
"keys": [
{
"alg": "RS256",
"e": "AQAB",
"kid": "key1",
"kty": "RSA",
"n": "pnXBOusEANuug6ewezb9J_...",
"use": "sig"
}
]
},
"authority_hints": [
"https://edugain.org/federation"
]
}
Figure 47: Entity Configuration Response JWT Claims Set
10. Resolving the Trust Chain and Metadata
å¥ã® EntityïŒParty BïŒãšã®ä¿¡é Œé¢ä¿ã確ç«ããã EntityïŒParty AïŒã¯ãParty B ã® Entity Identifier ãšãTrust Anchor ã® Entity Identifier ã®äžèЧããã³ãããã®å ¬é眲åéµã®äžèЧãæã£ãŠããªããã°ãªããªãïŒMUSTïŒãParty A ã¯ãŸããParty B ãã 1 ã€ä»¥äžã® Trust Anchor ãžè³ãå°ãªããšã 1 æ¬ã®ä¿¡é Œã®é£éã確ç«ããããã«åå㪠Entity Statement ãååŸããªããã°ãªããªãïŒMUSTïŒããã®åŸãParty A 㯠Trust Chain ãç¬ç«ã«æ€èšŒããªããã°ãªããïŒMUSTïŒãè€æ°ã®æå¹ãª Trust Chain ãååšãããã€ã¢ããªã±ãŒã·ã§ã³ãå¿ èŠãšããå Žåã«ã¯ãå©çšãããã®ã 1 ã€éžæããªããã°ãªããªãïŒMUSTïŒã
Trust Chain ã®è©äŸ¡ãä¿¡é Œã§ãã第äžè ã«å§ä»»ããããã«ãå¥ã® EntityïŒParty BïŒãšã®ä¿¡é Œé¢ä¿ã確ç«ããã EntityïŒParty AïŒã¯ãSection 8.3 ã§å®çŸ©ããã resolve endpoint ã䜿çšããŠãããïŒMAYïŒã
10.1. Fetching Entity Statements to Establish a Trust Chain
ç¶æ³ã«ãã£ãŠã¯ãParty A 㯠Party B ã® Entity Configuration ãæž¡ãããããšãããã°ãèªèº«ã§ååŸããªããã°ãªããªãããšããããååŸãå¿ èŠãªå ŽåãParty B ã® Entity Identifier ã«åºã¥ããŠãSection 9 ã§èšè¿°ãããæé ãçšããã
次ã®ã¹ãããã¯ãauthority_hints ã«åæããã Intermediates
ã®äžèЧããã©ãããšã§ãããæªç¥ã® Trust Anchor ã§çµãã authority hints
ã¯ç¡èŠããå Intermediate ãã Entity Configuration ãèŠæ±ãããåãåã£ã
Entity Configuration ã« authority hint ãå«ãŸããŠããã°ããã®åŠçãç¹°ãè¿ãã
ãã¹ãŠã® Intermediates ãš Trust Anchor ã®äžèЧãåŸãããããSection 8.1 ã§å®çŸ©ãããããããã® fetch endpoint ãçšããŠãIntermediates ãš Party B ã«é¢ãã Entity Statement ãååŸããã
ã«ãŒããé²ãããããã§ãã¬ãŒã·ã§ã³åå è ã¯ããã®éçšã§æ¢ã«ååŸæžã¿ã® Entity Statement ãåååŸããŠã¯ãªããªãïŒMUST NOTïŒãã«ãŒããæ€åºãããå ŽåããããåŒãèµ·ããã authority hint ã¯äœ¿çšããŠã¯ãªããªãïŒMUST NOTïŒã
æåããæäœã¯ã1 ã€ä»¥äžã® Entity Statement ã®ãªã¹ããè¿ããèªå·±çœ²åããã Entity Statement ã§çµç«¯ããåãªã¹ã㯠Trust Anchor ã«ãã£ãŠçºè¡ãããã
Party B ããå°ãªããšã 1 ã€ã®ä¿¡é Œæžã¿ Trust Anchor ãžè³ããã¹ãååšããªãå Žåããªã¹ãã¯ç©ºã«ãªããParty B ã®æ å ±ã«ã€ããŠä¿¡é Œé¢ä¿ã確ç«ããæ¹æ³ã¯ãªããããã« Party A ãã©ã察åŠãããã¯ããã®ä»æ§ã®ã¹ã³ãŒãå€ã§ããã
以äžã®ã·ãŒã±ã³ã¹å³ã¯ãOP ã RP ã«ã€ããŠè¡ãä¿¡é Œè©äŸ¡ã®éã«ãRPãOPãããã³ Trust Anchor ã®éã§è¡ãããçžäºäœçšã衚ããåè¿°ã®èª¬æã«é¢é£ä»ãããšããã®å³ã«ãã㊠Party A 㯠OPãParty B 㯠RP ã§ããã
+-----+ +-----+ +--------------+
| RP | | OP | | Trust Anchor |
+-----+ +-----+ +--------------+
| | |
| Entity Configuration Request | |
|<------------------------------| |
| | |
| Entity Configuration Response | |
|------------------------------>| |
| | |
| | Evaluates authority_hints |
| |-------------------------- |
| | | |
| |<------------------------- |
| | |
| | Entity Configuration Request |
| |--------------------------------------->|
| | |
| | Entity Configuration Response |
| |<---------------------------------------|
| | |
| | Obtains Fetch Endpoint |
| |----------------------- |
| | | |
| |<---------------------- |
| | |
| | Request Subordinate Statement about RP |
| |--------------------------------------->|
| | |
| | Subordinate Statement about RP |
| |<---------------------------------------|
| | |
| | Evaluates the Trust Chain |
| |-------------------------- |
| | | |
| |<------------------------- |
| | |
| | Applies Metadata Policies |
| |-------------------------- |
| | | |
| |<------------------------- |
| | |
| | Applies Constraints |
| |-------------------- |
| | | |
| |<------------------- |
| | |
| | Derives the RP's Resolved Metadata |
| |----------------------------------- |
| | | |
| |<---------------------------------- |
Figure 48: Resolving Trust Chain and Metadata from the Perspective of an OP
10.2. Validating a Trust Chain
Section 4 ã§è¿°ã¹ããšãããTrust Chain ã¯é åºä»ãããã Entity Statement ã®ãªã¹ãããæãããããã£ãŠãParty A ã Entity Statement ã®éåãã©ã®ããã«å ¥æãããã«ããããããåã»ã¯ã·ã§ã³ã«ç€ºãããèŠåãçšããŠããããé©å㪠Trust Chain ã§ããããšãä»ããæ€èšŒããªããã°ãªããªãïŒMUSTïŒã
Trust Chain å ã® Entity Statement ã ES[j] ãšåŒã¶ããšã«ãããããã§ j = 0,...,i ã§ããã0 ã¯æåã® Entity Statement ã®ã€ã³ããã¯ã¹ãi ã¯æåŸã® Entity Statement ã® 0 å§ãŸãã€ã³ããã¯ã¹ã§ãããTrust Chain ãæ€èšŒããããã«ã次ã宿œããªããã°ãªããªãïŒMUSTïŒã
å Entity Statement ES[j]ïŒj = 0,..,iïŒã«ã€ããŠïŒ
- åœè©² statement ãå¿ é ã® Claims ããã¹ãŠå«ãããšã確èªããã
- iat ãéå»ã®å€ã§ããããšã確èªããã
- exp ãå°æ¥ã®å€ã§ããããšã確èªããã
- ES[0]ïŒTrust Chain ã® subject ã® Entity ConfigurationïŒã«ã€ããŠãiss == sub ã§ããããšã確èªããã
- ES[0] ã«ã€ããŠããã®çœ²åã ES[0]["jwks"] ã®å ¬ééµã§æ€èšŒã§ããããšã確èªããã
- å j = 0,...,i-1 ã«ã€ããŠãES[j]["iss"] == ES[j+1]["sub"] ã§ããããšã確èªããã
- å j = 0,...,i-1 ã«ã€ããŠãES[j] ã®çœ²åã ES[j+1]["jwks"] ã®å ¬ééµã§æ€èšŒã§ããããšã確èªããã
- ES[i]ïŒTrust Anchor ã® Entity ConfigurationïŒã«ã€ããŠãissuer ã Trust Anchor ã® Entity Identifier ãšäžèŽããããšã確èªããã
- ES[i] ã«ã€ããŠããã®çœ²åã Trust Anchor ã®å ¬ééµã§æ€èšŒã§ããããšã確èªããã
çœ²åæ€èšŒã¯ãstatement ã®æ£ãããã¿ã€ã ã¹ã¿ã³ãã®æ€èšŒãããã¯ããã«ã³ã¹ããé«ãæäœã§ããããã®ãããå®è£ è ã¯ãä»ã®ãã§ãã¯ããã¹ãŠçµãããŸã§çœ²åæ€èšŒãè¡ããªãããšãéžæããŠãããïŒMAYïŒã
ãã§ãã¬ãŒã·ã§ã³åå è ã¯ãSection 10.4 ã«åŸããæéåãã«ãªããŸã§ Entity Statement ããã³çœ²åæ€èšŒçµæããã£ãã·ã¥ããŠãããïŒMAYïŒã
äžèšã®æ€èšŒã®åŸãSection 6.1.4 ã§è¿°ã¹ããšãããmetadata ã Trust Chain ã® subject ã«è§£æ±ºããªããã°ãªããªãïŒMUSTïŒãããã«ãSection 6.2 ã§èª¬æãããšãããTrust Chain ã®å Subordinate Statement ããšã« constraints ãé©çšããªããã°ãªããªãïŒMUSTïŒã
10.3. Choosing One of the Valid Trust Chains
è€æ°ã®æå¹ãª Trust Chain ãèŠã€ãã£ãå ŽåãParty A ã¯ã©ãã䜿çšãããæ±ºããå¿ èŠããããåçŽãªèŠåã® 1 ã€ã¯ãé·ãé£éããçãé£éãåªå ããããšã§ããããã§ãã¬ãŒã·ã§ã³åå è ã¯ãããŒã«ã«ããªã·ãŒã«åŸãä»ã®èŠåã«åŸã£ãŠãããïŒMAYïŒã
10.4. Calculating the Expiration Time of a Trust Chain
Trust Chain ã®å Entity Statement ã¯çœ²åããããã€æå¹æéïŒexpïŒãæããªããã°ãªããªãïŒMUSTïŒãTrust Chain å šäœã®æå¹æéã¯ããã® Trust Chain å ã«ããïŒexpïŒå€ã®æå°å€ã§ããã
10.5. Transient Trust Chain Validation Errors
ãã§ãã¬ãŒã·ã§ã³ã®ããããžãæŽæ°ãããŠããå Žåãããšãã° Leaf Entity çŸ€ãæ°ãã Intermediate Entity ã«ç§»åããããšããTrust Chain ã®æ€èšŒãäžæçã«å€±æããããšããããäžå®æéçµéåŸã«å詊è¡ããã°ãç¶æ³ãè§£æ¶ãããå Žåãããã
10.6. Resolving the Trust Chain and Metadata with a Resolver
äžèšã®æ¹æ³ã§ EntityïŒParty BïŒã® Trust Chain ã解決ããå¥ã®æ¹æ³ãšããŠãSection 8.3 ã§èª¬æãã resolve endpoint ãçšããæ¹æ³ãããããšã«æ³šæãããããããã«ãããä¿¡é Œé¢ä¿ã確ç«ããã EntityïŒParty AïŒãèªåã§è¡ããªããã°ãªããªãäœæ¥ããresolver ã«ä»£è¡ãããããšãã§ããã
11. Updating Metadata, Key Rollover, and Revocation
ãã®ä»æ§ã¯ãmetadata ãšå ¬ééµãåæ»ã«æŽæ°ã§ããããã«ããã
Section 10.4 ã§è¿°ã¹ããšãããå Trust Chain ã«ã¯æå¹æéãããããã§ãã¬ãŒã·ã§ã³åå è ã¯ãTrust Chain ãæéåãã«ãªã£ããšãã«ããããæŽæ°ã§ãããããµããŒãããªããã°ãªããªãïŒMUSTïŒãåå è ãã©ã®ãããã®é »åºŠã§ Trust Chain ãåè©äŸ¡ãããã¯ãäœããå€åããããšãã©ãã ãæ©ãæ€ç¥ããããã«äŸåããã
11.1. Protocol Key Rollover
Leaf Entity ã jwks ãçšã㊠metadata ã«å ¬ééµãå ¬éããŠããå Žåããã® Entity Configuration ã®æå¹æéãçšããŠãåä¿¡åŽ Entity ãæŽæ°ãããå ¬ééµã»ãããååŸããé »åºŠãå¶åŸ¡ã§ããã
11.2. Key Rollover for a Trust Anchor
Trust Anchor ã¯ãèªèº«ã«ã€ããŠã® Entity Configuration ãå ¬éããªããã°ãªããªãïŒMUSTïŒããã® Entity Configuration ã«èšå®ããæå¹æéïŒexpïŒã¯ããã§ãã¬ãŒã·ã§ã³åå è ã劥åœãªééã§åååŸããããšã確å®ã«ããããéžã°ããã¹ãã§ããïŒSHOULDïŒãTrust Anchor ã眲åéµãããŒã«ãªãŒããŒããéã«ã¯ã次ãè¡ãå¿ èŠãããã
- æ°ããéµããTrust Anchor ã®çœ²åéµã衚ã jwks ã«è¿œå ããïŒãã® Entity Configuration å ã§ïŒã
- ååã«é·ãæéãå€ãéµãçšã㊠Entity Configuration ãš Entity Statement ã®çœ²åãç¶ç¶ãããããã¯ããã¹ãŠã® Subordinates ãæ°ããéµãååŸã§ããããã«ããããã§ããã
- æ°ããéµã§çœ²åããããåãæ¿ããã
- 劥åœãªæéã®åŸãå€ãéµãåé€ãããäœã劥åœãªæéãšã¿ãªããã¯ãTrust Anchor ã®ã»ãã¥ãªãã£ãããã¡ã€ã«ãšãªã¹ã¯è©äŸ¡ã«äŸåããã
11.3. Redundant Retrieval of Trust Anchor Keys
ãã§ãã¬ãŒã·ã§ã³éçšè ã管çãã Trust Anchor ã®å ¬ééµãååŸããææ®µããåœè©² Trust Anchor ã® Entity Configuration ãšã¯ç¬ç«ã«æäŸããããšãæšå¥šãããïŒRECOMMENDEDïŒãããã¯ãEntity Configuration ããå ¬ééµãååŸããåºç€ãšãªã Web PKI [RFC9525] ã€ã³ãã©ã䟵害ãããå Žåã«åããåé·æ§ãæäŸããããšãæå³ããŠããã
ãã§ãã¬ãŒã·ã§ã³éçšè ãæå®ããç¬ç«ã®ä»çµã¿ãéããŠååŸããéµã¯ãTrust Anchor ã® Entity Configuration ãéããŠååŸããéµãšæ¯èŒãããã¹ãã§ããïŒSHOULDïŒãäžèŽããªãå Žåãäž¡æ¹ãåååŸããã¹ãã§ããïŒSHOULDïŒãããã§ãäžèŽããªãå Žåã¯ãã»ãã¥ãªãã£äžãŸãã¯èšå®äžã®åé¡ã瀺åãããããããå Žåã«åãã¹ãé©åãªæ¯æ£æé ã¯ããã§ãã¬ãŒã·ã§ã³éçšè ãå®ããã¹ãã§ããïŒSHOULDïŒã
11.4. Revocation
ãã§ãã¬ãŒã·ã§ã³ã®åå è ã¯å®æçãã€é »ç¹ã« Trust Chain ã確èªããããšãæ³å®ãããããããã®ä»æ§ã¯å€±å¹ïŒrevocationïŒæç¶ãå®çŸ©ããªããç¹å®ã®ãã§ãã¬ãŒã·ã§ã³ã¯å¥ã®éžæãããŠãããïŒMAYïŒããã®å Žåã¯èªåã®å€±å¹æç¶ãå®çŸ©ããªããã°ãªããªãã
12. OpenID Connect Client Registration
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããã®ä»æ§ã§å®çŸ©ãããä»çµã¿ãçšããŠãRP ãš OP ã®éã«ãäºåã®æç€ºçãªèšå®ãç»é²ããªãç¶æ ã§ãä¿¡é Œé¢ä¿ã確ç«ããæ¹æ³ã説æãããSection 10 ã«åŸããTrust Chain ãçšãã 2 ã€ã® client ç»é²æ¹åŒãAutomatic Registration ãš Explicit Registration ãå®çŸ©ããããã§ãã¬ãŒã·ã§ã³ã¯ãclient ç»é²ã«ä»ã®é©åãªæ¹åŒãçšããŠãããã
OpenID Connect Entity ãå«ããã§ãã¬ãŒã·ã§ã³ã¯ããµããŒããã client ç»é²æ¹åŒã«ã€ããŠåæããã¹ãã§ããïŒSHOULDïŒã
Automatic Registration ãš Explicit Registration ã¯ã©ã¡ãããOpenID Connect 以å€ã® OAuth 2.0 ãããã¡ã€ã«ã«ã䜿çšã§ããç¹ã«æ³šæããããããã®å ŽåãEntity Type Identifier ãšã㊠openid_relying_party ããã³ openid_provider ãçšãã代ããã«ãoauth_client ããã³ oauth_authorization_serverïŒãŸãã¯ã䜿çšããç¹å®ã® OAuth 2.0 ãããã¡ã€ã«ã«å¯ŸããŠå®çŸ©ãããä»ã® Entity Type IdentifierïŒãçšããããšã«ãªãã
äž¡æ¹åŒãçšããéãtrust_anchor_hints å€ãçšããŠãRP ãš OP ãå ±æãã Trust Anchor ãç¹å®ã§ãããTrust Chain ãæ§ç¯ãããšããå¯èœã§ããã°ãRP 㯠OP ãšå ±éã® Trust Anchor ãéžã¶ã¹ãã§ããïŒSHOULDïŒã
12.1. Automatic Registration
Automatic Registration ã«ãããRP 㯠OP ãšã®äºåã®ç»é²ã¹ããããªãã« Authentication Request ãè¡ãããOP ã¯ãAuthentication Request ã«å«ãŸãã Client ID ãã RP ã® Entity Configuration ã解決ããSection 10 ã§å®çŸ©ãããæé ã«åŸãã
RP 㯠Authentication Request ãéä¿¡ããåã«ãSection 10 ã«åŸã£ãŠ OP ã® Trust Chain ãš metadata ã®è§£æ±ºãè¡ããªããã°ãªããªãïŒMUSTïŒãè§£æ±ºã«æåããªãã£ãå ŽåãRP 㯠OP ãšã®ãã以äžã®ããåãã詊ã¿ãŠã¯ãªããªãïŒMUST NOTïŒã
Automatic Registration ã«ã¯æ¬¡ã®ç¹åŸŽãããã
- OP ãšã®ãã¹ãŠã®ããåãã«ãããŠãRP ã¯èªèº«ã® Entity Identifier ã Client ID ãšããŠçšãããOP ã¯ãSection 9 ã§è¿°ã¹ããšãããEntity Identifier ããå°åºããã URL ãã RP ã® Entity Configuration ãååŸããã
- Authentication Request ã®åã«ç»é²ã¹ãããããªããããAutomatic Registration ãçšããå Žåããªã¯ãšã¹ãã®èªèšŒã«ã¯é察称æå·ãçšããªããã°ãªããªãïŒMUSTïŒãé察称æå·ããªã¯ãšã¹ãã®èªèšŒã«çšãããããããOP 㯠RP ã« Client Secret ãå²ãåœãŠããç»é²ããã»ã¹ã®çµæãšããŠãããè¿ãããšããªãã
- Automatic Registration ããµããŒããã OP ã¯ãclient_registration_types_supported metadata ãã©ã¡ãŒã¿ã« automatic ããŒã¯ãŒããå«ããªããã°ãªããªãïŒMUSTïŒã
12.1.1. Authentication Request
Authentication Request ã¯ãOpenID Connect Core 1.0 [OpenID.Core] ã® Section 6 ããã³ The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR) [RFC9101] ã«èšèŒããããšãããRequest Object ã倿ž¡ããŸãã¯åç §æž¡ãã§æž¡ãããšã«ããå®è¡ãããããããã¯ãPushed Authorization Requests [RFC9126] ã«èšèŒããã pushed authorization request ãçšããã
Authentication Request ã¯ãäžèšã®ããããã®æ¹æ³ãçšããŠãèŠæ±ãã Entity ãåœè©² Entity ã® RP éµã管çããŠããããšã瀺ããªããã°ãªããªãïŒMUSTïŒãããã瀺ããªã Authentication Request ã®è©Šè¡ã¯æåŠãããªããã°ãªããªãïŒMUSTïŒã
ãããã€ã¡ã³ãã¯ãåç §æž¡ãïŒrequest_uri request ãã©ã¡ãŒã¿ãçšããïŒã«ãã request object ã®åãæž¡ãããµããŒãããªãããšãéžãã§ãããïŒMAYïŒããããèš±ããšãæ»æè ã OAuth 2.0 Authorization Server ã OpenID Provider ã«å¯ŸããŠãµãŒãã¹æåŠæ»æãè¡ãããããªãããã§ãããããã¯ãrequest_uri_parameter_supported OP metadata ãã©ã¡ãŒã¿ãå€ false ãšããŠçšããããšã§å®çŸã§ãããrequest ãã©ã¡ãŒã¿ã倧ããããŠã¯ãšãªãã©ã¡ãŒã¿ãšããŠå€æž¡ãããã®ãå®éçã§ãªãå Žåã代ããã« HTTP POST ãŸã㯠Pushed Authorization Request [RFC9126] ãéããŠéä¿¡ã§ããããã㯠Section 12.1.1.2 ã«èšèŒãããšããã§ããã
12.1.1.1. Using a Request Object
Request Object ã Authorization Endpoint ãŸã㯠Pushed Authorization Request Endpoint ã§äœ¿çšãããå Žåãrequest ãã©ã¡ãŒã¿ã®å€ã¯ JWT ã§ããããã® Claims 㯠OpenID Connect Core 1.0 [OpenID.Core] ã® Section 3.1.2 ã§æå®ããã request ãã©ã¡ãŒã¿ã§ãããJWT ã¯çœ²åãããªããã°ãªããïŒMUSTïŒãæå·åããŠãããïŒMAYïŒãRequest Object ã§ã¯æ¬¡ã®ãã©ã¡ãŒã¿ã䜿çšãããã
aud
å¿ é ïŒREQUIREDïŒã"aud"ïŒaudienceïŒã®å€ã¯ OP ã® Entity Identifier ã§ãªããã°ãªããïŒMUSTïŒãä»ã®å€ãå«ãã§ã¯ãªããªãïŒMUST NOTïŒã
client_id
å¿ é ïŒREQUIREDïŒãclient_id ã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒã
iss
å¿ é ïŒREQUIREDïŒãiss ã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒã
sub
ååšããŠã¯ãªããªãïŒMUST NOTïŒããã㯠private_key_jwt client èªèšŒã®ããã® statement ã®åå©çšãé²ãã
jti
å¿ é ïŒREQUIREDïŒãJWT IDãJWT ã®äžæãªèå¥åã§ãããRequest Object ã®åå©çšãé²ãããã«çšãããããRequest Object ã¯ãåœäºè éã§åå©çšæ¡ä»¶ã亀æžãããå Žåãé€ãã1 åãã䜿çšããŠã¯ãªããªãïŒMUSTïŒããã®ãããªäº€æžã¯ãã®ä»æ§ã®ã¹ã³ãŒãå€ã§ããã
exp
å¿ é ïŒREQUIREDïŒãæ°å€ãåŠçã®ããã«åãä»ããŠã¯ãªããªãïŒMUST NOTïŒæéã瀺ãæå¹æéããã㯠[RFC7519] ã«åŸãããšããã¯ããã®ç§æ°ïŒSeconds Since the EpochïŒãšããŠè¡šçŸãããã
iat
ä»»æïŒOPTIONALïŒãæ°å€ããã® Request Object ãçºè¡ãããæå»ããã㯠[RFC7519] ã«åŸãããšããã¯ããã®ç§æ°ïŒSeconds Since the EpochïŒãšããŠè¡šçŸãããã
trust_chain
ä»»æïŒOPTIONALïŒãRP ããªã¯ãšã¹ããè¡ãäž»äœããéžæããã Trust Anchor ãŸã§ã® Trust Chain ãæ§æãã Entity Statement ã®ã·ãŒã±ã³ã¹ãå«ãé åãRP ãš OP ãåäžã®ãã§ãã¬ãŒã·ã§ã³ã®äžéšã§ããå ŽåãRP 㯠OP ãšå ±éã® Trust Anchor ãéžæããªããã°ãªããªãïŒMUSTïŒãããã§ãªãå ŽåãRP ã¯äœ¿çšãã Trust Anchor ãèªç±ã«éžæã§ããã
NOTE: Section 4.3 ã§æå®ããã trust_chain header ãã©ã¡ãŒã¿ã®äœ¿çšã¯ããã®ãã©ã¡ãŒã¿ã®äœ¿çšããæšå¥šãããïŒRECOMMENDEDïŒãããã¯æŽå²ççç±ã«ããæ®ãããŠããã
12.1.1.1.1. Authorization Request with a Trust Chain
èªèšŒãªã¯ãšã¹ãã§ trust_chain header ãã©ã¡ãŒã¿ã䜿çšãããå ŽåãRelying Party ã¯ãéžæãã Trust Anchor ãšã®ä¿¡é Œé¢ä¿ã蚌æãã Entity Statement ã®ã·ãŒã±ã³ã¹ã OP ã«ç¥ãããã
Trust Chain ã¯ãµã€ãºã倧ãããããHTTP POST ã¡ãœãããrequest_uriããŸã㯠Pushed Authorization Request [RFC9126] ããªã¯ãšã¹ãã«çšããå¿ èŠãããå Žåãããã
以äžã¯ãRequest Object ã«ããã header ãã©ã¡ãŒã¿ãš JWT Claims Set ã®ãèŠç¯ã§ã¯ãªãïŒnon-normativeïŒäŸã§ããã
{
"typ": "oauth-authz-req+jwt",
"alg": "RS256",
"kid": "that-kid-which-points-to-a-jwk-contained-in-the-trust-chain",
"trust_chain" : [
"eyJhbGciOiJSUzI1NiIsImtpZCI6Ims1NEhRdERpYnlHY3M5WldWTWZ2aUhm ...",
"eyJhbGciOiJSUzI1NiIsImtpZCI6IkJYdmZybG5oQU11SFIwN2FqVW1BY0JS ...",
"eyJhbGciOiJSUzI1NiIsImtpZCI6IkJYdmZybG5oQU11SFIwN2FqVW1BY0JS ..."
]
}
.
{
"aud": "https://op.example.org",
"client_id": "https://rp.example.com",
"exp": 1589699162,
"iat": 1589699102,
"iss": "https://rp.example.com",
"jti": "4d3ec0f81f134ee9a97e0449be6d32be",
"nonce": "4LX0mFMxdBjkGmtx7a8WIOnB",
"redirect_uri": "https://rp.example.com/authz_cb",
"response_type": "code",
"scope": "openid profile email address phone",
"state": "YmX8PM9I7WbNoMnnieKKBiptVW0sP2OZ"
}
Figure 49: Request Object JWT Claims Set
以äžã¯ãrequest ãã©ã¡ãŒã¿ãçšãã Authentication Request ã®ãèŠç¯ã§ã¯ãªãïŒnon-normativeïŒäŸã§ããïŒå€ã®éäžã®æ¹è¡ã¯è¡šç€ºç®çã®ã¿ïŒã
Host: server.example.com
GET /authorize?
redirect_uri=https%3A%2F%2Frp.example.com%2Fauthz_cb
&scope=openid+profile+email+address+phone
&response_type=code
&client_id=https%3A%2F%2Frp.example.com
&request=eyJ0eXAiOiJvYXV0aC1hdXRoei1yZXErand0IiwiYWxnIjoiUlMyNTYiLCJ
raWQiOiJOX19EOThJdkI4TmFlLWt3QTZuck90LWlwVGhqSGtEeDM3bmljRE1IM04
0In0.
eyJhdWQiOiJodHRwczovL29wLmV4YW1wbGUub3JnIiwiY2xpZW50X2lkIjoiaHR0
cHM6Ly9ycC5leGFtcGxlLmNvbSIsImV4cCI6MTU4OTY5OTE2MiwiaWF0IjoxNTg5
Njk5MTAyLCJpc3MiOiJodHRwczovL3JwLmV4YW1wbGUuY29tIiwianRpIjoiNGQz
ZWMwZjgxZjEzNGVlOWE5N2UwNDQ5YmU2ZDMyYmUiLCJub25jZSI6IjRMWDBtRk14
ZEJqa0dtdHg3YThXSU9uQiIsInJlZGlyZWN0X3VyaSI6Imh0dHBzOi8vcnAuZXhh
bXBsZS5jb20vYXV0aHpfY2IiLCJyZXNwb25zZV90eXBlIjoiY29kZSIsInNjb3Bl
Ijoib3BlbmlkIHByb2ZpbGUgZW1haWwgYWRkcmVzcyBwaG9uZSIsInN0YXRlIjoi
WW1YOFBNOUk3V2JOb01ubmllS0tCaXB0Vlcwc1AyT1oiLCJ0cnVzdF9jaGFpbiI6
WyJleUpoYkdjaU9pSlNVekkxTmlJc0ltdHBaQ0k2SW1zMU5FaFJkRVJwWW5sSFkz
TTVXbGRXVFdaMmFVaG0gLi4uIiwiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJ
NklrSllkbVp5Ykc1b1FVMTFTRkl3TjJGcVZXMUJZMEpTIC4uLiIsImV5SmhiR2Np
T2lKU1V6STFOaUlzSW10cFpDSTZJa0pZZG1aeWJHNW9RVTExU0ZJd04yRnFWVzFC
WTBKUyAuLi4iXX0.
Rv0isfuku0FcRFintgxgKDk7EnhFkpQRg3Tm6N6fCHAHEKFxVVdjy4
9JboJtxKcQVZKN9TKn3lEYM1wtF1e9PQrNt4HZ21ICfnzxXuNx1F5SY1GXCU2n2y
FVKtz3N0YkAFbTStzy-sPRTXB0stLBJH74RoPiLs2c6dDvrwEv__GA7oGkg2gWt6
VDvnfDpnvFi3ZEUR1J8MOeW_VFsayrT9sNjyjsz62Po4LzvQKQMKxq0dNwPNYuuS
fUmb-YvmFguxDb3weYl8WS-
48EIkP1h4b_KGU9x9n7a1fUOHrS02ATQZmaL8jUil7yLJqx5MiCsPr4pCAXV0doA
4pwhs_FIw HTTP/1.1
Figure 50: Authentication Request Using Request Object
trust_chain header ãã©ã¡ãŒã¿ãå«ãŸããå Žåãpeer_trust_chain header ãã©ã¡ãŒã¿ããRP ãéžæãã Trust Anchor ãŸã§ã® OP åŽã® Trust Chain ãæäŸããããã«å«ããŠãããïŒMAYïŒãPeer Trust Chain ã«ã¯ãç»é²æã« RP ã OP ã«äœ¿çšãããããšéžãã metadata ãš policy ã®å€ãå«ãŸãããäž¡æ¹ã® Trust Chain ã§éžæããã Trust Anchor ã¯åäžã§ãªããã°ãªããªãïŒMUSTïŒãäž¡æ¹ã® Trust Chain ãå«ããããšã§ã[App-Fed-Linkage] ã§å®çŸ©ããã Federation Integrity ãš Metadata Integrity ã®æ§è³ªãéæã§ããã
12.1.1.1.2. Processing the Authentication Request
OP ãåä¿¡ãã Authentication Request ãåŠçããéãOP ã OpenID Federation ããµããŒãããåä¿¡ãã Client ID ãæå¹ãª URL ã§ãããã〠OP ããã® Client ID ãæ¢ç¥ã® client ãšããŠç»é²ããŠããªãå ŽåãOP ã¯ãªã¯ãšã¹ãå ã«é¢ãã Trust Chain ã解決ããã¹ãã§ããïŒSHOULDïŒã
RP ã¯ãSection 4.3 ã§å®çŸ©ããã trust_chain header ãã©ã¡ãŒã¿ãçšããŠãéžæãã Trust Anchor ãŸã§ã®èªèº«ããã® Trust Chain ã Request Object ã«å«ããŠãããïŒMAYïŒãOP ã RP ã«å¯Ÿããæå¹ãªç»é²ãæããªãããŸãã¯ç»é²ãæéåãã§ããå ŽåãOP ã¯åä¿¡ãã Trust Chain ããRP ã® Entity ãã Trust Anchor ãžè³ãã©ã®ãã¹ããã©ãã¹ããã®ãã³ããšããŠçšããŠãããïŒMAYïŒãOP ã¯ãç¹ã« RP ã® Entity Configuration ã«è€æ°ã® authority hints ãå«ãŸããå Žåã«ãæäŸããã Trust Chain å ã® statement ãè©äŸ¡ã㊠Federation Entity Discovery æé ãããå¹ççã«ããŠãããïŒMAYïŒãOP ãæ¢ã« RP ã«å¯Ÿããæå¹ãªç»é²ãæã€å Žåãåä¿¡ãã Trust Chain ãçšã㊠RP ã®ç»é²ãæŽæ°ããŠãããïŒMAYïŒã
OP ã¯ããã¹ãŠã® statement ãæ€èšŒãããã Trust Chain ã«äŸæ ã§ããå Žåããããããã¯ãstatement ã URL ããååŸãããå Žåã§ããRequest Object ã® trust_chain request ãã©ã¡ãŒã¿ã«ããæäŸãããå Žåã§ãåæ§ã§ãããã©ã¡ãã®å Žåã§ããOP 㯠Trust ChainïŒå«ãŸãããã¹ãŠã® Entity StatementïŒãå®å šã«æ€èšŒããªããã°ãªããªãïŒMUSTïŒã
åæ§ã«ãRP ã¯ãSection 4.4 ã§å®çŸ©ããã peer_trust_chain header ãã©ã¡ãŒã¿ãçšããŠãRequest Object ã«ãéžæãã Trust Anchor ãŸã§ã® OP ããã® Trust Chain ãå«ããŠãããïŒMAYïŒãOP ã¯ãç»é²ã®éã« RP ãéžæãã metadata ãš policy ã®å€ã䜿çšããã¹ãã§ããïŒSHOULDïŒãäž¡æ¹ã® Trust Chain ãå«ããããšã§ã[App-Fed-Linkage] ã§å®çŸ©ããã Federation Integrity ãš Metadata Integrity ã®æ§è³ªãéæã§ããã
RP ã Request Object ã« trust_chain header ãã©ã¡ãŒã¿ãå«ããªãå ŽåãOP ãäœããã®çç±ã§æäŸããã Trust Chain ãçšããªããšå€æããå ŽåããŸã㯠OP ããã®æ©èœããµããŒãããªãå ŽåãOP 㯠Section 10.1 ã«èšèŒã®ãšãããRP ã® Entity Configuration ããéå§ããŠå¯èœãª Trust Chain ãæ€èšŒããEntity Type ã openid_relying_party ã® RP metadata ã解決ããªããã°ãªããªãïŒMUSTïŒã
OP ã¯ããã«ãRP ã® Resolved Metadata ã client metadata 仿§ OpenID Connect Dynamic Client Registration 1.0 [OpenID.Registration] ã«é©åããŠããããšãæ€èšŒããã¹ãã§ããïŒSHOULDïŒã
OP ã RP ã® metadata ãåŸãããclient ãå®éã« Authentication Request ãéã£ãäž»äœã§ããããšãæ€èšŒããªããã°ãªããªãïŒMUSTïŒãããã¯ãopenid_relying_party ã® Entity Type ã«å¯Ÿãã metadata ã« client ãå ¬éããŠããéµçŽ æãçšã㊠Request Object ã®çœ²åãæ€èšŒããããšã«ããè¡ãã眲åãæ€èšŒã§ããªãå ŽåãOP ã¯ãªã¯ãšã¹ããæåŠããªããã°ãªããªãïŒMUSTïŒã
12.1.1.2. Using Pushed Authorization
Pushed Authorization Requests [RFC9126] ã¯ãèªèšŒãªã¯ãšã¹ãã®ãã©ã¡ãŒã¿ã AS ã«çŽæ¥éä¿¡ãã1 åéã䜿çšã§ãã request_uri ãšäº€æããããã®çžäºéçšå¯èœãªæ¹æ³ãæäŸãããæšæºã® PAR metadata ãã©ã¡ãŒã¿ã¯ããã®å©çšã瀺ãããã« RP ãš OP ã® metadata ã§äœ¿çšãããã
Automatic Registration ã§ PAR ãçšããå ŽåãSection 12.1.1.1 ã§èšèŒãããšããã® Request Object ã PAR ãã©ã¡ãŒã¿ãšããŠäœ¿çšããªããã°ãªããªãïŒMUSTïŒããŸãã¯ãPAR endpoint åãã® client èªèšŒæ¹åŒãšããŠãRP ã®ããããã®ç§å¯éµã®ææã蚌æãããã®ã䜿çšããªããã°ãªããªãïŒMUSTïŒãããã«ã察å¿ããå ¬ééµã¯ Entity ã® RP JWK Set ã«ååšããªããã°ãªããªãïŒMUSTïŒã
é©çšå¯èœãª PAR client èªèšŒæ¹åŒã¯æ¬¡ã® 2 ã€ã§ããã
- OpenID Connect Core 1.0 [OpenID.Core] ã® Section 9 ã«ãã private_key_jwt ãšããŠèšè¿°ããã JWT Client authenticationããã®å Žåãclient èªèšŒ JWT ã® audience 㯠OP ã® Entity Identifier ã§ãªããã°ãªããïŒMUSTïŒãä»ã®å€ãå«ãã§ã¯ãªããªãïŒMUST NOTïŒã
- [RFC8705] ã® Section 2.2 ã§èšè¿°ãããèªå·±çœ²åèšŒææžãçšãã mTLSããã®å Žåãèªå·±çœ²åèšŒææžã¯ Entity ã® RP JWK Set ã«ããéµã® x5c Claim ã®å€ãšããŠååšããªããã°ãªããªãïŒMUSTïŒããã®å ŽåããµãŒããŒã¯èšŒææžãã§ãŒã³ã®æ€èšŒãçç¥ããªããã°ãªããªãïŒMUSTïŒã
OP ã«å¯Ÿãã Pushed Authorization Request ã¯æ¬¡ã®ããã«ãªãã
POST /par HTTP/1.1
Host: op.example.org
Content-Type: application/x-www-form-urlencoded
redirect_uri=https%3A%2F%2Frp.example.com%2Fauthz_cb
&scope=openid+profile+email+address+phone
&response_type=code
&nonce=4LX0mFMxdBjkGmtx7a8WIOnB
&state=YmX8PM9I7WbNoMnnieKKBiptVW0sP2OZ
&client_id=https%3A%2F%2Frp.example.com
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3A
client-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6ImRVTjJ
hMDF3Umtoa1NXcGxRVGh2Y1ZCSU5VSXdUVWRPVUZVMlRtVnJTbW
hFUVhnelpYbHBUemRRTkEifQ.
eyJzdWIiOiAiaHR0cHM6Ly9ycC5leGFtcGxlLmNvbSIsICJpc3M
iOiAiaHR0cHM6Ly9ycC5leGFtcGxlLmNvbSIsICJpYXQiOiAxNT
g5NzA0NzAxLCAiZXhwIjogMTU4OTcwNDc2MSwgImF1ZCI6ICJod
HRwczovL29wLmV4YW1wbGUub3JnIiwgImp0aSI6ICIzOWQ1YWU1
NTJkOWM0OGYwYjkxMmRjNTU2OGVkNTBkNiJ9.
oUt9Knx_lxb4V2S0tyNFH
CNZeP7sImBy5XDsFxv1cUpGkAojNXSy2dnU5HEzscMgNW4wguz6
KDkC01aq5OfN04SuVItS66bsx0h4Gs7grKAp_51bClzreBVzU4g
_-dFTgF15T9VLIgM_juFNPA_g4Lx7Eb5r37rWTUrzXdmfxeou0X
FC2p9BIqItU3m9gmH0ojdBCUX5Up0iDsys6_npYomqitAcvaBRD
PiuUBa5Iar9HVR-H7FMAr7aq7s-dH5gx2CHIfM3-qlc2-_Apsy0
BrQl6VePR6j-3q6JCWvNw7l4_F2UpHeanHb31fLKQbK-1yoXDNz
DwA7B0ZqmuSmMFQ
Figure 51: Pushed Authorization Request to the OP
12.1.1.2.1. Processing the Pushed Authentication Request
Section 12.1.1.1.2 ã§æå®ããèŠä»¶ã¯ãPushed Authorization Requests [RFC9126] ã«ãé©çšãããã
OP ã RP ã® metadata ãååŸããããopenid_relying_party Entity Type Identifier ã«å¯ŸããŠå ¬éãããŠããéµã client ã䜿çšããŠããããšãæ€èšŒããªããã°ãªããªãïŒMUSTïŒãRP ã®æ€èšŒã«å€±æããå ŽåãOP ã¯ãªã¯ãšã¹ããæåŠããªããã°ãªããªãïŒMUSTïŒã
æ€èšŒææ®µã¯ã䜿çšããã client èªèšŒæ¹åŒã«äŸåããã
private_key_jwt
ãã®æ¹åŒã䜿çšãããå ŽåãOP ã¯ãRP ãèªèº«ã® metadata ã«å ¬éããŠããéµçŽ æãçšããŠãçœ²åæžã¿ JWT ã®çœ²åãæ€èšŒãããèªèšŒãæåããå Žåãç»é²ã¯æå¹ã§ãããçœ²åæžã¿ JWT ã® audience 㯠Authorization Server ã® Entity Identifier ã§ãªããã°ãªããïŒMUSTïŒãä»ã®å€ãå«ãã§ã¯ãªããªãïŒMUST NOTïŒã
self_signed_tls_client_auth
èªå·±çœ²åèšŒææžãçšã㊠mTLS ã䜿çšããå Žåããã®èšŒææžã¯ãRP ã®éµãå«ã JWK Set å ã®éµã® x5c Claim ã®å€ãšããŠååšããªããã°ãªããªãïŒMUSTïŒã
12.1.2. Successful Authentication Response
Automatic Registration ãçšããå Žåã«ãããæåããèªèšŒãªã¯ãšã¹ããžã®ã¬ã¹ãã³ã¹ã¯ã[OpenID.Core] ã§å®çŸ©ãããæåããèªèšŒã¬ã¹ãã³ã¹ãšåäžã§ãããããã¯ãClient ã® redirection URI ã«éä¿¡ãããæåãã OAuth 2.0 èªå¯ã¬ã¹ãã³ã¹ã§ããã
12.1.3. Authentication Error Response
Automatic Registration ãçšããå Žåã«ããã倱æããèªèšŒãªã¯ãšã¹ããžã®ãšã©ãŒã¬ã¹ãã³ã¹ã¯ã[OpenID.Core] ã§å®çŸ©ãããèªèšŒãšã©ãŒã¬ã¹ãã³ã¹ãšåäžã§ãããããã¯ããªã¯ãšã¹ãã« Pushed Authorization Request [RFC9126] ãçšããããå Žåãé€ããClient ã® redirection URI ã«éä¿¡ããã OAuth 2.0 èªå¯ãšã©ãŒã¬ã¹ãã³ã¹ã§ããã
ãã ãã[OpenID.Core] ããã³ [RFC6749] ã®åæ¹ãšåæ§ã«ãredirection URI ãç¡å¹ãªå Žåã¯ãªãã€ã¬ã¯ããè¡ã£ãŠã¯ãªããïŒMUST NOTïŒã代ããã« Authorization Server ã¯ãŠãŒã¶ãŒã€ã³ã¿ãã§ãŒã¹äžã§ End-User ã«ãšã©ãŒãç¥ãããã¹ãã§ããïŒSHOULDïŒãAuthorization Server ã¯ãredirection URI ã open redirector ã®æ§æèŠçŽ ãšããŠå©çšãããŠããå¯èœæ§ããããšå€æããçç±ãããå Žåã«ããåæ§ã«è¡ãããšãéžæããŠãããïŒMAYïŒã
OP ã RP ãšã®ä¿¡é Œé¢ä¿ã®ç¢ºç«ã«å€±æããå ŽåããŸã㯠RP ã® metadata ãç¡å¹ã§ãããããã㯠metadata policy ãšç«¶åããŠãããšå€æããå ŽåãOP 㯠redirection URI ãç¡å¹ãšããŠæ±ãããªãã€ã¬ã¯ããè¡ã£ãŠã¯ãªããªãïŒMUST NOTïŒãããã¯ãä¿¡é Œé¢ä¿ã®ç¢ºç«ã«å€±æããçç±ã«é¢ãããšã©ãŒã³ãŒãã§ãã invalid_trust_anchorãinvalid_trust_chainãinvalid_metadata ã¯ãPushed Authorization Request [RFC9126] ã®ãšã©ãŒã¬ã¹ãã³ã¹ãšããŠã®ã¿è¿ãããã¹ãã§ããïŒSHOULDïŒãClient ã® redirection URI ã«è¿ãããã¹ãã§ã¯ãªãããšãæå³ããã
IANA ã®ãOAuth Extensions Error Registryãã¬ãžã¹ã㪠[IANA.OAuth.Parameters] ã«å«ãŸãããšã©ãŒã³ãŒãã«å ããŠããã®ä»æ§ã¯ Section 8.9 ã®ãšã©ãŒã³ãŒããå®çŸ©ããŠããããããã䜿çšããŠãããïŒMAYïŒã
以äžã¯ãèŠç¯ã§ã¯ãªãïŒnon-normativeïŒèªèšŒãšã©ãŒã¬ã¹ãã³ã¹ã®äŸã§ããã
HTTP/1.1 302 Found
Location: https://client.example.org/cb?
error=consent_required
&error_description=
Consent%20by%20the%20End-User%20required
&state=af0ifjsldkj
Figure 52: Authentication Error Response
12.1.4. Automatic Registration and Client Authentication
Automatic Registration ãçšããå Žåãclient ã䜿çšã§ãã client èªèšŒæ¹åŒã¯ RP Metadata ãã©ã¡ãŒã¿ãããªãã¡ [OpenID.RP.Choices] ã§å®çŸ©ããã token_endpoint_auth_methods_supported ãã©ã¡ãŒã¿ããŸã㯠token_endpoint_auth_method ãã©ã¡ãŒã¿ã«ãã£ãŠ OP ã«ç€ºãããç¹ã«æ³šæãããããåæ§ã«ãOP ã䜿çšã§ããæ¹åŒã OP Metadata ãã©ã¡ãŒã¿ã«ãã£ãŠ RP ã«ç€ºããããããããRP ãš OP ã®åæ¹ãè€æ°ã®æ¹åŒããµããŒãããŠããå ŽåãAutomatic Registration ãè¡ãããæç¹ã§ã¯ã©ã®æ¹åŒã RP ãéžã¶ãã宣èšãããªããããOP ã¯å®éã«äœ¿çšãããåã« RP ãã©ããéžã¶ããäºåã«ã¯ææ¡ã§ããªãã
OP ã¯çžäºã«ãµããŒããããä»»æã® client èªèšŒæ¹åŒãåãå ¥ããã¹ãã§ããïŒSHOULDïŒãRP ã¯çžäºã«ãµããŒããããæ¹åŒã®ã¿ãçšããªããã°ãªããªãïŒMUSTïŒãäžéšã® OP ã¯ããã®åŸã®ããåãã§ã RP ãåžžã«åã client èªèšŒæ¹åŒãçšããããšãåæãšããŠå®è£ ãããŠããå¯èœæ§ããããããRP ããããå®ãããšã§çžäºéçšæ§ãåäžããå Žåãããããšã«æ³šæããããã
12.1.5. Possible Other Uses of Automatic Registration
Automatic Registration ã¯ãSection 12 ã§è¿°ã¹ããšãããOpenID Connect ãè¶ ãã OAuth 2.0 ã®ãŠãŒã¹ã±ãŒã¹ã«ãããŠãå©çšã§ããããèšèšãããŠãããããšãã°ãçŽ ã® OAuth 2.0 [RFC6749] ãŸã㯠FAPI [FAPI] ã䜿çšãããšã³ã·ã¹ãã 㯠Automatic Registration ãæŽ»çšã§ããã
ãŸããEntity Identifier ã§ãã Client ID ã®å€ã¯ãOAuth 2.0 ã®ãããã€ã¡ã³ãã«ãã㊠Authorization Endpoint ãš Token Endpoint 以å€ã® endpointïŒããšãã° Pushed Authorization Request (PAR) Endpoint ã Introspection EndpointïŒã§ãAutomatic Registration ã䜿çšãã client ãèå¥ããããã«å©çšã§ããç¹ã«ã泚æãããããããããç¹å®ã®ã·ããªãªãèšè¿°ããããšã¯ããã®ä»æ§ã®ã¹ã³ãŒãå€ã§ããã
12.2. Explicit Registration
ãã®æ¹åŒã§ã¯ãRP 㯠[OpenID.Registration] ã«äŒŒãå°çšã®ç»é²ãªã¯ãšã¹ãã«ãã OP ãšã® client ç»é²ã確ç«ããããmetadata ã®ä»£ããã« RP ã¯èªèº«ã® Entity Configuration ãŸã㯠Trust Chain å šäœãæåºãããExplicit Registration ãå®äºãããšãRP 㯠OP ã«å¯ŸããŠéåžžã® OpenID èªèšŒãªã¯ãšã¹ããè¡ããã
Explicit Registration ããµããŒããã OP ã¯ãclient_registration_types_supported metadata ãã©ã¡ãŒã¿ã« explicit ããŒã¯ãŒããå«ããªããã°ãªããïŒMUSTïŒããŸã federation_registration_endpoint metadata ãã©ã¡ãŒã¿ããExplicit Registration ãªã¯ãšã¹ããåãä»ãã URL ã«èšå®ããªããã°ãªããªãïŒMUSTïŒã
Explicit Registration ã¯ãOP ã®ãããã€ã¡ã³ãã«ããã OpenID Connect Dynamic Client Registration 1.0 [OpenID.Registration] ã® registration endpoint ã®äžã«å®è£ ããã®ã«é©ããŠãããAutomatic Registration ãšå¯Ÿç §çã«ãããã«ãã OP 㯠Client IDãå Žåã«ãã£ãŠã¯ Client Secretããã®ä»ã® metadata ãã©ã¡ãŒã¿ãæãåºããã
Explicit Registration ã®äŸã¯ Appendix A.3.2 ã«ç€ºãããŠããã
12.2.1. Explicit Client Registration Request
RP ã¯æ¬¡ã®ãšãã Explicit Client Registration ãè¡ãã
RP ããOP ãšå ±éãã Trust Anchor ã®éåãç¹å®ããããæ¬¡ã«é²ãããéšåéåãéžæãããããã¯åäžã® Trust Anchor ã§ããå Žåãããã°ãè€æ°ã§ããå ŽåããããRP 㯠Section 10 ã§æå®ãããšãããOP ã® Trust Chain ãš metadata ã®è§£æ±ºãè¡ããªããã°ãªããªãïŒMUSTïŒãè§£æ±ºã«æåããªãã£ãå ŽåãRP ã¯ãªã¯ãšã¹ããäžæ¢ããªããã°ãªããªãïŒMUSTïŒã
ãã® Trust Anchor ã®éšåéåãçšããŠãRP ã¯å©çšå¯èœãªãã³ããã authority_hints ã®éåãéžæãããåãã³ãã¯ãTrust Chain ã®åéã®éå§ç¹ãšããŠçšããããå Žåãéšåéåå ã®å°ãªããšã 1 ã€ã® Trust Anchor ã«å°éããªããã°ãªããªãïŒMUSTïŒãRP ã OP ãšå ±éãã Trust Anchor ãè€æ°æã€å ŽåãRP ã¯æ¬¡ã«é²ãããã® Trust Anchor ã®éšåéåãéžæããªããã°ãªããªãïŒMUSTïŒããã®éšåéåã¯åäžã® Trust Anchor ã®ã¿ã§ããããè€æ°ãå«ãã§ãããã
次㫠RP ã¯èªèº«ã® Entity Configuration ãæ§ç¯ããããã®ãšããéžæããã metadata statement 㯠OP ã® metadata ã®åœ±é¿ãåããå«ãã authority_hints ã¯äžèšã®ããã»ã¹ã§éžã°ãããRP ã¯ãImmediate Superiors ãã 1 ã€ä»¥äžã® authority_hints ãéžæããªããã°ãªããªãïŒMUSTïŒããããŠãåãã³ãã¯ãTrust Chain åéã®éå§ç¹ãšããŠçšããããå Žåãäžã§éžæããéšåéåå ã®å°ãªããšã 1 ã€ã® Trust Anchor ã«å°éããªããã°ãªããªãïŒMUSTïŒã
RP ã¯ãèªèº«ã«é¢ãã Trust Chain ã®äžã«èªèº«ã® Entity Configuration ãå«ããŠãããïŒMAYïŒãããã«ã¯ 2 ã€ã®æ¹æ³ãããã第 1 ã®æ¹æ³ã¯ãRegistration Request ã«ããªã¯ãšã¹ããè¡ã RP ãšéžæãã Trust Anchor ã®éã® Trust Chain ãæ§æãã Entity Statement ã®ã·ãŒã±ã³ã¹ãå«ãé åãå«ããããšã§ããã第 2 ã®æ¹æ³ã¯ãSection 4.3 ã§æå®ããã trust_chain header ãã©ã¡ãŒã¿ãçšããããšã§ããã
NOTE: ãªã¯ãšã¹ã JWT ã«ããã trust_chain header ãã©ã¡ãŒã¿ã®äœ¿çšã¯ã第 1 ã®æ§æããæšå¥šãããïŒRECOMMENDEDïŒãããã¯æŽå²ççç±ã«ããæ®ãããŠããã
RP ã¯ãèªèº«ã® Entity Configuration ã«èªèº«ã® metadata ãå«ããäžã§éžæãã authority_hints ã䜿çšããªããã°ãªããªãïŒMUSTïŒã
RP ã¯ã解決æžã¿ OP metadata ã«é©åãããã metadata ãã©ã¡ãŒã¿ãéžæããOP ãšã®ç»é²ãæåããããšã確å®ã«ããã¹ãã§ããïŒSHOULDïŒãæåºããã RP metadata ã OP ã® metadata ã«é©åããªãå ŽåãOP ã¯ãšã©ãŒã¬ã¹ãã³ã¹ã§ãªã¯ãšã¹ããæåŠãã代ããã«ãé©åããããããã倿Žããããšãéžæããå Žåãããããšã«æ³šæããããã
Entity Configuration ãŸã㯠Trust Chain å šäœã¯ãHTTP POST ãçšã㊠federation_registration_endpoint ã«éä¿¡ããããEntity Configuration ãŸã㯠Trust Chain 㯠POST æ¬æå šäœã§ãããRP ã¯ãææããŠããçŸåšã® Federation Entity Key ãçšããŠèªèº«ã® Entity Configuration ã«çœ²åããªããã°ãªããªãïŒMUSTïŒã
Registration Request ã® content type ã¯ããªã¯ãšã¹ãå ã® Entity Configuration ã§ããå Žå application/entity-statement+jwt ã§ãªããã°ãªããªãïŒMUSTïŒããã以å€ã«ãTrust Chain ã§ããå ŽåãRegistration Request ã® content type 㯠application/trust-chain+json ã§ãªããã°ãªããªãïŒMUSTïŒãRP ã¯ãèªèº«ã® Entity Configuration ããRP ã«è³ã Trust Chain ã«å«ããŠãããïŒMAYïŒããã®å Žåãç»é²ãªã¯ãšã¹ãã¯ãRP ãšãRP ãéžæãã Trust Anchor ã®éã® Trust Chain ãæ§æãã statement ã®ã·ãŒã±ã³ã¹ãããªãé åãå«ãã
ãªã¯ãšã¹ãã RP ã® Entity Configuration ã§ããå Žåãtrust_chain header ãã©ã¡ãŒã¿ãå«ããŠãRP ãš RP ãéžæãã Trust Anchor ã®éã® Trust Chain ãæäŸããŠãããïŒMAYïŒãããã¯ãTrust Chain ããªã¯ãšã¹ãæ¬æãšããŠæäŸããã®ãšç䟡ã§ãããtrust_chain header ãã©ã¡ãŒã¿ãå«ãŸããå Žåãpeer_trust_chain header ãã©ã¡ãŒã¿ãå«ããŠãOP ãš RP ãéžæãã Trust Anchor ã®éã® Trust Chain ãæäŸããŠãããïŒMAYïŒãPeer Trust Chain ã«ã¯ãç»é²ã®éã« RP ã OP ã«äœ¿çšãããããšéžãã metadata ãš policy ã®å€ãå«ãŸããããªã¯ãšã¹ãæ¬æã Trust Chain ã§ããå Žåãpeer_trust_chain header ãã©ã¡ãŒã¿ã䜿çšããŠã¯ãªããªãïŒMUST NOTïŒãäž¡æ¹ã® Trust Chain ã§éžæããã Trust Anchor ã¯åäžã§ãªããã°ãªããªãïŒMUSTïŒãäž¡æ¹ã® Trust Chain ãå«ããããšã§ã[App-Fed-Linkage] ã§å®çŸ©ããã Federation Integrity ãš Metadata Integrity ã®æ§è³ªãéæã§ããã
以äžã® Entity Configuration Claims 㯠Explicit Registration ãªã¯ãšã¹ãã§äœ¿çšããããã«æå®ããããå®å šãªèª¬æã¯ Section 3 ã«ããã
- iss\ å¿ é ïŒREQUIREDïŒããã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒã
- sub\ å¿ é ïŒREQUIREDïŒããã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒã
- iat\ å¿ é ïŒREQUIREDïŒã
- exp\ å¿ é ïŒREQUIREDïŒã
- jwks\ å¿ é ïŒREQUIREDïŒã
- aud\ å¿ é ïŒREQUIREDïŒã"aud"ïŒaudienceïŒã®å€ã¯ OP ã® Entity Identifier ã§ãªããã°ãªããïŒMUSTïŒãä»ã®å€ãå«ãã§ã¯ãªããªãïŒMUST NOTïŒããã® Claim 㯠Explicit Registration ãªã¯ãšã¹ãã§äœ¿çšããããã®ã§ãããäžè¬ç㪠Entity Statement Claim ã§ã¯ãªãã
- authority_hints\ å¿ é ïŒREQUIREDïŒã
- metadata\ å¿ é ïŒREQUIREDïŒãopenid_relying_party Entity Type Identifier ã®äžã« RP metadata ãå«ãŸãªããã°ãªããªãïŒMUSTïŒã
- crit\ ä»»æïŒOPTIONALïŒã
- trust_marks\ ä»»æïŒOPTIONALïŒã
ãªã¯ãšã¹ãã¯ãOP ã® federation_registration_endpoint ã«å¯Ÿãã HTTP ãªã¯ãšã¹ãã§ãããPOST ã¡ãœãããçšããªããã°ãªããªãïŒMUSTïŒã
RP ã Entity Configuration ãæåºããå Žåããªã¯ãšã¹ãã® content type 㯠application/entity-statement+jwt ã§ãªããã°ãªããªãïŒMUSTïŒãRP ã Trust Chain ãæåºããå Žåãcontent type 㯠application/trust-chain+json ã§ãªããã°ãªããªãïŒMUSTïŒã
12.2.2. Processing Explicit Client Registration Request by OP
OP ã¯æ¬¡ã®ãšãããªã¯ãšã¹ããåŠçããã
ç»é²ãªã¯ãšã¹ããåä¿¡ããããOP 㯠content type ã調ã¹ãEntity Configuration ãå«ãã®ããTrust Chain å šäœãå«ãã®ãã倿ããªããã°ãªããªãïŒMUSTïŒã
OP ã¯ãRP ã® explicit registration request JWT ãæ€èšŒããªããã°ãªããªãïŒMUSTïŒãéåžžã® Entity Statement ã®æ€èšŒèŠåããã¹ãŠé©çšããããå ããŠãaudïŒaudienceïŒClaim ã®å€ã OP ã® Entity Identifier ã§ãªãå Žåããã®ãªã¯ãšã¹ãã¯æåŠãããªããã°ãªããªãïŒMUSTïŒã
ãªã¯ãšã¹ãã«ãRP ãã Trust Anchor ãŸã§ã® Trust Chain ãæäŸãããŠããªãå ŽåãOP ã¯ãæäŸããã Entity Configuration ãçšã㊠Federation Entity Discovery ãå®äºããªããã°ãªããªãïŒMUSTïŒãããã¯ãRP ã® Entity Configuration å ã® authority_hints ããéå§ãã Trust Chain ãåéããŠè©äŸ¡ããããšã«ããè¡ããå°ãªããšã 1 ã€ã® Trust Chain ãæ€èšŒããåŸãOP ã¯åä¿¡ãã Entity Configuration ã®çœ²åãæ€èšŒããªããã°ãªããªãïŒMUSTïŒãOP ã蚱容å¯èœãª Trust Chain ãè€æ°èŠã€ããå Žåããã®äžãã 1 ã€ããæ¬¡ã«é²ã Trust Chain ãšããŠéžæããªããã°ãªããªãïŒMUSTïŒã
ãªã¯ãšã¹ãæ¬æã Trust Chain ã§ããå ŽåãOP ã¯ãç¹ã« RP ãèªèº«ã® Entity Configuration ã«è€æ°ã® authority hint ãå«ããå Žåã«ãFederation Entity Discovery ãå®è¡ããããã«å¿ èŠãª HTTP åŒã³åºããç¯çŽãããããTrust Chain å ã® statement ãè©äŸ¡ããŠãããïŒMAYïŒããã以å€ã®å ŽåãOP 㯠Trust Chain ãã RP ã® Entity Configuration ãæœåºããStep 3 ã«åŸã£ãŠãEntity Configuration ã®ã¿ãåä¿¡ããå Žåãšåæ§ã«åŠçãé²ããªããã°ãªããªãïŒMUSTïŒã
ãªã¯ãšã¹ãã® Entity Configuration ã«ãã㊠trust_chain header ãã©ã¡ãŒã¿ãçšã㊠Trust Chain ãæäŸãããå ŽåããOP ã¯åæ§ã«ãFederation Entity Discovery ãå®è¡ããããã«å¿ èŠãª HTTP åŒã³åºããç¯çŽãããããTrust Chain å ã® statement ãè©äŸ¡ããŠãããïŒMAYïŒããã®å ŽåãTrust Chain å ã® RP ã® Entity Configuration ã¯ãRP ãã Trust Anchor ãžã®ãã¹ãããããšã確ç«ããããã«ã®ã¿çšããããç¹ã«æ³šæãããããç»é²ãªã¯ãšã¹ãã®åŠçã«çšããããã®ã¯ãRP ã OP åãã«èª¿æŽããŠããå¯èœæ§ããããªã¯ãšã¹ã Entity Configuration å ã® metadata çã§ãããæäŸããã Trust Chain ãçšããªãå ŽåãOP ã¯ãªã¯ãšã¹ã Entity Configuration ãçšã㊠Step 3 ã«åŸã£ãŠåŠçãé²ããªããã°ãªããªãïŒMUSTïŒã
ãªã¯ãšã¹ãã peer_trust_chain header ãã©ã¡ãŒã¿ãçšããŠãRP ãéžæãã Trust Anchor ãŸã§ã® OP ããã® Trust Chain ãå«ããå ŽåãOP ããéå§ããŠããããšãæ€èšŒãããããã«ãRP ãã Trust Anchor ãŸã§æäŸããã Trust chain ãããå Žåã¯ããããšåã Trust Anchor ã§çµãã£ãŠããããšãæ€èšŒãããOP ã¯ãç»é²ã®éã« RP ãéžæãã metadata ãš policy ã®å€ã䜿çšããã¹ãã§ããïŒSHOULDïŒã
ãã®æç¹ã§ãOP ãèŠæ±å RP ã«å¯Ÿããæ¢åã® client ç»é²ãæ¢ã«æã£ãŠããããšãèŠãã ããå Žåããã®ç»é²ã¯ç¡å¹åãããªããã°ãªããªãïŒMUSTïŒãç¡å¹åã®æ£ç¢ºãªæå»ã¯ OP ã®è£éã«å§ãããããããã¯ãç»é²ãªã¯ãšã¹ãã®åŠçäžã§ãã£ãŠããRP ã«ãã£ãŠéå§ãããåæäžŠè¡ã® OpenID èªèšŒãªã¯ãšã¹ãã®å®äºã OP ã確å®ã«ãããå Žåãããããã§ããã
OP ã¯ãéå»ã® RP 眲åãæ€èšŒããéå»ã® RP ããŒã¿ã«å¯Ÿããä»ã®æå·æäœãè¡ããããç¡å¹åãããç»é²ãã client credentials ãšéµçŽ æãä¿æããŠãããïŒMAYïŒã
OP ã¯ãRP ã® Resolved Metadata ãçšããŠãèªèº«ã® OP metadata ããã³ãã®ä»ã®é©çšå¯èœãªããªã·ãŒã«é©åãã client ç»é²ãäœæããã
OP ã¯ãRP ã® Entity Identifier 以å€ã® client_id ã RP ã«æãåºããŠãããïŒMAYïŒãããã«ãããOP ã® OpenID Connect Dynamic Client Registration 1.0 [OpenID.Registration] ã® registration endpoint ã®äžã« Explicit Registration ãå®è£ ã§ããã
RP ã« client_secret ãæãåºãããå Žåããã㯠RP ã«è¿ãããç»é² Entity Statement ã®æå¹æéããåã«æéåãã«ãªã£ãŠã¯ãªããªãïŒMUST NOTïŒã
OP ã¯ãregistration_access_token ãš registration_client_uri ã RP ã«æãåºãã¹ãã§ã¯ãªãïŒSHOULD NOTïŒãRP ãç»é²ãæŽæ°ããéã«æåŸ ãããæ¹æ³ã¯ãæ°ãã Explicit Registration ãªã¯ãšã¹ããè¡ãããšã ããã§ãããäœããã®ç®çãããšãã°ç»é²æžã¿ metadata ãç¬ç«ã«ç¢ºèªã§ããããã«ããããã« OP ã RP ã« registration_access_token ãæãåºãå Žåã§ãããã®ããŒã¯ã³ã¯ç»é²ã®å€æŽãèš±ããŠã¯ãªããªãïŒMUST NOTïŒã
OP ã¯ãåä¿¡ãã RP metadata ããèªèº«ã® OP metadata ããã³ãã®ä»ã®ããªã·ãŒã«é©åãããããã«ãããšãã°ç¡å¹ãŸãã¯é察å¿ã®ãã©ã¡ãŒã¿ã眮æãããªã©ããŠå€æŽããŠãããïŒMAYïŒãOP ã RP metadata ãåãå ¥ããªãããŸãã¯é©åãããããã«å€æŽããææããªãå ŽåãOP 㯠client ç»é²ãšã©ãŒã¬ã¹ãã³ã¹ãè¿ããªããã°ãªããªãïŒMUSTïŒããã®ãšãã[OpenID.Registration] ã® Section 3.3 ã§æå®ããã invalid_client_metadata ãŸã㯠invalid_redirect_uri ãªã©ãé©åãªãšã©ãŒãå«ããã
OP ã¯ãäœæããç»é²ã«æå¹æéãå²ãåœãŠãªããã°ãªããªãïŒMUSTïŒããã®æå»ã¯ãOP ããªã¯ãšã¹ãåŠçã«éžæãã Trust Chain ã®æå¹æéãè¶ ããŠã¯ãªããªãïŒMUST NOTïŒã
12.2.3. Successful Explicit Client Registration Response
OP ã RP ã® client ç»é²ãäœæããå ŽåãOP 㯠Entity Statement ã®åœ¢ã§æåã¬ã¹ãã³ã¹ãæ§ç¯ããªããã°ãªããªãïŒMUSTïŒã
OP ã¯ãEntity Statement ã® trust_anchor Claim ãããªã¯ãšã¹ãåŠçã«éžæãã Trust Anchor ã«èšå®ããªããã°ãªããªãïŒMUSTïŒãauthority_hints Claim ã¯ãéžæãã Trust Chain ã«ããã RP ã® Immediate Superior ã«èšå®ããªããã°ãªããªãïŒMUSTïŒã
OP ã¯ãäœæããç»é²ã®æå¹æéãšã㊠exp Claim ãèšå®ããªããã°ãªããªãïŒMUSTïŒãOP ã¯ããã®åã«ç»é²ãç¡å¹åããããšãéžæããŠãããïŒMAYïŒããã㯠Section 12.2.6 ã§èª¬æãããã
OP ã¯ãmetadata Claim ã«ãããRP ã®ããã«äœæãã client ç»é²ã衚çŸããªããã°ãªããªãïŒMUSTïŒãããã¯ãopenid_relying_party Entity Type Identifier ã®äžã« metadata ãã©ã¡ãŒã¿ãé 眮ããããšã§è¡ãããã©ã¡ãŒã¿ã«ã¯ãRP ã«æãåºãã client_id ãå«ããªããã°ãªããªãïŒMUSTïŒãRP ã« credentialsïŒããšãã° client_secretïŒãæãåºããå Žåãããããå«ããªããã°ãªããªãïŒMUSTïŒã
OP ã¯ãããšãã° token_endpoint_auth_methodïŒæ¢å®å€ã client_secret_basicïŒãªã©ãæ¢å®å€ãæã€ metadata ãã©ã¡ãŒã¿ãå«ããã¹ãã§ããïŒSHOULDïŒãããã¯ãRP ã«ããã¬ã¹ãã³ã¹åŠçãç°¡çŽ åããããã§ããã
OP ã¯ãææããŠããçŸåšã® Federation Entity Key ãçšããŠç»é² Entity Statement ã«çœ²åããªããã°ãªããªãïŒMUSTïŒã
以äžã® Entity Statement Claims ã¯ãSection 3 ã§æå®ãããšãããExplicit Registration ã¬ã¹ãã³ã¹ã§äœ¿çšãããã
- iss\ å¿ é ïŒREQUIREDïŒããã®å€ã¯ OP ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒã
- sub\ å¿ é ïŒREQUIREDïŒããã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒã
- iat\ å¿ é ïŒREQUIREDïŒããã® statement ãçºè¡ãããæå»ã
- exp\ å¿ é ïŒREQUIREDïŒããã®æå»ä»¥éãstatement ã¯åŠçã®ããã«åãä»ããããŠã¯ãªããªãïŒMUST NOTïŒæå¹æéã
- jwks\ ä»»æïŒOPTIONALïŒãååšããå Žåãåä¿¡ãã RP ã® Entity Configuration ã«ãã jwks Entity Statement Claim ã®éèªçã³ããŒã§ãªããã°ãªããªãïŒMUSTïŒãããã¯ååã® RP metadata ãã©ã¡ãŒã¿ãšã¯å¥ç©ã§ããç¹ã«æ³šæããããã
- aud\ å¿ é ïŒREQUIREDïŒã"aud"ïŒaudienceïŒã®å€ã¯ RP ã® Entity Identifier ã§ãªããã°ãªããïŒMUSTïŒãä»ã®å€ãå«ãã§ã¯ãªããªãïŒMUST NOTïŒããã® Claim 㯠Explicit Registration ã¬ã¹ãã³ã¹ã§äœ¿çšããããã®ã§ãããäžè¬ç㪠Entity Statement Claim ã§ã¯ãªãã
- trust_anchor\ å¿ é ïŒREQUIREDïŒããã®å€ã¯ãExplicit Registration ãªã¯ãšã¹ãã®åŠçã« OP ãéžæãã Trust Anchor ã® Entity Identifier ã§ãªããã°ãªããªãïŒMUSTïŒãRP ãéžæãã Trust Anchor ãžã®å®å šãª Trust Chain ãããªã¯ãšã¹ãããã³ïŒãŸã㯠peer_trust_chain header ãã©ã¡ãŒã¿ã®äœ¿çšã«ãã£ãŠæäŸãããå Žåãããã¯ãããã® Trust Chain ã®ã«ãŒãã«ãã Trust Anchor ãšäžèŽããªããã°ãªããªãïŒMUSTïŒããã® Claim 㯠Explicit Registration ã¬ã¹ãã³ã¹åºæã§ãããäžè¬ç㪠Entity Statement Claim ã§ã¯ãªãã
- authority_hints\ å¿ é ïŒREQUIREDïŒãåäžèŠçŽ ã®é åã§ãªããã°ãªããïŒMUSTïŒããã®å€ã¯ãOP ããªã¯ãšã¹ãåŠçã«éžæãã Trust Chain ã«ããã RP ã® Immediate Superior ãåç §ããªããã°ãªããªãïŒMUSTïŒã
- metadata\ å¿ é ïŒREQUIREDïŒãopenid_relying_party Entity Type Identifier ã®äžã«ç»é²æžã¿ RP metadata ãå«ãŸãªããã°ãªããªãïŒMUSTïŒã
- crit\ ä»»æïŒOPTIONALïŒãSection 3.1 ã§æå®ããããšãããçè§£ããåŠçãããªããã°ãªããªãïŒMUSTïŒClaims ã®éåã
æåã¬ã¹ãã³ã¹ã¯ãHTTP ã¹ããŒã¿ã¹ã³ãŒã 200 ãš content type application/explicit-registration-response+jwt ãæããªããã°ãªããªãïŒMUSTïŒãããã«ãã¬ã¹ãã³ã¹ã® typ header ãã©ã¡ãŒã¿å€ã¯ explicit-registration-response+jwt ã§ãªããã°ãªããïŒMUSTïŒãExplicit Registration ã¬ã¹ãã³ã¹ãšä»çš®ã® Entity Statement ã®æ··åãé²ããããentity-statement+jwt ã§ãã£ãŠã¯ãªããªãïŒMUST NOTïŒã
12.2.4. Explicit Client Registration Error Response
client ç»é²ãšã©ãŒã®å Žåãã¬ã¹ãã³ã¹ã¯ Section 8.9 ã§å®çŸ©ããããšããã§ãããããã«å®çŸ©ããããšã©ãŒãšã[OpenID.Registration] ã® Section 3.3 ããã³ [RFC7591] ã® Section 3.2.2 ã§å®çŸ©ããããšã©ãŒã䜿çšããŠãããïŒMAYïŒã
12.2.5. Processing Explicit Client Registration Response by RP
ã¬ã¹ãã³ã¹ãæåã瀺ãå ŽåãRP ã¯ãã®å 容ãæå¹ãª Entity Statement ã§ãããã〠OP ã«ãã£ãŠçºè¡ããããã®ã§ããããšãæ€èšŒããªããã°ãªããªãïŒMUSTïŒã
RP ã¯ãOP ãçšãã眲åçš Federation Entity Key ããRP ã Explicit Registration ãªã¯ãšã¹ãã®æºåæã« OP ã«ã€ããŠæ£åžžã«è§£æ±ºãã Trust Chain ã«ãããŠãOP ã® Immediate Superior ãçºè¡ãã Subordinate Statement ã® jwks Claim ã«ååšããããšã確å®ã«ããªããã°ãªããªãïŒMUSTïŒã
RP ã¯ãaudïŒaudienceïŒClaim ã®å€ãèªèº«ã® Entity Identifier ã§ããããšãæ€èšŒããªããã°ãªããªãïŒMUSTïŒã
RP ã¯ãtrust_anchor ãèªèº«ã® Trust Anchor ã® 1 ã€ã衚ããŠããããšãæ€èšŒããªããã°ãªããªãïŒMUSTïŒãRP ãéžæãã Trust Anchor ãžã®å®å šãª Trust Chain ãããªã¯ãšã¹ãããã³ïŒãŸã㯠peer_trust_chain header ãã©ã¡ãŒã¿ã®äœ¿çšã«ãã£ãŠæäŸãããå ŽåãRP ã¯ãããããããã® Trust Chain ã®ã«ãŒãã«ãã Trust Anchor ãšäžèŽããããšãæ€èšŒããªããã°ãªããªãïŒMUSTïŒã
RP ã¯ãExplicit Registration ãªã¯ãšã¹ãã§æå®ãã authority_hints ã®å°ãªããšã 1 ã€ããOP ã trust_anchor Claim ã«èšå®ãã Trust Anchor ã«å°éããããšãæ€èšŒããªããã°ãªããªãïŒMUSTïŒã
RP ã¯ãŸããOP ã«ç»é²ãããæ å ±ãããªã¯ãšã¹ããšåã entity_types ã®éåãå«ãããšã確å®ã«ããªããã°ãªããªãïŒMUSTïŒãã¬ã¹ãã³ã¹ Claim trust_anchor ã Trust Anchor ã® Entity Identifier ãšããŠçšããauthority_hints ã Trust Chain åéã®éå§ç¹ãšã㊠Trust Chain ãåéããåŸãRP ã¯ãSection 6.1.4.1 ã§æå®ããããšããã解決æžã¿ããªã·ãŒãåä¿¡ metadata ã«é©çšããŠãå entity type ã®ã¬ã¹ãã³ã¹ metadata ãæå¹ã§ããããšãæ€èšŒããã¹ãã§ããïŒSHOULDïŒã
åä¿¡ããç»é² Entity Statement ãäžèšã®ãã§ãã¯ãééããªãå ŽåãRP ã¯ãããæåŠããªããã°ãªããªãïŒMUSTïŒãRP ã¯ãäžæçãªäŸå€ãåé¿ããããã« Explicit Registration ãªã¯ãšã¹ããå詊è¡ããããšãéžãã§ãããïŒMAYïŒãããšãã°ãEntity metadata ãŸã㯠metadata policy ã®æè¿ã®å€æŽã«ãã metadata ã®äžæçãªäžæŽåãçããå Žåã§ããã
12.2.6. After an Explicit Client Registration
RP ã¯ãç»é² Entity Statement ã® exp Claim ãçšããŠãclient ç»é²ãæŽæ°ããããã®é©åãªæŠç¥ãçå®ã§ãããRP å®è£ è ã¯ãOP ã«ããã client_id ã®æéåãããRP ã«ãã£ãŠéå§ãããã°ããã® OAuth 2.0 ãããŒãšäžèŽããå ŽåãOpenID Connect ã®èªèšŒãªã¯ãšã¹ããtoken ãªã¯ãšã¹ãããŸã㯠UserInfo ãªã¯ãšã¹ããçªåŠå€±æããå¯èœæ§ãããç¹ã«çæãã¹ãã§ãããæéåãåã« RP ã®ç»é²ãæŽæ°ããããšã§ããã®ãããªãšã©ãŒã®çºçãé²ããEnd-User äœéšãäžæãããªãããã«ã§ããã
OP ã¯ãRP ã®ããã®ç»é² Entity Statement ã«ç€ºãããæéããåã« client ç»é²ãç¡å¹åããŠãããïŒMAYïŒãçç±ã®äŸãšããŠã¯ãRP ã®ç»é²ã«çšãããããã§ãã¬ãŒã·ã§ã³ãã OP ãé¢è±ããå Žåãæããããã
12.3. Registration Validity and Trust Reevaluation
OP ã«ããã Automatic ãŸã㯠Explicit Registration ã®æå¹æ§ã¯ãOP ãç»é²äœæã«çšãã Trust Chain ã®åç¶æéãè¶ ããŠã¯ãªããªãïŒMUST NOTïŒãOP ã¯ãããæ©ãæå»ã«ç»é²ãæéåãã«ããããšãéžãã§ãããïŒMAYïŒããŸã㯠Trust Chain ãæå¹æéã«éããåã«ãç»é²æžã¿ RP ã«å¯Ÿã㊠Trust Chain ã®è¿œå ã®å®æçãªåè©äŸ¡ãè¡ãããšãéžãã§ãããïŒMAYïŒã
åæ§ã«ãAutomatic ãŸã㯠Explicit Registration ãååŸãã RP ã¯ãOP ã«ãããä¿¡é Œç¢ºç«ã«çšãã Trust Chain ã®æéãéããŠããã䜿çšããŠã¯ãªããªãïŒMUST NOTïŒãAutomatic Registration ã䜿çšãã RP ã®å ŽåãOP ã«å¯Ÿããä¿¡é Œã¯ãOP ãžã®ãªã¯ãšã¹ããç¶ç¶ããåã«ãæ£åžžã«åè©äŸ¡ãããªããã°ãªããªãïŒMUSTïŒãExplicit Registration ã䜿çšãã RP ã®å ŽåãRP ã¯ç»é²ãæ£åžžã«æŽæ°ããªããã°ãªããªãïŒMUSTïŒãRP ã¯ãTrust Chain ãæå¹æéã«éããåã«ãOP ã«å¯Ÿãã Trust Chain ã®è¿œå ã®å®æçãªåè©äŸ¡ãè¡ãããšãéžãã§ãããïŒMAYïŒã
12.4. Differences between Automatic Registration and Explicit Registration
Automatic Registration ãš Explicit Registration ã®äž»ãªéãã¯æ¬¡ã®ãšããã§ããã
- Automatic Registration ã§ã¯ Authentication Request ã®åã«ç»é²ã¹ãããããªãäžæ¹ãExplicit Registration ã§ã¯ç»é²ã¹ãããããããïŒOpenID Connect Dynamic Client Registration 1.0 [OpenID.Registration] ãš OAuth 2.0 Dynamic Client Registration [RFC7591] ããäºåã®ç»é²ã¹ããããçšãããïŒ
- Automatic Registration ã§ã¯ Client ID ã®å€ã¯ RP ã® Entity Identifier ã§ãããRP ã«ãã OP ã«æäŸãããäžæ¹ãExplicit Registration ã§ã¯ Client ID 㯠OP ã«ããå²ãåœãŠãããRP ã«æäŸãããã
- Automatic Registration ã§ã¯ Client ã¯ãRP ã Entity Configuration ã®å ¬ééµã® 1 ã€ã«å¯Ÿå¿ããç§å¯éµã管çããŠããããšã瀺ãããšã§èªèšŒããããäžæ¹ãExplicit Registration ã§ã¯ãClient Secret ã®å©çšãå«ããClient ãèªèšŒããããã®ããåºãéžæè¢ãå©çšã§ããã
12.5. Rationale for the Trust Chain in the Request
Automatic ãš Explicit ã®äž¡æ¹ã® Client Registration ã¯ããªã¯ãšã¹ãå ãèšç®ããããªã¯ãšã¹ãã«åã蟌ãŸãã Trust ChainïŒãªã¯ãšã¹ãå èªèº«ã«é¢ãããã®ïŒã®æåºããµããŒããããããã«ããæ¬¡ã®å©ç¹ãåŸãããã
- OP ãå€ããªã£ã RP metadata ã䜿çšããåé¡ã解決ãããå€ãããŒã¿ã¯ãOP ãããŸã æå¹æéã«éããŠããªã Trust Chain ããã®ãã£ãã·ã¥æžã¿ RP metadata ã䜿çšããå Žåã«çºçãåŸããRP ã¯ããªã¯ãšã¹ãã« trust_chain header ãã©ã¡ãŒã¿ãŸã㯠trust_chain request ãã©ã¡ãŒã¿ãå«ããããšã§ã倿Žãçºçããããšã OP ã«éç¥ããŠãããïŒMAYïŒãããã«ãã OP 㯠Client Registration ãæŽæ°ããå€ã metadata ã«ããæœåšçãªäžæçé害ã鲿¢ã§ããã
- Trust Chain ãæ§ç¯ããããã«ã©ã® trust path ãæ¡çšãã¹ããã«ã€ããŠãæ€èšŒå¯èœãªãã³ãã RP ãæž¡ãããããã¯ãRP ãè€æ°ã® Trust Anchor ãæã€ããŸã㯠Trust Chain ã®è§£æ±ºãè¡ãæ¢ãŸãã«è³ãåŸãè€éãªãã§ãã¬ãŒã·ã§ã³ã«ãããŠãOP åŽã® RP Federation Entity Discovery ã®ã³ã¹ããåæžã§ããã
- Trust Marks ãååšããå Žåããããå«ã Entity Configuration
ãçŽæ¥æž¡ãããããOP ã RP ã®
/.well-known/openid-federationendpoint ã« HTTP ãªã¯ãšã¹ããè¡ãå¿ èŠãçããã
13. General-Purpose JWT Claims
ãã®ã»ã¯ã·ã§ã³ã¯ãããŸããŸãª JWT ãããã¡ã€ã«ã§äœ¿çšãããããšãæå³ããæ±çš JWT Claims ãå®çŸ©ããããããã¯ããã®ä»æ§ãå®çŸ©ããç¹å®çš®å¥ã® JWT ã«ãããŠã䜿çšãããã
13.1. "jwks" (JSON Web Key Set) Claim
jwksïŒJSON Web Key SetïŒClaim ã®å€ã¯ã[RFC7517] ã§å®çŸ©ããã JWK Set ã§ãããããã¯æå·éµã®éåãäŒéããããã«çšããããããã® Claim ã®äœ¿çšã¯ä»»æïŒOPTIONALïŒã§ããã
ããšãã°ãjwksïŒJSON Web Key SetïŒClaim ã¯ãã¢ããªã±ãŒã·ã§ã³ã®çœ²åéµã®éåã衚ãããã«äœ¿çšããåŸãããã® Claim ã¯ããã®ä»æ§ã§ã¯ Section 3.1 ã§æå®ãããšãããEntity Statement ã«çœ²åããããã«çšããããå ¬ééµã衚ãããã«äœ¿çšãããã
13.2. "metadata" Claim
metadata Claim ã¯ãJWT ã«é¢ãã metadata ãäŒéããããã«çšããããããã®å€ã¯ JSON ãªããžã§ã¯ãã§ãããå«ãŸãã metadata ã®è©³çްã¯ã¢ããªã±ãŒã·ã§ã³åºæã§ããããã® Claim ã®äœ¿çšã¯ä»»æïŒOPTIONALïŒã§ããã
ããšãã°ãmetadata Claim ã¯ãAPI èšè¿°ã«ããã endpoint URL ãšã¢ã«ãŽãªãºã èå¥åã®éåã衚ãããã«äœ¿çšããåŸãããã® Claim ã¯ããã®ä»æ§ã§ã¯ Section 3.1 ã§æå®ãããšãããEntity ã«é¢ãã metadata ã衚ãããã«äœ¿çšãããã
13.3. "constraints" Claim
constraints Claim ã¯ãJWT ã«é¢ããå¶çŽãäŒéããããã«çšããããããã®å€ã¯ JSON ãªããžã§ã¯ãã§ãããå«ãŸããå¶çŽã®è©³çްã¯ã¢ããªã±ãŒã·ã§ã³åºæã§ããããã® Claim ã®äœ¿çšã¯ä»»æïŒOPTIONALïŒã§ããã
ããšãã°ãconstraints Claim ã¯ãç©ççãªç©äœã«å¯Ÿããææã®åã¿ã®äžéã課ãããã«äœ¿çšããåŸãããã® Claim ã¯ããã®ä»æ§ã§ã¯ Section 3.3 ã§æå®ãããšãããEntity ã® Trust Chain ã«å¯Ÿãã constraints ã衚ãããã«äœ¿çšãããã
13.4. "crit" (Critical) Claim
critïŒcriticalïŒClaim ã¯ããã®çš®å¥ã® JWT ã§äœ¿çšããããšãæå®ããã Claims
ã®éåã«å¯Ÿããæ¡åŒµã䜿çšãããŠãããããããçè§£ããåŠçãããªããã°ãªããªãïŒMUSTïŒããšã瀺ããããã¯ãçè§£ããåŠçãããªããã°ãªããªãïŒMUSTïŒæ¡åŒµ
JOSE header ãã©ã¡ãŒã¿ã瀺ã crit header ãã©ã¡ãŒã¿ãšåæ§ã«çšãããããcrit
ã®å€ã¯ãæ¡åŒµã䜿çšãã Claim ã JWT ã«ååšãã Claim
åãåæããé
åã§ãããåæããã Claims
ã®ãããããåä¿¡è
ã«çè§£ããããµããŒããããªãå Žåããã® JWT
ã¯ç¡å¹ã§ãããçæè
ã¯ããã®çš®å¥ã® JWT ã§ã®äœ¿çšãæ¢ã«æå®ãããŠãã Claim
åãéè€åããŸã㯠JWT å
ã« Claim åãšããŠåºçŸããªãååã crit
ãªã¹ãã«å«ããŠã¯ãªããªãïŒMUST NOTïŒãçæè
ã¯ãcrit ã®å€ãšããŠç©ºé
å []
ã䜿çšããŠã¯ãªããªãïŒMUST NOTïŒããã® Claim ã®äœ¿çšã¯ä»»æïŒOPTIONALïŒã§ããã
ãã® Claim ã¯ããã®ä»æ§ã§ã¯ Section 3.1 ã§æå®ãããšãããEntity Statement ã§äœ¿çšãããéã«ããã®ä»æ§ã§å®çŸ©ãããªããçè§£ããåŠçãããªããã°ãªããªãïŒMUSTïŒClaims ãèå¥ããããã«äœ¿çšãããã
13.5. "ref" (Reference) Claim
refïŒreferenceïŒClaim ã¯ãJWT ã«é¢é£ãããªãœãŒã¹ã® URI ãäŒéããããã«çšãããããããã¯ãHTML ã«ããã href ããããã£ã«äŒŒã圹å²ã JWT ã«ãããŠæãããåç §å ãªãœãŒã¹ã«ããå å®¹ã®æ§è³ªã¯ãäžè¬ã«ã¢ããªã±ãŒã·ã§ã³åºæã§ãããref ã®å€ã¯ãURI å€ãå«ã倧æåå°æåãåºå¥ããæååã§ããããã® Claim ã®äœ¿çšã¯ä»»æïŒOPTIONALïŒã§ããã
ããšãã°ã2 åœäºè éã®å¥çŽãåç §ãã JWT ã¯ãrefïŒreferenceïŒClaim ãçšããŠãå¥çŽæ¡é ãèªãããªãœãŒã¹ãåç §ãåŸãããã® Claim ã¯ããã®ä»æ§ã§ã¯ Section 7.1 ã§æå®ãããšãããTrust Mark ã®çºè¡ã«é¢ãã人éå¯èªãªæ å ±ãåç §ãã URL ãæäŸããããã«äœ¿çšãããã
13.6. "delegation" Claim
delegation Claim ã¯ãClaim Value ãåç §ããåœäºè ãžæš©éãå§ä»»ãããŠããããšã衚ããdelegation ã®å€ã¯ãStringOrURI å€ãå«ã倧æåå°æåãåºå¥ããæååã§ããããã® Claim ã®äœ¿çšã¯ä»»æïŒOPTIONALïŒã§ããã
ããšãã°ãdelegation Claim ã¯ãåç §ãããåœäºè ã subject ã代衚ããŠæ³çææžã«çœ²åã§ããããšã衚ãããã«äœ¿çšããåŸãããã® Claim ã¯ããã®ä»æ§ã§ã¯ Section 7.1 ã§æå®ãããšãããç¹å®ã®èå¥åãæã€ Trust Marks ãçºè¡ããæš©å©ã®å§ä»»ã衚ãããã«äœ¿çšãããã
13.7. "logo_uri" (Logo URI) Claim
logo_uri Claim ã®å€ã¯ãJWT ã«é¢é£ããããŽãåç §ãã URI ã§ããããã® Claim ã®äœ¿çšã¯ä»»æïŒOPTIONALïŒã§ããã
ããšãã°ãlogo_uri Claim ã¯ããŠãŒã¶ãŒã€ã³ã¿ãã§ãŒã¹ã«è¡šç€ºããããã«çµç¹ã®ããŽãååŸããå Žæã衚ãããã«äœ¿çšããåŸãããã® Claim ã¯ããã®ä»æ§ã§ã¯ Section 7.1 ã§æå®ãããšãããEntity ã®ããŽãåç §ãã URL ãäŒéããããã«äœ¿çšãããã
14. Claims Languages and Scripts
人éå¯èªãª Claim Values ããã³äººéå¯èªãªå€ãåç §ãã Claim Values ã¯ãè€æ°ã®èšèªããã³æåäœç³»ã§è¡šçŸããåŸãïŒMAYïŒããã®ä»æ§ã¯ãOpenID Connect Core 1.0 [OpenID.Core] ã® Section 5.2 ã§å®çŸ©ãããã®ãšåæ§ã®æ¹æ³ã§ããã®ãããªè¡šçŸãå¯èœã«ããã
OpenID Connect Core ã«èšèŒããããšãããèšèªãšæåäœç³»ãæå®ãããããBCP47 [RFC5646] ã®èšèªã¿ã°ã member åã«è¿œå ããã# æåã§åºåããããããšãã° family_name#ja-Kana-JP ã¯ãæ¥æ¬èªã®ã«ã¿ã«ãã§è¡šãããå§ïŒFamily NameïŒã衚ããããã¯äžè¬ã«ãåãååã®æŒ¢å衚èšïŒfamily_name#ja-Hani-JP ãšããŠè¡šãããïŒã®èªã¿ã玢åŒä»ãã衚çŸããããã«çšããããã
èšèªã¿ã°ã¯ã人éå¯èªãªå€ãå«ãããŸãã¯åç §ããä»»æã®ããŒã¿æ§é ã§äœ¿çšã§ãããããã«ã¯ metadata ãã©ã¡ãŒã¿ããã³ Trust Mark ãã©ã¡ãŒã¿ãå«ãŸãããããšãã°ãmetadata ã«ã¯ organization_name ãš organization_name#de ã䜵åãåŸãã
15. Media Types
ãã®ä»æ§ã¯ããããã® media types [RFC2046] ãå®çŸ©ããã
15.1. "application/entity-statement+jwt" Media Type
application/entity-statement+jwt media type ã¯ãé¢é£ããå 容ã Section 3 ã§å®çŸ©ããã Entity Statement ã§ããããšã瀺ãããã«çšããããããã® media type ã«ã¯ãã©ã¡ãŒã¿ã䜿çšããªãã
15.2. "application/trust-mark+jwt" Media Type
application/trust-mark+jwt media type ã¯ãé¢é£ããå 容ã Section 7 ã§å®çŸ©ããã Trust Mark ã§ããããšã瀺ãããã«çšããããããã® media type ã«ã¯ãã©ã¡ãŒã¿ã䜿çšããªãã
15.3. "application/resolve-response+jwt" Media Type
application/resolve-response+jwt media type ã¯ãé¢é£ããå 容ã Section 8.3.2 ã§å®çŸ©ããã Resolve Response ã§ããããšã瀺ãããã«çšããããããã® media type ã«ã¯ãã©ã¡ãŒã¿ã䜿çšããªãã
15.4. "application/trust-chain+json" Media Type
application/trust-chain+json media type ã¯ãé¢é£ããå 容ã Section 4 ã§å®çŸ©ããã Trust Chain ã衚ã JSON é åã§ããããšã瀺ãããã«çšããããããã® media type ã«ã¯ãã©ã¡ãŒã¿ã䜿çšããªãã
15.5. "application/trust-mark-delegation+jwt" Media Type
application/trust-mark-delegation+jwt media type ã¯ãé¢é£ããå 容ã Section 7.2.1 ã§å®çŸ©ããã Trust Mark delegation ã§ããããšã瀺ãããã«çšããããããã® media type ã«ã¯ãã©ã¡ãŒã¿ã䜿çšããªãã
15.6. "application/jwk-set+jwt" Media Type
application/jwk-set+jwt media type ã¯ãé¢é£ããå 容ã Section 8.7.2 ã§å®çŸ©ãããçœ²åæžã¿ JWK Set ã§ããããšã瀺ãããã«çšããããããã® media type ã«ã¯ãã©ã¡ãŒã¿ã䜿çšããªãã
15.7. "application/explicit-registration-response+jwt" Media Type
application/explicit-registration-response+jwt media type ã¯ãé¢é£ããå 容ã Section 12.2.3 ã§å®çŸ©ããã Explicit Registration ã¬ã¹ãã³ã¹ã§ããããšã瀺ãããã«çšããããããã® media type ã«ã¯ãã©ã¡ãŒã¿ã䜿çšããªãã
15.8. "application/trust-mark-status-response+jwt" Media Type
application/trust-mark-status-response+jwt media type ã¯ãé¢é£ããå 容ã Section 8.4.2 ã§å®çŸ©ããã Trust Mark Status Response ã§ããããšã瀺ãããã«çšããããããã® media type ã«ã¯ãã©ã¡ãŒã¿ã䜿çšããªãã
16. String Operations
äžéšã® OpenID Federation ã¡ãã»ãŒãžã®åŠçã§ã¯ãã¡ãã»ãŒãžå ã®å€ãå¥ã®å€ãšæ¯èŒããå¿ èŠããããããšãã°ãiss Claim ã«ããã Entity Identifier ããsub Claim ã«ããã Entity Identifier ãšæ¯èŒããå ŽåããããããããUnicode [UNICODE] æååã®æ¯èŒã«ã¯é倧ãªã»ãã¥ãªãã£äžã®å«æãããã
ãããã£ãŠãJSON æååãšãã®ä»ã® Unicode æååãšã®æ¯èŒã¯ã以äžã«æå®ãããšããã«å®æœããªããã°ãªããªãïŒMUSTïŒã
- JSON ã«é©çšãããŠãããšã¹ã±ãŒããé€å»ããUnicode ã³ãŒããã€ã³ãã®é åãçæããã
- Unicode æ£èŠåïŒUnicode NormalizationïŒ[USA15] ã¯ãJSON æååã«ããæ¯èŒå¯Ÿè±¡ãšãªãæååã«ãããããªãæç¹ã§ãé©çšããŠã¯ãªããªãïŒMUST NOTïŒã
- 2 ã€ã®æååã®æ¯èŒã¯ãUnicode ã³ãŒããã€ã³ãå士ã®ç䟡æ¯èŒïŒã³ãŒããã€ã³ã to ã³ãŒããã€ã³ãã®ç䟡æ¯èŒïŒãšããŠå®æœããªããã°ãªããªãïŒMUSTïŒã
ããã¯ãOpenID Connect Core 1.0 [OpenID.Core] ã® Section 14 ã§æå®ãããæ¯èŒæé ãšåäžã§ããããšã«æ³šæããããã
17. Implementation Considerations
ãã®ã»ã¯ã·ã§ã³ã¯ãFederations ã®å®è£ è ããã³ãããã€ã€ãŒã«å¯ŸããFederations ã«ãããŠèæ ®ãã¹ãç¶æ³ãæ§è³ªã«é¢ããæéãæäŸããã
17.1. Federation Topologies
Entities éã«è€æ°ã®ä¿¡é Œãã¹ãæã€ Federation ããããžãŒãæ§ç¯ããããšã¯å¯èœã§ããããã®ä»æ§ã¯ãããçŠæ¢ããªããããããã€ã€ãŒãèªèããŠããå¿ èŠã®ããææ§ããçã¿åŸãã
以äžã® Federation ããããžãŒãèããã
.--------------.
| Trust Anchor |
'--.---.-----.-'
| | |
.--' '--. '---------------.
| | |
.-------------v--. .--v-------------. |
| Intermediate 1 | | Intermediate 2 | |
'-------------.--' '--.-------------' |
| | .-v--.
| | | OP |
.--v---------v---. '----'
| Intermediate 3 |
'-------.--------'
|
|
.-v--.
| RP |
'----'
Figure 53: Example topology with multiple trust paths between Entities
ãã®ããããžãŒã§ã¯ãRP ãš Trust Anchor ã®éã«è€æ°ã®ä¿¡é Œãã¹ãååšããããããããã®éã«è€æ°ã®ç°ãªã Trust Chain ãæ§ç¯ã§ããããšãæå³ãããIntermediate 1 ãš Intermediate 2 ã® metadata policy ãç°ãªãå ŽåãTrust Chain ãæ§ç¯ããéã«ã©ã¡ãã® Intermediate ã䜿çšãããã«ãã£ãŠãRP ã® Resolved Metadata ãç°ãªãçµæãšãªãåŸãããã®ãããªå·®åã®äžéšã¯ç¡å®³ã§ããäžæ¹ãäžéšã¯é害ãåŒãèµ·ããåŸãã
ã©ã®ä¿¡é Œãã¹ã Trust Chain æ§ç¯æã«éžæããããšããŠãæå³ã©ããã«æ©èœããããããžãŒããã³ metadata policy ããããã€ããããšã¯ãFederation ã®èšèšè ïŒã¢ãŒããã¯ãïŒã®åœ¹å²ã§ããããã¡ãããæœåšçãªææ§ããåé¿ãã 1 ã€ã®æ¹æ³ã¯ã2 ã€ã® Entity éã«è€æ°ã®ãã¹ãååšããªãæšïŒtreeïŒæ§é ã®ããããžãŒã®ã¿ãçšããããšã§ãããæšæ§é ã§ãªãããããžãŒã蚱容ãããããæèçã«ãæ³šææ·±ã䜿çšãã¹ãã§ããã
Federation ããããžãŒã«ã«ãŒããå«ãŸããå Žåã§ããSection 10.1 ã§èŠæ±ããããšãããããããæ§ç¯ããã Trust Chains ã¯ã«ãŒããå«ãã§ã¯ãªããªãïŒMUST NOTïŒã
17.2. Federation Discovery and Trust Chain Resolution Patterns
ãã®ã»ã¯ã·ã§ã³ã¯ããã§ãã¬ãŒã·ã§ã³å ã® entity ãçºèŠããïŒdiscoverïŒãããããã³ Trust Chains ã解決ããããã«ãå®è£ ã䜿çšãåŸãããŸããŸãªãã¿ãŒã³ãèšè¿°ãããããã§ã¯ãé¢é£ãããç°ãªã 2 ã€ã®æŠå¿µãåºå¥ããããšãéèŠã§ããã
- Discovery: ãã§ãã¬ãŒã·ã§ã³ã®äžéšã§ãã entity ãèŠã€ããããã»ã¹ãéåžžã¯ãå©çšå¯èœãªãµãŒãã¹ãããã€ãã®ãã£ã¬ã¯ããªãã«ã¿ãã°ãæ§ç¯ããç®çã§è¡ãããã
- Trust Chain Resolution: Section 10 ã«èšèŒãããšãããæ¢ç¥ã® entity ãã Trust Anchor ãŸã§ã® Trust Chain ãæ§ç¯ãæ€èšŒããããã»ã¹ããã®ããã»ã¹ã¯ããã®ä»æ§ã§ã¯ïŒSection 1.2 ã®å®çŸ©ã«åŸãïŒFederation Entity Discovery ãšãåŒã°ããã
ãããã®ãã¿ãŒã³ã¯ discovery ãš Trust Chain 解決ã®äž¡æ¹ãå«ã¿åŸãããç®çã¯ç°ãªãããŠãŒã¹ã±ãŒã¹ã«å¿ããŠç¬ç«ã«äœ¿çšããåŸããããšãã°ãOpenID Providers ã®ãã£ã¬ã¯ããªãæ§ç¯ãã discovery ãµãŒãã¹ã¯ãçºèŠãããã¹ãŠã® entity ã«ã€ããŠå¿ ããã Trust Chains ã解決ããã« entity identifiers ãåéãåŸããå®éã® Trust Chain 解決ã¯åŸæ®µã§ãããšãã° RP ãš OP ãèªèšŒãã©ã³ã¶ã¯ã·ã§ã³ãè¡ãéã« Section 10 ã® Trust Chain 解決ããã»ã¹ãçšããŠå®æœãããå Žåãããã
å®è£ ã¯ã以äžã®ãã¿ãŒã³ã® 1 ã€ä»¥äžããµããŒããåŸãã
- Bottom-Up Trust Chain Resolution (Section 17.2.1): Section 10 ã«èšèŒãããšãããæ¢ç¥ã® entity identifier ããéå§ã㊠Trust Chains ã解決ããã
- Top-Down Discovery (Section 17.2.2): Trust Anchor ããéå§ããéå±€ãäžããªãããã§ãã¬ãŒã·ã§ã³å ã® entity ãæ¢çŽ¢ããã
- Single Point of Trust Resolution (Section 17.2.3): Resolve Endpoint ãå®è£ ããä¿¡é Œã§ãã resolver ã« Trust Chain 解決ãå§è²ããã
Federation ã®éçšè ã¯ãç°ãªããŠãŒã¹ã±ãŒã¹ãçµ±åã·ããªãªã«å¯Ÿå¿ãããããè€æ°ã®ãã¿ãŒã³ããµããŒãããããšãéžæãåŸãããµããŒããããã¿ãŒã³ã®éžæã¯ããã§ãã¬ãŒã·ã§ã³ã®äœ¿ãããããã广çã«çµ±åã§ããã¢ããªã±ãŒã·ã§ã³ã®çš®é¡ã«åœ±é¿ããã
17.2.1. Bottom-Up Trust Chain Resolution
Bottom-up Trust Chain 解決ã¯ãSection 10 ã§èšè¿°ãããããã»ã¹ã§ãããTerminology ã»ã¯ã·ã§ã³ã®å®çŸ©ã«ãããšãã Federation Entity Discovery ãšãåŒã°ããããã®ããã»ã¹ã¯æ¢ç¥ã® Entity Identifier ããéå§ããTrust Anchor ã«å°éãããŸã§ãã§ãã¬ãŒã·ã§ã³éå±€ãäžæ¹åã«ãã©ã£ãŠ Trust Chain ãæ§ç¯ããããã®ãã¿ãŒã³ã¯æªç¥ã® entity ãèŠã€ããæå³ã§ã® discovery ã§ã¯ãªããæ¢ç¥ã® entity ã«å¯Ÿãã trust 解決ã§ããã
ãã®ãã¿ãŒã³ã¯ããã entity ããEntity Identifier ãæ¢ã«åãã£ãŠããå¥ã® entity ã®ä¿¡é Œæ§ãæ€èšŒããå¿ èŠããããšãã«çšãããããå žåçã«ã¯ä»¥äžã®çšéã§äœ¿çšãããã
- OpenID Providers ããèªèšŒãªã¯ãšã¹ãã®éã« Relying Party (RP) ãæ€èšŒããå Žå
- Resource servers ã Client ã®ä¿¡é Œæ§ãæ€èšŒããå Žå
- æ¢ç¥ã®åœäºè ããã®åä¿¡ãªã¯ãšã¹ããæ€èšŒããä»»æã® Entity ã®å Žå
- ãã§ãã¬ãŒã·ã§ã³ç°å¢ã«ãããåçãªä¿¡é Œç¢ºç«ã®å Žå
Bottom-up Trust Chain 解決ããã»ã¹ã¯ãSection 10 ã«èšèŒãããšããã以äžã®æé ã«åŸãã
- subject entity ã® Entity Configuration ããéå§ããïŒæäŸãããããSection 9 ã§å®çŸ©ãããããã»ã¹ã§ååŸããïŒã
- authority_hints ãçšã㊠immediate superior entities ãç¹å®ããã
- å Superior Entity ã® Entity Configuration ãååŸããã
- Fetch EndpointsïŒSection 8.1.1 ã§å®çŸ©ïŒãçšããŠãsubject entity ã«é¢ãã Subordinate Statements ãååŸããã
- Trust Anchor ã«å°éãããŸã§éå±€ãååž°çã«äžæ¹åãžãã©ãã
- å®å šãª Trust Chain ãæ§ç¯ãæ€èšŒããã
- federation policy ãé©çšã㊠resolved metadata ãå°åºããã
17.2.2. Top-Down Discovery
Top-down discovery ã¯ãæ¢ç¥ã® Trust Anchor ããéå§ãããã§ãã¬ãŒã·ã§ã³éå±€ãäžæ¹åã«ãã©ãããšã§ããã§ãã¬ãŒã·ã§ã³ã®äžéšã§ãã entity ãèŠã€ããããã»ã¹ã§ããããã®ãã¿ãŒã³ã¯ãäºåã« Entity Identifiers ãå¿ ãããææ¡ããŠããªãç¶æ ã§ãå©çšå¯èœãª entityãç¹ã«ç¹å®ã® Entity Types ã® entity ãçºèŠããããšãç®çãšããå Žåã«çšããããã
ãã®ãã¿ãŒã³ã¯ãç¹ã«ä»¥äžã«æçšã§ããã
- Relying Party (RP) ã OpenID Providers ãæ¢ãããã®ãµãŒãã¹ discovery
- Clients ãç¹å®ã®ãµãŒãã¹çš®å¥ãæ¢ãããã®ãªãœãŒã¹ discovery
- Federation ã®é²èŠ§ãæ¢çŽ¢
- ãããã€ãã®ãã£ã¬ã¯ããªãã«ã¿ãã°ã®æ§ç¯ïŒäŸ: WAYF ãµãŒãã¹ãSeamless AccessïŒ
Top-down discovery ããã»ã¹ã¯ä»¥äžã®æé ã«åŸãã
- discovering entity ãä¿¡é Œããæ¢ç¥ã® Trust Anchor ããéå§ããã
- list endpointïŒSection 8.2 ã§å®çŸ©ïŒãçšã㊠Immediate Subordinate entities ãçºèŠããã
- entity_type ãã©ã¡ãŒã¿ã§ãã£ã«ã¿ãããããã³ã«åºæã®ãããã€ãïŒäŸ: openid_providerïŒãèŠã€ããã
- Intermediate entities ã«ã€ããŠã¯ããã® Subordinates ãååž°çã«ãã©ãã
- çºèŠãã entity ã® Entity Identifiers ãåéããå¿ èŠã«å¿ã㊠Entity Configurations ãåéããã
Top-down discovery ã« Trust Chain 解決ãå«ãããã©ããã¯ãŠãŒã¹ã±ãŒã¹ã«äŸåãåŸãç¹ã«æ³šæãããããããšãã°ããã°ã€ã³æã«ãŠãŒã¶ãŒãéžæããããã® OpenID Providers ã®ãã£ã¬ã¯ããªãæ§ç¯ããå Žåãdiscovery ãµãŒãã¹ã¯ããã¹ãŠã®çºèŠæžã¿ entity ã«ã€ã㊠Trust Chains ã解決ããã«ãentity identifiers ãšåºæ¬ç㪠metadata ãåéããããšãããããããããã£ã¬ã¯ããªã«å«ããåã« entity ããã§ãã¬ãŒã·ã§ã³ã«æ£ããç»é²ãããŠããããšãæ€èšŒããå¿ èŠãããå Žåãdiscovery ããã»ã¹ã®äžéšãšã㊠Trust Chain 解決ãè¡ãããšãéžæãåŸãã
17.2.3. Single Point of Trust Resolution
Single point of trust 解決ã¯ãSection 8.3 ã§å®çŸ©ããã Resolve Endpoint ãå®è£ ããä¿¡é Œã§ãã resolver ã«ãTrust Chain 解決ããã»ã¹å šäœãå§è²ãããããã«ãã entity ã¯ãTrust Chain 解決ã®è€éããå°éãµãŒãã¹ãžãªãããŒãã§ããã
ãã®ãã¿ãŒã³ã¯ã以äžã«æçšã§ããã
- Trust Chain 解決ã®è€éãããªãããŒãããã Entities
- éäžåã® trust è©äŸ¡ãµãŒãã¹
- resolved metadata ã®ãã£ãã·ã¥ã«ããæ§èœæé©å
- 軜é client ã«å¯Ÿããçµ±åã®ç°¡çŽ å
ãã®ãã¿ãŒã³ã§ã¯ãsubject entity ã® Entity Identifier ãäºåã«æ¢ç¥ã§ããå¿ èŠãããç¹ã«æ³šæããããããã§ãã¬ãŒã·ã§ã³å ã®æªç¥ã® entity ãèŠã€ãããšããæå³ã§ã® discovery æ©èœã¯æäŸããªãã
Single point of trust 解決ããã»ã¹ã¯ä»¥äžã®æé ã«åŸãã
- Resolve Endpoint ãæã€ä¿¡é Œã§ãã resolver ãç¹å®ããã
- subject Entity Identifier ãš Trust Anchor ã resolver ã«éä¿¡ããã
- resolver ãïŒbottom-up ãã¿ãŒã³ã«åŸã£ãŠïŒå éšã§å®å šãª Trust Chain 解決ãè¡ãã
- resolver ã resolved metadata ãš Trust Marks ãè¿ãã
- å¿ èŠã«å¿ããŠãresolver èªèº«ã® Trust Chain ãæ€èšŒããã
- ãããã³ã«åŠçã« resolved metadata ã䜿çšããã
17.3. Trust Anchors and Resolvers Go Together
ãã§ãã¬ãŒã·ã§ã³å ã« resolver ã 1 ã€ããååšããªãå Žåããã® entity 㯠Trust Anchor ãš Resolver ã®äž¡æ¹ã§ããã¹ãã§ãããããã§ããã°ãresolver ã®å©çšè 㯠Resolver ã®ããã« Trust Chains ãåéããŠè©äŸ¡ããå¿ èŠããªããªããTrust Anchor ã¯å®çŸ©äžä¿¡é ŒãããŠããããã® entity ã Resolver ãšããŠãæ©èœãããªãããã®ãµãŒãã¹ã¯æé»ã«ä¿¡é Œãããããšã«ãªãã
17.4. One Entity, One Service
ãã entity ã Trust Anchor ãš Resolver ã®åæ¹ã®ãµãŒãã¹ãæäŸã§ããããã«ããããšãšã¯å¥ã«ãå entity ã 1 ã€ã®ããšã ããè¡ãããã«ããŠããã®ã«ã¯ååãªçç±ããããçç±ã¯ãå°æ¥ãç¹å®ã®ãµãŒãã¹ããã§ãã¬ãŒã·ã§ã³éã§å ±æããããšãã¯ããã«å®¹æã«ãªãããã§ããã
17.5. Trust Mark Policies
Entity Statement ã«ããã trust marks ãæ€èšŒããéããã㯠3 ã€ã®éšåã«åããããã
- Validating Trust Marks in the Context of Validating an Entity Statement\ Section 3.6 ã® Entity Statement Validation ã®æèšã«ããã°ãTrust Mark ã®æ€èšŒã¯ Claim Value ã®æ§ææ€èšŒïŒtrust_mark_type ã®å€ã®æŽåæ§ãå«ãïŒã«éå®ãããã
- Validating a Specific Trust Mark\ ãã㯠Section 7.3 ã§èšè¿°ãããå 容ã§ãããTrust Mark ãæ€èšŒããã«ã¯ãentity 㯠Trust Mark Issuer ãããåœè©² Entity ãä¿¡é Œãã Trust Anchor ãŸã§ã® Trust Chain ãèŠã€ããªããã°ãªããªããããã¯ããã®åŸã¢ããªã±ãŒã·ã§ã³ãããã³ã«ã§ã©ã®ãã§ãã¬ãŒã·ã§ã³ãçšããããããšã¯ç¡é¢ä¿ã§ããã
- Deciding which Trust Marks to Use\ ãããã§ãã¬ãŒã·ã§ã³ã¯ãç¹å®ã®åºæºã«åèŽãã Trust Marks ã®ã¿ã䜿çšãã¹ãã§ããïŒSHOULDïŒãšãã policy ãæã¡åŸãïŒMAYïŒã
ãã®ãããªåºæºã®äŸãšããŠã¯ãTrust Mark ã® trust_mark_type ã Trust Anchor ã® trust_mark_issuers ã«åæãããŠããããšããããŠããã§ããå Žåã«ããã®ã€ã³ã¹ã¿ã³ã¹ã® iss ã察å¿ãã Entity Identifiers ã®ãªã¹ãã«å«ãŸããŠããããšãæããããããªãããã®ãªã¹ãã¯ç©ºãªã¹ãã§ããå Žåããããããã¯åœè©² trust_mark_type ã® Trust Mark ã誰ã§ãçºè¡ã§ããããšãæå³ããããã®ãã㪠Trust Marks ã¯ãããŸããŸãªçç±ã§çŸãåŸããããšãã°ãå¥ã®ãã§ãã¬ãŒã·ã§ã³ã«é¢é£ä»ãããã Trust Marks ã Entity Configuration ãå«ãã§ããå Žåããç¹å®ã®ç®çãŸãã¯ç¹å®ã® Entity ã®å¯Ÿè±¡è ã®ããã«æå³ããã Trust Marks ã®å Žåã§ããã
Entity ã¯ãŸããèªèº«ã®è£éã«ããããã§ãã¬ãŒã·ã§ã³å ã§èªèãããŠããªã Trust Marks ã§ãã£ãŠããã〠accreditation authority ãã¢ãŠããªããã³ãã®ä»çµã¿ã«ãã£ãŠç¢ºç«ãããå Žåã«ã¯ãæç€ºããã Trust Marks ãå©çšããããšãéžæããŠãããïŒMAYïŒã
18. Security Considerations
18.1. Denial-of-Service Attack Prevention
ãã®ä»æ§ã§å®çŸ©ãããããã€ãã®ã€ã³ã¿ãã§ãŒã¹ã¯ãDenial-of-ServiceïŒDoSïŒæ»æã«å©çšããåŸããç¹ã«ãresolve endpointïŒSection 8.2ïŒãExplicit Client RegistrationïŒSection 12.2ïŒãAutomatic Client RegistrationïŒSection 12.1ïŒã¯ HTTP äŒææ»æïŒHTTP propagation attacksïŒã®ãã¯ã¿ãšããŠæªçšããåŸãã以äžã§ã¯ããã®ãããªæ»æãã©ã®ããã«çºçãåŸãããããã³ãããé²ãããã®å¯Ÿçã説æããã
æ»æè ã¯ãèªèº«ã® Entity Configuration ã«äœçŸãã®åœã® authority_hints ãæäŸããããšã§ãFederation Entity Discovery ã®ä»çµã¿ãæªçšãã倿°ã® HTTP ãªã¯ãšã¹ããäŒæããåŸããæ»æè ã OP ã« authorization request ãéä¿¡ãã RP ãæ¯é ããŠããç¶æ³ãæ³åããŠã»ãããæ»æè ãäœæããåãªã¯ãšã¹ãã«å¯ŸããOP ã¯ãæ»æè ã® Entity Configuration ãååŸããããã® 1 ã€ã®ãªã¯ãšã¹ããçæããããã« authority_hints ã«èŠã€ãã£ãå URL ããšã«ãã 1 ã€ã®ãªã¯ãšã¹ããçæããã
ãããã® endpoint ãæäŸãããå Žåã[RFC4732] ã«èšèŒããããã®ãå«ãã以äžã«è¿°ã¹ããããªé©åãªé²åŸ¡ææ³ãå¿ èŠã§ããã
- å®è£ ã¯ã調æ»ããææã®ãã authority_hints ã®æ°ã«äžéãèšããã¹ãã§ãããããã¯ãæ»æè ãèªèº«ã® Entity Configuration ã«å€æ°ã®åœ authority_hints ãå®çŸ©ããæ»æããä¿è·ããããã§ããã
- Entities ã¯ãSection 12.1.1.1 ã§èª¬æããããšããããªã¯ãšã¹ãã« Trust ChainïŒSection 4.3ïŒãå«ããããšãèŠæ±ããåŸããéç㪠Trust Chain ã¯äºåå®çŸ©ãããä¿¡é Œãã¹ãæäŸãããããFederation Entity Discovery ã宿œããå¿ èŠããªããªãããã®å ŽåãTrust Anchor ã®å ¬ééµã§ Trust Chain ãéçã«æ€èšŒã§ãããããäŒææ»æã¯é²æ¢ãããã
- Trust Mark ã¯ããã® issuer ã®å ¬ééµãçšããŠéçã«æ€èšŒã§ãããTrust Marks ã®éçæ€èšŒã¯ãäŒææ»æã«å¯Ÿãããã£ã«ã¿ãšãªããOpenID Provider (OP) ã Entity Configuration å ã§å°ãªããšã 1 ã€ã®æå¹ãª Trust Mark ãçºèŠããå Žåãããã¯ãªã¯ãšã¹ããéå§ãã Relying Party (RP) ã®ä¿¡é Œæ§ã®èšŒæ ãšãªãåŸããTrust Mark ã¯ä»»æã§ããããããããèŠæ±ãããã©ããã®æ±ºå®ã¯ãã§ãã¬ãŒã·ã§ã³å®è£ ã®è£éã«å§ãããããã§ãã¬ãŒã·ã§ã³ã¯ç¹å®ã®ããŒãºã«åŸã£ãŠ Trust Marks ãå®çŸ©ãèŠæ±ãåŸãã
- resolve endpoint ã«ãã㊠Client èªèšŒãäžèŠãªå Žåãåä¿¡ãªã¯ãšã¹ããèªåçã« Trust Chains ã®åéïŒFederation Entity Discovery ããã»ã¹ïŒããã³è©äŸ¡ãåŒãèµ·ããã¹ãã§ã¯ãªãã代ããã«ããã® resolve endpoint ã¯ãèªèšŒãããŠããªã Client ãªã¯ãšã¹ãã«å¯ŸããŠãæ¢ã«è©äŸ¡ããä¿¡é Œã«è¶³ããšå€æããã Entities ã«é¢ãããã£ãã·ã¥æžã¿æ å ±ã®ã¿ã§å¿çãã¹ãã§ããããã®å ŽåãFederation Entity Discovery ããã»ã¹ã®éå§ã resolve endpoint ã®ããã©ã«ãåäœã§ãã£ãŠã¯ãªããªãã
- request objects ãåç §æž¡ãïŒrequest_uri request ãã©ã¡ãŒã¿ã䜿çšïŒããããšã¯ãSection 12.1.1 ã§èª¬æããããšãããæ»æè ã OP ã«å¯ŸããŠæ»æè ã®å¶åŸ¡äžã«ããä»»æã®ã³ã³ãã³ããååŸãããä»çµã¿ãæé€ãããããäžéšã®ãããã€ã¡ã³ãã§ã¯ãµããŒããããªãå Žåãããã
18.2. Unsigned Error Messages
ãã®ãããã³ã«ã®åºæ¬çãªèšèšç®æšã® 1 ã€ã¯ãã¡ãã»ãŒãžã end-to-end ã§ä¿è·ããããšã§ããããã㯠TLS ãèŠæ±ããã ãã§ã¯éæã§ããªãããªããªããå€ãã®å Žå TLS 㯠end-to-end ã§ã¯ãªããHTTPS ãã HTTP ãžã®ãªããŒã¹ãããã·ã§çµç«¯ããããã§ããããããã£ãŠã眲åãããŠããªããšã©ãŒã¡ãã»ãŒãžã蚱容ãããšãDoS æ»æãè¡ãããè ã«å¯ŸããŠæ»æãã¯ã¿ãéãããšã«ãªãããã㯠OpenID Federation åºæã®è©±ã§ã¯ãªããHTTPS ãã HTTP ã®ãªããŒã¹ãããã·ã䜿çšãããä»ã®ãããã³ã«ã«ãããŠãåæ§ã«åœãŠã¯ãŸãã
19. Privacy Considerations
å®è£ è ã¯ã以äžã®ãã©ã€ãã·ãŒäžã®èæ ®äºé ãèªèãã¹ãã§ããã
Entity Statements\ Entity Statements ã¯ãå人éã®ä¿¡é Œé¢ä¿ãç¹å®ã®æ¥åã¢ããªã±ãŒã·ã§ã³ã®ããã§ã¯ãªãããã§ãã¬ãŒã·ã§ã³å ã®çµç¹ç㪠Entities éã®ä¿¡é Œé¢ä¿ã確ç«ããããèšèšãããŠãããKnow Your Customer ã Anti-Money Laundering ã®ããã»ã¹ã§å¿ èŠãšãªãå人ãŸãã¯æ³äººã«å¯Ÿããä¿¡é Œã»è©å€è©äŸ¡ã¯ããããã®ç®çã«ç¹åããå°éãã©ãããã©ãŒã ãéããŠç®¡çãããã¹ãã§ãããEntity Statements ã¯å ¬éã€ã³ãã©ãçšããŠä¿¡é Œé¢ä¿ãä¿é²ããããããã§ãã¬ãŒã·ã§ã³éçšããã³çµç¹éã®ä¿¡é Œç¢ºç«ã«å¿ èŠäžå¯æ¬ ãªæ å ±ã«éå®ãããã¹ãã§ããã
Trust Mark Status\ Trust Mark Status endpoint ã¯ãTrust Marks ã®ç¶æ ããªã¢ã«ã¿ã€ã ã«åãåãããããããã«ãããFederation Fetch endpoint ãšåæ§ã«ãTrust Mark Status endpoint ããããªã client èªèšŒæ¹åŒã§ãä¿è·ãããŠããªãå ŽåãTrust Marks ãæ€èšŒãããªã¯ãšã¹ãã¯ãå¿ ããã Entities éã®å®éã®çžäºäœçšãé¢ä¿ã瀺ããšã¯éãããåã«æ¥åžžçãªãããã¯ãŒã¯æ€æ»ã discovery ããã»ã¹ã®äžéšã§ããå¯èœæ§ããããããã¯ãIPv4/IPv6 ã¢ãã¬ã¹ã DNS Whois ãšã³ããªã®ãããªæšæºçãªãããã¯ãŒã¯èšºæããŒã«ãéããŠãTrust Mark Issuers ããä»ã® Entities ã«ã€ããŠã® Trust Marks ãè©äŸ¡ããŠãã Entities ã远跡ã§ããŠããŸãå¯èœæ§ãããã远跡ãªã¹ã¯ã軜æžãããããå®è£ ã¯ç寿åœã® Trust Marks ã䜿çšããããŸã㯠Trust Marked Entities ListingïŒSection 8.5ïŒã sub ãã©ã¡ãŒã¿ãªãã§ trust_mark_type ãã©ã¡ãŒã¿ã®ã¿ã§äœ¿çšããããšã§ Trust Mark Status endpoint ã䜿çšããå¿ èŠæ§ãæžããããšãã£ã察çãåãåŸãã
Federation Fetch Endpoint\ Federation Fetch endpoint ã¯ãSubordinate Statements ããªã¢ã«ã¿ã€ã ã«åãåãããããããã«ãããTrust Mark Status ã®æ€èšŒãšåæ§ã«ããã§ãã¬ãŒã·ã§ã³åºç€ãå ¬éããåºãé²èЧå¯èœã§ãããã〠endpoints ããããªã client èªèšŒæ¹åŒã§ãä¿è·ãããŠããªãå ŽåãSubordinate Statements ãååŸãããªã¯ãšã¹ãã¯ãå¿ ããã Entities éã®å®éã®çžäºäœçšãé¢ä¿ã瀺ããšã¯éãããåã«æ¥åžžçãªãããã¯ãŒã¯æ€æ»ã discovery ããã»ã¹ã®äžéšã§ããå¯èœæ§ããããããããããã¯ãIPv4/IPv6 ã¢ãã¬ã¹ã DNS Whois ãšã³ããªã®ãããªæšæºçãªãããã¯ãŒã¯èšºæããŒã«ãéããŠãTrust Anchors ãŸã㯠Intermediates ããä»ã® Entities ãšã® trust é¢ä¿ãè©äŸ¡ããŠãã Entities ã远跡ã§ããŠããŸãå¯èœæ§ããããEntities ãä»ã® Entities ãæ€æ»ãçžäºäœçšããããšã«é¢ãã远跡ãªã¹ã¯ã軜æžãããããå®è£ è ã¯ãé©åãªå Žåã«éçãã€ç寿åœã® Trust Chains ã䜿çšããããšãæ€èšãã¹ãã§ãããããã«ãããSubordinate Statements ããªã¢ã«ã¿ã€ã ã«ååŸããå¿ èŠæ§ãæžãããã
20. IANA Considerations
20.1. OAuth Dynamic Client Registration Metadata Registration
ãã®ä»æ§ã¯ã[RFC7591] ã«ãã確ç«ããã IANAãOAuth Dynamic Client Registration Metadataãã¬ãžã¹ã㪠[IANA.OAuth.Parameters] ã«ã以äžã® client metadata ãšã³ããªãç»é²ããã
Client Metadata Name: client_registration_types
Client Metadata Description: RP ã䜿çšããã client ç»é²çš®å¥ãæå®ããæååã®é å
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.1.2
Client Metadata Name: signed_jwks_uri
Client Metadata Description: client ã® JWK Set ããã¥ã¡ã³ãã payload ãšããçœ²åæžã¿ JWT ãåç §ãã URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.1
Client Metadata Name: organization_name
Client Metadata Description: ãã® client ãææããçµç¹ã衚ã人éå¯èªãªåç§°
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Client Metadata Name: description
Client Metadata Description: End-User ã«æç€ºå¯èœãªããã® client ã®äººéå¯èªãªç°¡æœãªèª¬æ
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Client Metadata Name: keywords
Client Metadata Description: ãã® client ã«é©çšãããæ€çŽ¢ããŒã¯ãŒããã¿ã°ãã«ããŽãªããŸãã¯ã©ãã«ã衚ã 1 ã€ä»¥äžã®æååãããªã JSON é å
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Client Metadata Name: information_uri
Client Metadata Description: End-User ãé²èЧã§ããããã® client ã«é¢ããè¿œå æ å ±ã®ããã¥ã¡ã³ã URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Client Metadata Name: organization_uri
Client Metadata Description: ãã® client ãææããçµç¹ã® Web ããŒãžã® URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
20.2. OAuth Authorization Server Metadata Registration
ãã®ä»æ§ã¯ã[RFC8414] ã«ãã確ç«ããã IANAãOAuth Authorization Server Metadataãã¬ãžã¹ã㪠[IANA.OAuth.Parameters] ã«ã以äžã® metadata ãšã³ããªãç»é²ããã
Metadata Name: client_registration_types_supported
Metadata Description: Client Registration Types Supported
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.1.3
Metadata Name: federation_registration_endpoint
Metadata Description: Federation Registration Endpoint
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.1.3
Metadata Name: signed_jwks_uri
Metadata Description: ãã® authorization server ã® JWK Set ããã¥ã¡ã³ãã payload ãšããçœ²åæžã¿ JWT ãåç §ãã URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.1
Metadata Name: jwks
Metadata Description: 倿ž¡ãã§æž¡ããã JSON Web Key Set ããã¥ã¡ã³ã
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.1
Metadata Name: organization_name
Metadata Description: ãã® authorization server ãææããçµç¹ã衚ã人éå¯èªãªåç§°
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: display_name
Metadata Description: End-User ã«æç€ºããã authorization server ã®äººéå¯èªãªåç§°
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: description
Metadata Description: End-User ã«æç€ºå¯èœãªããã® authorization server ã®äººéå¯èªãªç°¡æœãªèª¬æ
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: keywords
Metadata Description: ãã® authorization server ã«é©çšãããæ€çŽ¢ããŒã¯ãŒããã¿ã°ãã«ããŽãªããŸãã¯ã©ãã«ã衚ã 1 ã€ä»¥äžã®æååãããªã JSON é å
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: contacts
Metadata Description: ãã® authorization server ã®è²¬ä»»è ã«é£çµ¡ããæ¹æ³ïŒéåžžã¯ã¡ãŒã«ã¢ãã¬ã¹ïŒã衚ãæååã®é å
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: logo_uri
Metadata Description: ãã® authorization server ãææããçµç¹ã®ããŽãåç §ãã URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: information_uri
Metadata Description: End-User ãé²èЧã§ããããã® authorization server ã«é¢ããè¿œå æ å ±ã®ããã¥ã¡ã³ã URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: organization_uri
Metadata Description: ãã® authorization server ãææããçµç¹ã® Web ããŒãžã® URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
20.3. OAuth Protected Resource Metadata Registration
ãã®ä»æ§ã¯ã[RFC9728] ã«ãã確ç«ããã IANAãOAuth Protected Resource Metadataãã¬ãžã¹ã㪠[IANA.OAuth.Parameters] ã«ã以äžã® protected resource metadata ãšã³ããªãç»é²ããã
Metadata Name: signed_jwks_uri
Metadata Description: protected resource ã® JWK Set ããã¥ã¡ã³ãã payload ãšããçœ²åæžã¿ JWT ãåç §ãã URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.1
Metadata Name: jwks
Metadata Description: 倿ž¡ãã§æž¡ããã JSON Web Key Set ããã¥ã¡ã³ã
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.1
Metadata Name: organization_name
Metadata Description: ãã® protected resource ãææããçµç¹ã衚ã人éå¯èªãªåç§°
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: description
Metadata Description: End-User ã«æç€ºå¯èœãªããã® protected resource ã®äººéå¯èªãªç°¡æœãªèª¬æ
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: keywords
Metadata Description: ãã® protected resource ã«é©çšãããæ€çŽ¢ããŒã¯ãŒããã¿ã°ãã«ããŽãªããŸãã¯ã©ãã«ã衚ã 1 ã€ä»¥äžã®æååãããªã JSON é å
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: contacts
Metadata Description: ãã® protected resource ã®è²¬ä»»è ã«é£çµ¡ããæ¹æ³ïŒéåžžã¯ã¡ãŒã«ã¢ãã¬ã¹ïŒã衚ãæååã®é å
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: logo_uri
Metadata Description: ãã® protected resource ãææããçµç¹ã®ããŽãåç §ãã URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
Metadata Name: organization_uri
Metadata Description: ãã® protected resource ãææããçµç¹ã® Web ããŒãžã® URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.2
20.4. OAuth Parameters Registration
ãã®ä»æ§ã¯ã[RFC6749] ã«ãã確ç«ããã IANAãOAuth Parametersãã¬ãžã¹ã㪠[IANA.OAuth.Parameters] ã«ã以äžã® parameter ãç»é²ããã
Parameter Name: trust_chain
Parameter Usage Location: authorization request
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 12.1.1.1
20.5. OAuth Extensions Error Registration
ãã®ä»æ§ã¯ã[RFC6749] ã«ãã確ç«ããã IANAãOAuth Extensions Error Registryãã¬ãžã¹ã㪠[IANA.OAuth.Parameters] ã«ã以äžã®å€ãç»é²ããã
Name: invalid_request
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: invalid_client
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: invalid_issuer
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: invalid_subject
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: invalid_trust_anchor
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: invalid_trust_chain
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: invalid_metadata
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: not_found
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: server_error
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: temporarily_unavailable
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
Name: unsupported_parameter
Usage Location: authorization endpoint
Protocol Extension: OpenID Federation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Reference: ãã®ä»æ§ã® Section 8.9
20.6. JSON Web Signature and Encryption Header Parameters Registration
ãã®ä»æ§ã¯ã[RFC7515] ã«ãã確ç«ããã IANAãJSON Web Signature and Encryption Header Parametersãã¬ãžã¹ã㪠[IANA.JOSE] ã«ã以äžã® JWS header parameters ãç»é²ããã
Header Parameter Name: trust_chain
Header Parameter Description: OpenID Federation Trust Chain
Header Parameter Usage Location: JWS
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 4.3
Header Parameter Name: peer_trust_chain
Header Parameter Description: OpenID Federation Peer Trust Chain
Header Parameter Usage Location: JWS
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 4.4
20.7. JSON Web Key Parameters Registration
ãã®ä»æ§ã¯ã[RFC7517] ã«ãã確ç«ããã IANAãJSON Web Key Parametersãã¬ãžã¹ã㪠[IANA.JOSE] ã«ã以äžã®ãã©ã¡ãŒã¿ãç»é²ããã
Parameter Name: iat
Parameter Description: RFC 7519 ã§å®çŸ©ããã Issued At
Used with "kty" Value(s): *
Parameter Information Class: Public
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 8.7.2
Parameter Name: nbf
Parameter Description: RFC 7519 ã§å®çŸ©ããã Not Before
Used with "kty" Value(s): *
Parameter Information Class: Public
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 8.7.2
Parameter Name: exp
Parameter Description: RFC 7519 ã§å®çŸ©ããã Expiration Time
Used with "kty" Value(s): *
Parameter Information Class: Public
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 8.7.2
Parameter Name: revoked
Parameter Description: Revoked Key Properties
Used with "kty" Value(s): *
Parameter Information Class: Public
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 8.7.2
20.8. JSON Web Token Claims Registration
ãã®ä»æ§ã¯ã[RFC7519] ã«ãã確ç«ããã IANAãJSON Web Token Claimsãã¬ãžã¹ã㪠[IANA.JWT.Claims] ã«ã以äžã® Claims ãç»é²ããã
Claim Name: jwks
Claim Description: JSON Web Key Set
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 13.1
Claim Name: metadata
Claim Description: Metadata object
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 13.2
Claim Name: constraints
Claim Description: Constraints object
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 13.3
Claim Name: crit
Claim Description: ãã®çš®å¥ã® JWT ã«å¯Ÿããæ¡åŒµã«ããå®çŸ©ããããã® JWT å ã«ååšããçè§£ããŠåŠçããªããã°ãªããªãïŒMUSTïŒ Claims ã®äžèЧ
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 13.4
Claim Name: ref
Claim Description: Reference
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 13.5
Claim Name: delegation
Claim Description: Delegation
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 13.6
Claim Name: logo_uri
Claim Description: ããŽãåç §ãã URI
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 13.7
Claim Name: authority_hints
Claim Description: Authority Hints
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 3.2
Claim Name: trust_anchor_hints
Claim Description: Trust Anchor Hints
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 3.2
Claim Name: trust_marks
Claim Description: Trust Marks
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 3.2
Claim Name: trust_mark_issuers
Claim Description: Trust Mark Issuers
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 3.2
Claim Name: trust_mark_owners
Claim Description: Trust Mark Owners
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 3.2
Claim Name: metadata_policy
Claim Description: Metadata Policy object
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 3.3
Claim Name: metadata_policy_crit
Claim Description: Critical Metadata Policy Operators
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 3.3
Claim Name: source_endpoint
Claim Description: Source Endpoint URL
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 3.3
Claim Name: keys
Claim Description: JWK Set å ã® JWK å€ã®é å
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 5.2.1
Claim Name: trust_mark_type
Claim Description: Trust Mark Type Identifier
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 7.1
Claim Name: trust_chain
Claim Description: Trust Chain
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 8.3.2
Claim Name: trust_anchor
Claim Description: Trust Anchor ID
Change Controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification Document(s): ãã®ä»æ§ã® Section 12.2.3
20.9. Well-Known URI Registration
ãã®ä»æ§ã¯ã[RFC5785] ã«ãã確ç«ããã IANAãWell-Known URIsãã¬ãžã¹ã㪠[IANA.well-known] ã«ã以äžã® well-known URI ãç»é²ããã
URI suffix: openid-federation
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Specification document: ãã®ä»æ§ã® Section 9
Related information: ïŒãªãïŒ
20.10. Media Type Registration
ãã®ä»æ§ã¯ã[RFC6838] ã§è¿°ã¹ãããŠããæ¹æ³ã«åŸãããMedia Typesãã¬ãžã¹ã㪠[IANA.MediaTypes] ã«ã以äžã® media types [RFC2046] ãç»é²ããã
Type name: application
Subtype name: entity-statement+jwt
Required parameters: 該åœãªã
Optional parameters: 該åœãªã
Encoding considerations: ãã€ããªãEntity Statement 㯠JWT ã§ãããJWT ã®å€ã¯ãbase64url ã§ãšã³ã³ãŒããããå€ïŒç©ºæååã§ããå ŽåãããïŒã®é£ãªããšããŠãšã³ã³ãŒããããããªãªãïŒ'.'ïŒæåã§åºåãããã
Security considerations: ãã®ä»æ§ã® Section 18 ãåç §
Interoperability considerations: 該åœãªã
Published specification: ãã®ä»æ§ã® Section 15.1
Applications that use this media type: ãã®ä»æ§ã䜿çšããã¢ããªã±ãŒã·ã§ã³
Fragment identifier considerations: 該åœãªã
Additional information:
Magic number(s): 該åœãªã
File extension(s): 該åœãªã
Macintosh file type code(s): 該åœãªã
Person & email address to contact for further information:
Michael B. Jones, michael_b_jones@hotmail.com
Intended usage: COMMON
Restrictions on usage: ãªã
Author: Michael B. Jones, michael_b_jones@hotmail.com
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Provisional registration? No
Type name: application
Subtype name: trust-mark+jwt
Required parameters: 該åœãªã
Optional parameters: 該åœãªã
Encoding considerations: ãã€ããªãTrust Mark 㯠JWT ã§ãããJWT ã®å€ã¯ãbase64url ã§ãšã³ã³ãŒããããå€ïŒç©ºæååã§ããå ŽåãããïŒã®é£ãªããšããŠãšã³ã³ãŒããããããªãªãïŒ'.'ïŒæåã§åºåãããã
Security considerations: ãã®ä»æ§ã® Section 18 ãåç §
Interoperability considerations: 該åœãªã
Published specification: ãã®ä»æ§ã® Section 15.2
Applications that use this media type: ãã®ä»æ§ã䜿çšããã¢ããªã±ãŒã·ã§ã³
Fragment identifier considerations: 該åœãªã
Additional information:
Magic number(s): 該åœãªã
File extension(s): 該åœãªã
Macintosh file type code(s): 該åœãªã
Person & email address to contact for further information:
Michael B. Jones, michael_b_jones@hotmail.com
Intended usage: COMMON
Restrictions on usage: ãªã
Author: Michael B. Jones, michael_b_jones@hotmail.com
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Provisional registration? No
Type name: application
Subtype name: resolve-response+jwt
Required parameters: 該åœãªã
Optional parameters: 該åœãªã
Encoding considerations: ãã€ããªãEntity Resolve Response ã¯çœ²åä»ãã® JWT ã§ãããJWT ã®å€ã¯ãbase64url ã§ãšã³ã³ãŒããããå€ïŒç©ºæååã§ããå ŽåãããïŒã®é£ãªããšããŠãšã³ã³ãŒããããããªãªãïŒ'.'ïŒæåã§åºåãããã
Security considerations: ãã®ä»æ§ã® Section 18 ãåç §
Interoperability considerations: 該åœãªã
Published specification: ãã®ä»æ§ã® Section 15.3
Applications that use this media type: ãã®ä»æ§ã䜿çšããã¢ããªã±ãŒã·ã§ã³
Fragment identifier considerations: 該åœãªã
Additional information:
Magic number(s): 該åœãªã
File extension(s): 該åœãªã
Macintosh file type code(s): 該åœãªã
Person & email address to contact for further information:
Michael B. Jones, michael_b_jones@hotmail.com
Intended usage: COMMON
Restrictions on usage: ãªã
Author: Michael B. Jones, michael_b_jones@hotmail.com
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Provisional registration? No
Type name: application
Subtype name: trust-chain+json
Required parameters: 該åœãªã
Optional parameters: 該åœãªã
Encoding considerations: ãã€ããªãTrust Chain 㯠JWT ã® JSON é åã§ãããJWT ã®å€ã¯ãbase64url ã§ãšã³ã³ãŒããããå€ïŒç©ºæååã§ããå ŽåãããïŒã®é£ãªããšããŠãšã³ã³ãŒããããããªãªãïŒ'.'ïŒæåã§åºåãããã
Security considerations: ãã®ä»æ§ã® Section 18 ãåç §
Interoperability considerations: 該åœãªã
Published specification: ãã®ä»æ§ã® Section 15.4
Applications that use this media type: ãã®ä»æ§ã䜿çšããã¢ããªã±ãŒã·ã§ã³
Fragment identifier considerations: 該åœãªã
Additional information:
Magic number(s): 該åœãªã
File extension(s): 該åœãªã
Macintosh file type code(s): 該åœãªã
Person & email address to contact for further information:
Michael B. Jones, michael_b_jones@hotmail.com
Intended usage: COMMON
Restrictions on usage: ãªã
Author: Michael B. Jones, michael_b_jones@hotmail.com
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Provisional registration? No
Type name: application
Subtype name: trust-mark-delegation+jwt
Required parameters: 該åœãªã
Optional parameters: 該åœãªã
Encoding considerations: ãã€ããªãTrust Mark delegation ã¯çœ²åä»ãã® JWT ã§ãããJWT ã®å€ã¯ãbase64url ã§ãšã³ã³ãŒããããå€ïŒç©ºæååã§ããå ŽåãããïŒã®é£ãªããšããŠãšã³ã³ãŒããããããªãªãïŒ'.'ïŒæåã§åºåãããã
Security considerations: ãã®ä»æ§ã® Section 18 ãåç §
Interoperability considerations: 該åœãªã
Published specification: ãã®ä»æ§ã® Section 15.5
Applications that use this media type: ãã®ä»æ§ã䜿çšããã¢ããªã±ãŒã·ã§ã³
Fragment identifier considerations: 該åœãªã
Additional information:
Magic number(s): 該åœãªã
File extension(s): 該åœãªã
Macintosh file type code(s): 該åœãªã
Person & email address to contact for further information:
Roland Hedberg, roland@catalogix.se
Intended usage: COMMON
Restrictions on usage: ãªã
Author: Roland Hedberg, roland@catalogix.se
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Provisional registration? No
Type name: application
Subtype name: jwk-set+jwt
Required parameters: 該åœãªã
Optional parameters: 該åœãªã
Encoding considerations: ãã€ããªã眲åä»ã JWK Set ã¯çœ²åä»ãã® JWT ã§ãããJWT ã®å€ã¯ãbase64url ã§ãšã³ã³ãŒããããå€ïŒç©ºæååã§ããå ŽåãããïŒã®é£ãªããšããŠãšã³ã³ãŒããããããªãªãïŒ'.'ïŒæåã§åºåãããã
Security considerations: ãã®ä»æ§ã® Section 18 ãåç §
Interoperability considerations: 該åœãªã
Published specification: ãã®ä»æ§ã® Section 15.6
Applications that use this media type: ãã®ä»æ§ã䜿çšããã¢ããªã±ãŒã·ã§ã³
Fragment identifier considerations: 該åœãªã
Additional information:
Magic number(s): 該åœãªã
File extension(s): 該åœãªã
Macintosh file type code(s): 該åœãªã
Person & email address to contact for further information:
Michael B. Jones, michael_b_jones@hotmail.com
Intended usage: COMMON
Restrictions on usage: ãªã
Author: Michael B. Jones, michael_b_jones@hotmail.com
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Provisional registration? No
Type name: application
Subtype name: explicit-registration-response+jwt
Required parameters: 該åœãªã
Optional parameters: 該åœãªã
Encoding considerations: ãã€ããªãExplicit Registration response 㯠JWT ã§ãããJWT ã®å€ã¯ãbase64url ã§ãšã³ã³ãŒããããå€ïŒç©ºæååã§ããå ŽåãããïŒã®é£ãªããšããŠãšã³ã³ãŒããããããªãªãïŒ'.'ïŒæåã§åºåãããã
Security considerations: ãã®ä»æ§ã® Section 18 ãåç §
Interoperability considerations: 該åœãªã
Published specification: ãã®ä»æ§ã® Section 15.7
Applications that use this media type: ãã®ä»æ§ã䜿çšããã¢ããªã±ãŒã·ã§ã³
Fragment identifier considerations: 該åœãªã
Additional information:
Magic number(s): 該åœãªã
File extension(s): 該åœãªã
Macintosh file type code(s): 該åœãªã
Person & email address to contact for further information:
Michael B. Jones, michael_b_jones@hotmail.com
Intended usage: COMMON
Restrictions on usage: ãªã
Author: Michael B. Jones, michael_b_jones@hotmail.com
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Provisional registration? No
Type name: application
Subtype name: trust-mark-status-response+jwt
Required parameters: 該åœãªã
Optional parameters: 該åœãªã
Encoding considerations: ãã€ããªãTrust Mark Status Response ã¯çœ²åä»ãã® JWT ã§ãããJWT ã®å€ã¯ãbase64url ã§ãšã³ã³ãŒããããå€ïŒç©ºæååã§ããå ŽåãããïŒã®é£ãªããšããŠãšã³ã³ãŒããããããªãªãïŒ'.'ïŒæåã§åºåãããã
Security considerations: ãã®ä»æ§ã® Section 18 ãåç §
Interoperability considerations: 該åœãªã
Published specification: ãã®ä»æ§ã® Section 15.8
Applications that use this media type: ãã®ä»æ§ã䜿çšããã¢ããªã±ãŒã·ã§ã³
Fragment identifier considerations: 該åœãªã
Additional information:
Magic number(s): 該åœãªã
File extension(s): 該åœãªã
Macintosh file type code(s): 該åœãªã
Person & email address to contact for further information:
Michael B. Jones, michael_b_jones@hotmail.com
Intended usage: COMMON
Restrictions on usage: ãªã
Author: Michael B. Jones, michael_b_jones@hotmail.com
Change controller: OpenID Foundation Artifact Binding Working Group - openid-specs-ab@lists.openid.net
Provisional registration? No
21. References
21.1. Normative References
[OpenID.Core] Sakimura, N., Bradley, J., Jones, M.B., de Medeiros, B., and C. Mortimore, "OpenID Connect Core 1.0", 15 December 2023, openid-connect-core-1_0.html.
[OpenID.Discovery] Sakimura, N., Bradley, J., Jones, M.B., and E. Jay, "OpenID Connect Discovery 1.0", 15 December 2023, openid-connect-discovery-1_0.html.
[OpenID.Registration] Sakimura, N., Bradley, J., and M.B. Jones, "OpenID Connect Dynamic Client Registration 1.0", 15 December 2023, openid-connect-registration-1_0.html.
[OpenID.RP.Choices] Jones, M.B., Hedberg, R., Bradley, J., and F. Skokan, "OpenID Connect Relying Party Metadata Choices 1.0", 24 April 2025, openid-connect-rp-metadata-choices-1_0.html.
[RFC2119] Bradner, S., "èŠä»¶ã¬ãã«ã瀺ãããã« RFC ã§çšããããŒã¯ãŒã", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, rfc2119.
[RFC4732] Handley, M., Ed., Rescorla, E., Ed., and IAB, "ã€ã³ã¿ãŒãããã«ããããµãŒãã¹åŠšå®³ïŒDoSïŒã«é¢ããèæ ®äºé ", RFC 4732, DOI 10.17487/RFC4732, December 2006, rfc4732.
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "ã€ã³ã¿ãŒããã X.509 å ¬ééµåºç€ïŒèšŒææžããã³èšŒææžå€±å¹ãªã¹ãïŒCRLïŒãããã¡ã€ã«", RFC 5280, DOI 10.17487/RFC5280, May 2008, rfc5280.
[RFC5646] Phillips, A., Ed. and M. Davis, Ed., "èšèªãèå¥ããããã®ã¿ã°", BCP 47, RFC 5646, DOI 10.17487/RFC5646, September 2009, rfc5646.
[RFC6749] Hardt, D., Ed., "OAuth 2.0 Authorization Framework", RFC 6749, DOI 10.17487/RFC6749, October 2012, rfc6749.
[RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May 2015, rfc7515.
[RFC7516] Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)", RFC 7516, DOI 10.17487/RFC7516, May 2015, rfc7516.
[RFC7517] Jones, M., "JSON Web Key (JWK)", RFC 7517, DOI 10.17487/RFC7517, May 2015, rfc7517.
[RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, rfc7519.
[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, rfc7591.
[RFC7638] Jones, M. and N. Sakimura, "JSON Web Key (JWK) Thumbprint", RFC 7638, DOI 10.17487/RFC7638, September 2015, rfc7638.
[RFC8174] Leiba, B., "RFC 2119 ããŒã¯ãŒãã«ããã倧æåãšå°æåã®ææ§æ§", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, rfc8174.
[RFC8259] Bray, T., Ed., "JavaScript Object NotationïŒJSONïŒããŒã¿äº€æãã©ãŒããã", STD 90, RFC 8259, DOI 10.17487/RFC8259, December 2017, rfc8259.
[RFC8414] Jones, M., Sakimura, N., and J. Bradley, "OAuth 2.0 Authorization Server Metadata", RFC 8414, DOI 10.17487/RFC8414, June 2018, rfc8414.
[RFC8705] Campbell, B., Bradley, J., Sakimura, N., and T. Lodderstedt, "OAuth 2.0 çžäº TLSïŒmTLSïŒã¯ã©ã€ã¢ã³ãèªèšŒãšèšŒææžææ Access Token", RFC 8705, DOI 10.17487/RFC8705, February 2020, rfc8705.
[RFC9101] Sakimura, N., Bradley, J., and M. Jones, "OAuth 2.0 Authorization Framework: JWT-Secured Authorization RequestïŒJARïŒ", RFC 9101, DOI 10.17487/RFC9101, August 2021, rfc9101.
[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, rfc9126.
[RFC9728] Jones, M.B., Hunt, P., and A. Parecki, "OAuth 2.0 Protected Resource Metadata", RFC 9728, DOI 10.17487/RFC9728, April 2025, rfc9728.
[UNICODE] The Unicode Consortium, "The Unicode Standard", unicode çæ¬ã®ææ°æ å ±ã
[USA15] Whistler, K., "Unicode Normalization Forms", Unicode Standard Annex 15, 12 August 2023, tr15.
21.2. Informative References
[App-Fed-Linkage] Dzhuvinov, V., "How to link an application protocol to an OpenID Federation 1.0 trust layer", 4 December 2024, How to link...
[FAPI] Sakimura, N., Bradley, J., and E. Jay, "Financial-grade API Security Profile 1.0 - Part 2: Advanced", 12 March 2021, openid-financial...
[IANA.JOSE] IANA, "JSON Object Signing and Encryption (JOSE)", jose.
[IANA.JWT.Claims] IANA, "JSON Web Token Claims", jwt.
[IANA.MediaTypes] IANA, "Media Types", media-types.
[IANA.OAuth.Parameters] IANA, "OAuth Parameters", oauth-parameters.
[IANA.well-known] IANA, "Well-Known URIs", well-known-uris.
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail ExtensionsïŒMIMEïŒPart Two: Media Types", RFC 2046, DOI 10.17487/RFC2046, November 1996, rfc2046.
[RFC5785] Nottingham, M. and E. Hammer-Lahav, "Well-Known Uniform Resource IdentifiersïŒURIsïŒã®å®çŸ©", RFC 5785, DOI 10.17487/RFC5785, April 2010, rfc5785.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, DOI 10.17487/RFC6838, January 2013, rfc6838.
[RFC8725] Sheffer, Y., Hardt, D., and M. Jones, "JSON Web Token Best Current Practices", BCP 225, RFC 8725, DOI 10.17487/RFC8725, February 2020, rfc8725.
[RFC9525] Saint-Andre, P. and R. Salz, "Service Identity in TLS", RFC 9525, DOI 10.17487/RFC9525, November 2023, rfc9525.
Appendix A. Example OpenID Provider Information Discovery and Client Registration 以äžãä»®å®ãããLIGO ãããžã§ã¯ãã¯ãeduGAIN å ã®ãã¹ãŠã® OP ã«å¯ŸããŠèªåãã¡ã® wiki ãžã®ã¢ã¯ã»ã¹ãæäŸããããLIGO 㯠InCommon ãã§ãã¬ãŒã·ã§ã³ã«ç»é²ãããŠããã
以äžã¯ãeduGAIN Trust Anchor ã®äžã«ãããã§ãã¬ãŒã·ã§ã³ã瀺ãã
eduGAIN
|
+------------------+------------------+
| |
SWAMID InCommon
| |
umu.se |
| |
op.umu.se wiki.ligo.org
Figure 54: eduGAIN ãã§ãã¬ãŒã·ã§ã³å ã®åå è
SWAMID ãš InCommon ã¯ãããããããèªäœã identity federation ã§ããããŸããäž¡è ã¯å ±éã㊠eduGAIN ãã§ãã¬ãŒã·ã§ã³ã®ã¡ã³ããŒã§ãããã
SWAMID ãš InCommon 㯠Entities ã®ç»é²æ¹æ³ãç°ãªããSWAMID ã¯çµç¹ãç»é²ãããã®çµç¹ã«æå±ãã Entities ãçµç¹ã«ç»é²ããããäžæ¹ã§ InCommon ã¯ããã¹ãŠã® Entities ãçŽæ¥ç»é²ãããããã®çµç¹ Entity ã®äžã«ã眮ããªãããããã£ãŠããã§ãã¬ãŒã·ã§ã³ã«ãããæ·±ãã«éããçããã
UmeÃ¥ University ã®ç ç©¶è ã LIGO Wiki ã«ãã°ã€ã³ããããšä»®å®ãããWiki ã§ã¯ãç ç©¶è ã¯äœããã® discovery service ãçšããŠãããŒã ã® identity providerïŒop.umu.seïŒãèŠã€ããã
Wiki ã® RP éšåããã©ã® OP ãšããåããã¹ããïŒSHOULDïŒãææ¡ããããæ¬¡ã« OP ã«ã€ããŠããã€ãã®ããšãç¥ãå¿ èŠãããããããã¯ãã¹ãŠ metadata ããåŸããããããã metadata ãèŠã€ããã ãã§ã¯ååã§ã¯ãªããRP ã¯ãã® metadata ãä¿¡é Œã§ããªããã°ãªããªãã
ããã§å°ãå¯ãéãããŠããã§ãã¬ãŒã·ã§ã³ãæ§ç¯ããããã«å¿ èŠãªããšããå§ããã
A.1. Setting Up a Federation ãã§ãã¬ãŒã·ã§ã³ã®ã€ã³ãã©ãæ§ç¯ããæé ã¯æ¬¡ã®ãšããã§ããã
Trust Anchor ã®çœ²åéµãçæããããããã¯å ¬ééµïŒç§å¯éµã®ãã¢ã§ãªããã°ãªããªãïŒMUSTïŒã
Federation Entity Keys ãçšã㊠JWTs/Entity Statements ã«çœ²åã§ãã眲åãµãŒãã¹ãçšæããã
眲åä»ã Entity Statements ãå ¬éã§ãã web services ãçšæããã1 ã€ã¯ãã§ãã¬ãŒã·ã§ã³ã® Entity Identifier ã«å¯Ÿå¿ãã URL ã§ Entity Configuration ãè¿ããã®ããã 1 ã€ã¯ Section 8.1.1 ã§è¿°ã¹ã fetch endpoint ãæäŸãããã®ã
ãããã®èŠä»¶ãæºããããããFederation Operator ã¯ãã§ãã¬ãŒã·ã§ã³ã« Entities ã远å ã§ãããEntity ã®è¿œå ã¯ã次ã®ããšã«åž°çããã
ãã§ãã¬ãŒã·ã§ã³ã® Entity Identifier ãšãEntity Statements ã«çœ²åããããã« federation operator ãçšããéµãã¢ã®å ¬ééšåããEntity ã«æäŸããã
Entity ã® Entity Identifier ãšãEntity ãèªåã® Entity Configuration ã§å ¬éããäºå®ã® JWK Set ãååŸããã
federation operator ã Entities ã®è¿œå ãå§ããåã«ã誰ããã§ãã¬ãŒã·ã§ã³ã®äžå¡ã«ãªããã®ãããããŠãã§ãã¬ãŒã·ã§ã³ã®ã¬ã€ã¢ãŠãïŒæ§é ïŒãã©ãããã®ãã«ã€ããŠã®ããªã·ãŒãå¿ èŠã§ãããInCommon ã®ããã« 1 éå±€ã®ãã§ãã¬ãŒã·ã§ã³ãšããã®ããSWAMID ã®ããã« 2 éå±€ã«ããã®ãããããã¯å€éå±€ã«ããã®ãããã§ãã¬ãŒã·ã§ã³ã¯ãŸããSection 6 ã§è¿°ã¹ã federation policy framework ãçšããŠãä»ã®ããªã·ãŒãå®è£ ããããšãæ€èšã§ããã
ãã§ãã¬ãŒã·ã§ã³ãæŽåããããšãç©äºãåãå§ããã
A.2. The LIGO Wiki Discovers the OP's Metadata Federation Entity Discovery ã¯ãRP ã Section 9 ã§å®çŸ©ãããæé ãçšã㊠OP ã® EntityïŒãã®å Žå㯠https://op.umu.seïŒã® Entity Configuration ãååŸããããšããå§ãŸãäžé£ã®æé ã§ããããã®åŸã¯ãæ¬¡ã®æé ã®æµããšãªãã
authority hints ãçšã㊠Immediate Superior Entities ãæœåºããã
ãã®ãããªå Entity ã«ã€ã㊠Entity Configuration ãååŸããããã㯠Section 9 ã§å®çŸ©ãããæé ãçšããã
å Immediate Superior ã® fetch endpoint ãçšããŠãSection 8.1.1 ã«åŸããImmediate Subordinate Entity ã«é¢ãã Subordinate Statements ãååŸããã
ãããäœåç¹°ãè¿ãå¿ èŠããããã¯ããã§ãã¬ãŒã·ã§ã³ã®æ·±ãã«äŸåããã以äžã¯ãäžèšã®ãã§ãã¬ãŒã·ã§ã³æ§æãçšããŠãRP ã OP ã® metadata ãèŠã€ããããã«å®è¡ããåæé ã®çµæã§ããã
Trust Chain ãæ§ç¯ããéã«ã¯ãTrust Chain ã® subject ã® Entity Configuration ãšäœµããŠãå Immediate Superior ãèªåã® Immediate Subordinates ã«ã€ããŠçºè¡ãã Subordinate Statements ãçšããããã
Intermediates ã® Entity Configurations 㯠Trust Chain ã®äžéšã§ã¯ãªãã
A.2.1. Entity Configuration for https://op.umu.se LIGO WIKI ã® RP ã¯ãSection 9 ã§å®çŸ©ãããæé ãçšããŠãOPïŒop.umu.seïŒãã Entity Configuration ãååŸããã
çµæã¯æ¬¡ã® Entity Configuration ã§ããã
{
"authority_hints": [
"https://umu.se"
],
"exp": 1568397247,
"iat": 1568310847,
"iss": "https://op.umu.se",
"sub": "https://op.umu.se",
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "dEEtRjlzY3djcENuT01wOGxrZlkxb3RIQVJlMTY0...",
"kty": "RSA",
"n": "x97YKqc9Cs-DNtFrQ7_vhXoH9bwkDWW6En2jJ044yH..."
}
]
},
"metadata": {
"openid_provider": {
"issuer": "https://op.umu.se/openid",
"signed_jwks_uri": "https://op.umu.se/openid/jwks.jose",
"authorization_endpoint": "https://op.umu.se/openid/authorization",
"client_registration_types_supported": [
"automatic",
"explicit"
],
"request_parameter_supported": true,
"grant_types_supported": [
"authorization_code",
"implicit",
"urn:ietf:params:oauth:grant-type:jwt-bearer"
],
"id_token_signing_alg_values_supported": [
"ES256",
"RS256"
],
"logo_uri": "https://www.umu.se/img/umu-logo-left-neg-SE.svg",
"op_policy_uri": "https://www.umu.se/en/website/legal-information/",
"response_types_supported": [
"code",
"code id_token",
"token"
],
"subject_types_supported": [
"pairwise",
"public"
],
"token_endpoint": "https://op.umu.se/openid/token",
"federation_registration_endpoint": "https://op.umu.se/openid/fedreg",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"client_secret_basic",
"client_secret_jwt",
"private_key_jwt"
]
}
}
}
Figure 55: Entity Configuration Issued by https://op.umu.se
authority_hints 㯠Intermediate Entity https://umu.se ãæããŠããããããã£ãŠããããæ¬¡ã®æé ãšãªãã
ãã® Entity Configuration ã Trust Chain ã®æåã®ãªã³ã¯ã§ããã
A.2.2. Entity Configuration for https://umu.se
LIGO ã® RP ã¯ãSection 9 ã§å®çŸ©ãããæé ãçšã㊠https://umu.se ãã Entity Configuration ãååŸããã
ãªã¯ãšã¹ãã¯æ¬¡ã®ããã«ãªãã
GET /.well-known/openid-federation HTTP/1.1
Host: umu.se
Figure 56: https://umu.se ãçºè¡ãã Entity Configuration\ ãããŠããã® GET ã¯æ¬¡ãè¿ãã
{
"authority_hints": [
"https://swamid.se"
],
"exp": 1568397247,
"iat": 1568310847,
"iss": "https://umu.se",
"sub": "https://umu.se",
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "endwNUZrNTJsX2NyQlp4bjhVcTFTTVltR2gxV2RV...",
"kty": "RSA",
"n": "vXdXzZwQo0hxRSmZEcDIsnpg-CMEkor50SOG-1XUlM..."
}
]
},
"metadata": {
"federation_entity": {
"contacts": ["ops@umu.se"],
"federation_fetch_endpoint": "https://umu.se/oidc/fedapi",
"organization_uri": "https://www.umu.se",
"organization_name": "UmU"
}
}
}
Figure 57: Entity Configuration JWT Claims Set\ ãã®æé ã§ãã® Entity Configuration ããå©çšãããæ å ±ã¯ federation_fetch_endpoint ã®ã¿ã§ãããããã¯æ¬¡ã®æé ã§äœ¿çšãããã
A.2.3. Subordinate Statement Published by https://umu.se about https://op.umu.se
RP ã¯ãSection 8.1.1 ã§å®çŸ©ãããŠãã https://umu.se ãæäŸãã fetch endpoint ã䜿çšããŠãhttps://op.umu.se ã«é¢ããæ å ±ãååŸããã
ãªã¯ãšã¹ãã¯æ¬¡ã®ããã«ãªãã
GET /oidc/fedapi?sub=https%3A%2F%2Fop.umu.se&
iss=https%3A%2F%2Fumu.se HTTP/1.1
Host: umu.se
Figure 58: https://umu.se ã«å¯Ÿããhttps://op.umu.se ã«é¢ãã Subordinate Statement ãèŠæ±ãããªã¯ãšã¹ã\ ãããŠçµæã¯æ¬¡ã®ãšããã§ããã
{
"exp": 1568397247,
"iat": 1568310847,
"iss": "https://umu.se",
"sub": "https://op.umu.se",
"source_endpoint": "https://umu.se/oidc/fedapi",
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "dEEtRjlzY3djcENuT01wOGxrZlkxb3RIQVJlMTY0...",
"kty": "RSA",
"n": "x97YKqc9Cs-DNtFrQ7_vhXoH9bwkDWW6En2jJ044yH..."
}
]
},
"metadata_policy": {
"openid_provider": {
"contacts": {
"add": [
"ops@swamid.se"
]
},
"organization_name": {
"value": "University of Umeå"
},
"subject_types_supported": {
"value": [
"pairwise"
]
},
"token_endpoint_auth_methods_supported": {
"default": [
"private_key_jwt"
],
"subset_of": [
"private_key_jwt",
"client_secret_jwt"
],
"superset_of": [
"private_key_jwt"
]
}
}
}
}
Figure 59: https://umu.se ã https://op.umu.se ã«ã€ããŠçºè¡ãã Subordinate Statement\ ãã® Subordinate Statement ã Trust Chain ã® 2 çªç®ã®ãªã³ã¯ã§ããã
A.2.4. Entity Configuration for https://swamid.se
LIGO Wiki ã® RP ã¯ãSection 9 ã§å®çŸ©ãããæé ãçšã㊠https://swamid.se ãã Entity Configuration ãååŸããã
ãªã¯ãšã¹ãã¯æ¬¡ã®ããã«ãªãã
GET /.well-known/openid-federation HTTP/1.1
Host: swamid.se
Figure 60: https://swamid.se ãã Entity Configuration ãèŠæ±ãããªã¯ãšã¹ã\ ãããŠããã® GET ã¯æ¬¡ãè¿ãã
{
"authority_hints": [
"https://edugain.geant.org"
],
"exp": 1568397247,
"iat": 1568310847,
"iss": "https://swamid.se",
"sub": "https://swamid.se",
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "N1pQTzFxUXZ1RXVsUkVuMG5uMnVDSURGRVdhUzdO...",
"kty": "RSA",
"n": "3EQc6cR_GSBq9km9-WCHY_lWJZWkcn0M05TGtH6D9S..."
}
]
},
"metadata": {
"federation_entity": {
"contacts": ["ops@swamid.se"],
"federation_fetch_endpoint": "https://swamid.se/fedapi",
"organization_uri": "https://www.sunet.se/swamid/",
"organization_name": "SWAMID"
}
}
}
Figure 61: https://swamid.se ãçºè¡ãã Entity Configuration\ ãã®æé ã§ãã® Entity Configuration ããå©çšãããæ å ±ã¯ federation_fetch_endpoint ã®ã¿ã§ãããããã¯æ¬¡ã®æé ã§äœ¿çšãããã
A.2.5. Subordinate Statement Published by https://swamid.se about https://umu.se
LIGO Wiki ã® RP ã¯ãSection 8.1.1 ã§å®çŸ©ãããŠãã https://swamid.se ãæäŸãã fetch endpoint ã䜿çšããŠãhttps://umu.se ã«é¢ããæ å ±ãååŸããã
ãªã¯ãšã¹ãã¯æ¬¡ã®ããã«ãªãã
GET /fedapi?sub=https%3A%2F%2Fumu.se&
iss=https%3A%2F%2Fswamid.se HTTP/1.1
Host: swamid.se
Figure 62: https://swamid.se ã«å¯Ÿããhttps://umu.se ã«é¢ãã Subordinate Statement ãèŠæ±ãããªã¯ãšã¹ã\ ãããŠçµæã¯æ¬¡ã®ãšããã§ããã
{
"exp": 1568397247,
"iat": 1568310847,
"iss": "https://swamid.se",
"sub": "https://umu.se",
"source_endpoint": "https://swamid.se/fedapi",
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "endwNUZrNTJsX2NyQlp4bjhVcTFTTVltR2gxV2RV...",
"kty": "RSA",
"n": "vXdXzZwQo0hxRSmZEcDIsnpg-CMEkor50SOG-1XUlM..."
}
]
},
"metadata_policy": {
"openid_provider": {
"id_token_signing_alg_values_supported": {
"subset_of": [
"RS256",
"ES256",
"ES384",
"ES512"
]
},
"token_endpoint_auth_methods_supported": {
"subset_of": [
"client_secret_jwt",
"private_key_jwt"
]
},
"userinfo_signing_alg_values_supported": {
"subset_of": [
"ES256",
"ES384",
"ES512"
]
}
}
}
}
Figure 63: https://swamid.se ã https://umu.se ã«ã€ããŠçºè¡ãã Subordinate Statement\ ãã® Subordinate Statement ã Trust Chain ã® 3 çªç®ã®ãªã³ã¯ã§ããã
ãã® Subordinate Statement ã®çºè¡è ããLIGO Wiki ã® RP ãã¢ã¯ã»ã¹ã§ãã Trust Anchors ã®ãªã¹ãã«å«ãŸããŠããªããšä»®å®ãããšãããã« 1 段éé²ããå¿ èŠãããã
A.2.6. Entity Configuration for https://edugain.geant.org
RP ã¯ãSection 9 ã§å®çŸ©ãããæé ãçšã㊠https://edugain.geant.org ãã Entity Configuration ãååŸããã
ãªã¯ãšã¹ãã¯æ¬¡ã®ããã«ãªãã
GET /.well-known/openid-federation HTTP/1.1
Host: edugain.geant.org
Figure 64: https://edugain.geant.org ãã Entity Configuration ãèŠæ±ãããªã¯ãšã¹ã\ ãããŠããã® GET ã¯æ¬¡ãè¿ãã
{
"exp": 1568397247,
"iat": 1568310847,
"iss": "https://edugain.geant.org",
"sub": "https://edugain.geant.org",
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "Sl9DcjFxR3hrRGdabUNIR21KT3dvdWMyc2VUM2Fr...",
"kty": "RSA",
"n": "xKlwocDXUw-mrvDSO4oRrTRrVuTwotoBFpozvlq-1q..."
}
]
},
"metadata": {
"federation_entity": {
"federation_fetch_endpoint": "https://geant.org/edugain/api"
}
}
}
Figure 65: https://edugain.geant.org ãçºè¡ãã Entity Configuration\ Trust Anchor ã® Entity Configuration ã®äžã§ãRelying Party (RP) 㯠federation_fetch_endpoint ãæ¢ããTrust Anchor ã®æŽæ°ããã Federation Entity Keys ãååŸãããFederation å ã®å Entity ã¯ãèªèº«ã® Federation Entity Keys ããã®ä»ã®å±æ§ãããã€ã§ã倿ŽãåŸãã詳现㯠Section 11.2 ãåç §ã®ããšã
A.2.7. Subordinate Statement Published by https://edugain.geant.org about https://swamid.se
LIGO Wiki ã® RP ã¯ãSection 8.1.1 ã§å®çŸ©ãããŠãã https://edugain.geant.org ã® fetch endpoint ã䜿çšããŠããhttps://swamid.seãã«é¢ããæ å ±ãååŸããã
ãªã¯ãšã¹ãã¯æ¬¡ã®ããã«ãªãã
GET /edugain/api?sub=https%3A%2F%2Fswamid.se&
iss=https%3A%2F%2Fedugain.geant.org HTTP/1.1
Host: geant.org
Figure 66: https://edugain.geant.org ã«å¯Ÿããhttps://swamid.se ã«é¢ãã Subordinate Statement ãèŠæ±ãããªã¯ãšã¹ã\ ãããŠçµæã¯æ¬¡ã®ãšããã§ããã
{
"exp": 1568397247,
"iat": 1568310847,
"iss": "https://edugain.geant.org",
"sub": "https://swamid.se",
"source_endpoint": "https://edugain.geant.org/edugain/api",
"jwks": {
"keys": [
{
"e": "AQAB",
"kid": "N1pQTzFxUXZ1RXVsUkVuMG5uMnVDSURGRVdhUzdO...",
"kty": "RSA",
"n": "3EQc6cR_GSBq9km9-WCHY_lWJZWkcn0M05TGtH6D9S..."
}
]
},
"metadata_policy": {
"openid_provider": {
"contacts": {
"add": ["ops@edugain.geant.org"]
}
},
"openid_relying_party": {
"contacts": {
"add": ["ops@edugain.geant.org"]
}
}
}
}
Figure 67: https://edugain.geant.org ã https://swamid.se ã«ã€ããŠçºè¡ãã Subordinate Statement\ ãã® statement ã®çºè¡è ããLIGO Wiki ã® RP ãã¢ã¯ã»ã¹ã§ãã Trust Anchors ã®ãªã¹ãã«å«ãŸããŠãããšä»®å®ãããšããã® Subordinate Statement ã Trust Chain ã® 4 çªç®ã®ãªã³ã¯ãšãªããTrust Anchor ã® Entity Configuration ã Trust Chain ã«å«ããããå ŽåãããïŒMAYïŒããã®å Žåããã㯠5 çªç®ã§æåŸã®ãªã³ã¯ãšãªãã
ããã§ Trust Chain ã®ãã¹ãŠã®ã¡ã³ããŒãååŸãããèŠçŽãããšã次㮠Entity Statements ãååŸããããšã«ãªãã
- Leaf Entity https://op.umu.se ã® Entity Configuration ââ Trust Chain ã® 1 çªç®ã®ãªã³ã¯
- https://umu.se ã® Entity Configuration ââ Trust Chain ã«ã¯å«ãŸããªã
- https://umu.se ã https://op.umu.se ã«ã€ããŠçºè¡ãã Subordinate Statement ââ Trust Chain ã® 2 çªç®ã®ãªã³ã¯
- https://swamid.se ã® Entity Configuration ââ Trust Chain ã«ã¯å«ãŸããªã
- https://swamid.se ã https://umu.se ã«ã€ããŠçºè¡ãã Subordinate Statement ââ Trust Chain ã® 3 çªç®ã®ãªã³ã¯
- https://edugain.geant.org ã® Entity Configuration ââ ãªãã·ã§ã³ãšã㊠Trust Chain ã® 5 çªç®ãã€æåŸã®ãªã³ã¯
- https://edugain.geant.org ã https://swamid.se ã«ã€ããŠçºè¡ãã Subordinate Statement ââ Trust Chain ã® 4 çªç®ã®ãªã³ã¯
LIGO Wiki ã® RP ããäœããã®å®å šãª out-of-band ã®ææ®µã§æäŸãããŠãã Trust Anchor ã®å ¬ééµãçšããã°ãSection 10.2 ã«èšèŒã®ãšãã Trust Chain ãæ€èšŒã§ããããã«ãªãã
A.2.8. Verified Metadata for https://op.umu.se
ãã§ãŒã³ã®æ€èšŒãã§ããã®ã§ãLIGO Wiki ã® RP ã¯æ¬¡ã®æé ã«é²ããã
Immediate Superiors ãããããèªåã® Immediate Subordinates ã«ã€ããŠçºè¡ãã 3 ã€ã® Subordinate Statements ã® metadata policies ãçµåããLeaf Entity ãæç€ºãã metadata statement ã«ãã®çµåããªã·ãŒãé©çšãããšã次ãåŸãããã
{
"authorization_endpoint": "https://op.umu.se/openid/authorization",
"contacts": [
"ops@swamid.se",
"ops@edugain.geant.org"
],
"federation_registration_endpoint": "https://op.umu.se/openid/fedreg",
"client_registration_types_supported": [
"automatic",
"explicit"
],
"grant_types_supported": [
"authorization_code",
"implicit",
"urn:ietf:params:oauth:grant-type:jwt-bearer"
],
"id_token_signing_alg_values_supported": [
"RS256",
"ES256"
],
"issuer": "https://op.umu.se/openid",
"signed_jwks_uri": "https://op.umu.se/openid/jwks.jose",
"logo_uri": "https://www.umu.se/img/umu-logo-left-neg-SE.svg",
"organization_name": "University of Umeå",
"op_policy_uri": "https://www.umu.se/en/website/legal-information/",
"request_parameter_supported": true,
"response_types_supported": [
"code",
"code id_token",
"token"
],
"subject_types_supported": [
"pairwise"
],
"token_endpoint": "https://op.umu.se/openid/token",
"token_endpoint_auth_methods_supported": [
"private_key_jwt",
"client_secret_jwt"
]
}
Figure 68: metadata policies ãé©çšã㊠Trust Chain ããå°åºãã Resolved Metadata\ ããã§ Provider Discovery ã®æé ã®çµããã«å°éããã
A.3. Examples of the Two Ways of Doing Client Registration
Section 12 ã§è¿°ã¹ããšãããclient registration ãè¡ãæ¹æ³ã¯ 2 ã€ããã
Automatic\ å°æ¥ã®éä¿¡ã«ãã㊠client ãã©ã®æ©èœãçšããã¹ããïŒSHOULDïŒã«ã€ããŠãRP ãš OP ã®éã§äº€æžã¯è¡ãããªããéžæããã Trust Chain ã® metadata policies ã«ãã£ãŠãã£ã«ã¿ããã RP ã®å ¬é metadata ãã䜿çšããã metadata ãå®çŸ©ããã
Explicit\ RP 㯠federation_registration_endpoint ã«ã¢ã¯ã»ã¹ããããã§ RP ã® metadata ãæäŸãããOP ã¯ãTrust Chain ããã§ã«å®çŸ©ããŠãããã®ã«å ããŠããããªãå¶çŽãå ãã metadata policy ãè¿ãå ŽåãããïŒMAYïŒã
A.3.1. RP Sends Authentication Request (Automatic Client Registration)
LIGO Wiki ã® RP ã¯ç»é²ãè¡ãããçŽæ¥ Authentication Request ã®éä¿¡ã«é²ãã
以äžã¯ããã®ãã㪠Authentication Request ã®äŸã§ããã
GET /openid/authorization?
request=eyJ0eXAiOiJvYXV0aC1hdXRoei1yZXErand0IiwiYWxnIjoiU
lMyNTYiLCJraWQiOiJkVU4yYTAxd1JraGtTV3BsUVRodmNWQklOVUl3
VFVkT1VGVTJUbVZyU21oRVFYZ3paWGxwVHpkUU5BIn0.
eyJyZXNwb25zZV90eXBlIjogImNvZGUiLCAic2NvcGUiOiAib3Blbml
kIHByb2ZpbGUgZW1haWwiLCAiY2xpZW50X2lkIjogImh0dHBzOi8vd2
lraS5saWdvLm9yZyIsICJzdGF0ZSI6ICIyZmY3ZTU4OS0zODQ4LTQ2Z
GEtYTNkMi05NDllMTIzNWU2NzEiLCAibm9uY2UiOiAiZjU4MWExODYt
YWNhNC00NmIzLTk0ZmMtODA0ODQwODNlYjJjIiwgInJlZGlyZWN0X3V
yaSI6ICJodHRwczovL3dpa2kubGlnby5vcmcvb3BlbmlkL2NhbGxiYW
NrIiwgImlzcyI6ICJodHRwczovL3dpa2kubGlnby5vcmciLCAiaWF0I
jogMTU5MzU4ODA4NSwgImF1ZCI6ICJodHRwczovL29wLnVtdS5zZSJ9
.cRwSFNcDx6VsacAQDcIx
5OAt_Pj30I_uUKRh04N4QJd6MZ0f50sETRv8uspSt9fMa-5yV3uzthX
_v8OtQrV33gW1vzgOSRCdHgeCN40StbzjFk102seDwtU_Uzrcsy7KrX
YSBp8U0dBDjuxC6h18L8ExjeR-NFjcrhy0wwua7Tnb4QqtN0QCia6DD
8QBNVTL1Ga0YPmMdT25wS26wug23IgpbZB20VUosmMGgGtS5yCI5AwK
Bhozv-oBH5KxxHzH1Oss-RkIGiQnjRnaWwEOTITmfZWra1eHP254wFF
2se-EnWtz1q2XwsD9NSsOEJwWJPirPPJaKso8ng6qrrOSgw
&response_type=code
&client_id=https%3A%2F%2Fwiki.ligo.org
&redirect_uri=https%3A%2F%2Fwiki.ligo.org/openid/callback
&scope=openid+profile+email
HTTP/1.1
Host: op.umu.se
Figure 69: Automatic Client Registration ãçšãã Authentication Request\ OP ããã® Authentication Request ãåä¿¡ãããšãRP ããã§ã«ç»é²æžã¿ã§ãªãéããRP ãåçã«ååŸããRP ãšã®éã§ä¿¡é Œã確ç«ãå§ããã
A.3.1.1. OP Fetches Entity Statements
OP 㯠RPïŒwiki.ligo.orgïŒã«ã€ã㊠Trust Chain ã確ç«ããå¿ èŠãããããã®äŸã«ããã OP ã«ã¯ã次㮠2 ã€ã®ãã§ãã¬ãŒã·ã§ã³ã®å ¬ééµãèšå®ãããŠããã
- https://edugain.geant.org
- https://swamid.se
OP ã¯ãSection 9 ã§è¿°ã¹ãæé ãçšã㊠Entity Configuration ãååŸããClient Identifier https://wiki.ligo.org ã® metadata 解決ãéå§ããã
ãã®æé 㯠Appendix A.2 ã§è¿°ã¹ããã®ãšåãã§ãããæ¬¡ã® Entity Statements ãå«ã Trust Chain ãåŸãããã
- Leaf Entity https://wiki.ligo.org ã® Entity Configuration
- https://incommon.org ã https://wiki.ligo.org ã«ã€ããŠçºè¡ãã Subordinate Statement
- https://edugain.geant.org ã https://incommon.org ã«ã€ããŠçºè¡ãã Subordinate Statement
A.3.1.2. OP Evaluates the RP Metadata
LIGO Wiki ã® RP ããäœããã®å®å šãª out-of-band ã®ææ®µã§æäŸãããŠãã Trust Anchor ã®å ¬ééµãçšããã°ãSection 10.2 ã«èšèŒã®ãšãã Trust Chain ãæ€èšŒã§ããããã«ãªãã
ããã§ã¯å®å šãª Entity Statements ã¯åæãããmetadata ãš metadata_policy ã®éšåã®ã¿ã瀺ããmetadata policies 㯠2 ã€ããã
edugain.geant.org:
"metadata_policy": {
"openid_provider": {
"contacts": {
"add": ["ops@edugain.geant.org"]
}
},
"openid_relying_party": {
"contacts": {
"add": ["ops@edugain.geant.org"]
}
}
}
Figure 70: è€æ°ã® metadata type ã«é¢é£ãã Metadata Policies
incommon.org:
"metadata_policy": {
"openid_relying_party": {
"application_type": {
"one_of": [
"web",
"native"
]
},
"contacts": {
"add": ["ops@incommon.org"]
},
"grant_types": {
"subset_of": [
"authorization_code",
"refresh_token"
]
}
}
}
Figure 71: RP ã«é¢é£ãã Metadata Policy
次ã«ãããããçµåããwiki.ligo.org ã® metadata ã«é©çšããã
"metadata": {
"openid_relying_party": {
"application_type": "web",
"client_name": "LIGO Wiki",
"contacts": [
"ops@ligo.org"
],
"grant_types": [
"authorization_code",
"refresh_token"
],
"id_token_signing_alg_values_supported":
["ES256", "PS256", "RS256"],
"signed_jwks_uri": "https://wiki.ligo.org/jwks.jose",
"redirect_uris": [
"https://wiki.ligo.org/openid/callback"
],
"response_types": [
"code"
],
"subject_type": "public",
"token_endpoint_auth_method": "private_key_jwt"
}
}
Figure 72: metadata policy ããŸã é©çšããŠããªãçµåæžã¿ metadata
æçµçãªçµæã¯æ¬¡ã®ãšããã§ããã
"metadata": {
"openid_relying_party": {
"application_type": "web",
"client_name": "LIGO Wiki",
"contacts": [
"ops@ligo.org",
"ops@edugain.geant.org",
"ops@incommon.org"
],
"grant_types": [
"refresh_token",
"authorization_code"
],
"id_token_signing_alg_values_supported":
["ES256", "PS256", "RS256"],
"signed_jwks_uri": "https://wiki.ligo.org/jwks.jose",
"redirect_uris": [
"https://wiki.ligo.org/openid/callback"
],
"response_types": [
"code"
],
"subject_type": "public",
"token_endpoint_auth_method": "private_key_jwt"
}
}
Figure 73: metadata policy ãé©çšããåŸã® Resolved Metadata
Trust Chain ãšæçµç㪠Relying Party (RP) ã® metadata ãååŸã§ããã°ãOpenID Provider (OP) 㯠Authentication Request å ã® Request Object ã®çœ²åãæ€èšŒããããã«å¿ èŠãªãã®ããã¹ãŠæããããšã«ãªããæ€èšŒã«ã¯ãsigned_jwks_uri endpoint ã§å©çšå¯èœãªå ¬ééµãçšããã
A.3.2. RP Starts with Client Registration (Explicit Client Registration)
ããã§ã¯ãLIGO Wiki ã® RP ããOPïŒop.umu.seïŒã® federation_registration_endpoint ã«å¯ŸããŠæç€ºçç»é²ïŒExplicit RegistrationïŒã®ãªã¯ãšã¹ããéä¿¡ããããªã¯ãšã¹ãã«ã¯ãRP ã® Entity Configuration ãå«ãŸããã
RP ã® Entity Configuration ã«ããã JWT Claims Set ã®äŸã以äžã«ç€ºãã
{
"iss": "https://wiki.ligo.org",
"sub": "https://wiki.ligo.org",
"iat": 1676045527,
"exp": 1676063610,
"aud": "https://op.umu.se",
"metadata": {
"openid_relying_party": {
"application_type": "web",
"client_name": "LIGO Wiki",
"contacts": ["ops@ligo.org"],
"grant_types": ["authorization_code"],
"id_token_signed_response_alg": "RS256",
"signed_jwks_uri": "https://wiki.ligo.org/jwks.jose",
"redirect_uris": [
"https://wiki.ligo.org/openid/callback"
],
"response_types": ["code"],
"subject_type": "public"
}
},
"jwks": {
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "U2JTWHY0VFg0a2FEVVdTaHptVDJsNDNiSDk5MXRBVEtNSFVkeXZwb",
"e": "AQAB",
"n": "4AZjgqFwMhTVSLrpzzNcwaCyVD88C_Hb3Bmor97vH-2AzldhuVb8K..."
}
]
},
"authority_hints": ["https://incommon.org"]
}
Figure 74: RP's Entity Configuration JWT Claims Set
OP 㯠RP ã® Entity Configuration ãåãåããä»é² A.2 ã«ç€ºãããæé ã®äžŠã³ã«åŸã£ãŠåŠçãé²ããã
OP ã¯ãä»é² A.3.1.2 ã§è¿°ã¹ãã®ãšåäžã® RP ã¡ã¿ããŒã¿ãåé¡ãªã解決ïŒresolveïŒãããç¶ããŠãèªèº«ã® OP ã¡ã¿ããŒã¿ã«æºæ ãã圢㧠RP ãç»é²ãããã®çµæãç»é²çšã® Entity StatementïŒregistration Entity StatementïŒãšããŠè¿ãã
OP ã Refresh Token ããµããŒãããªããšä»®å®ãããšãauthorization_code ã® grant type ã®ã¿ã§ RP ãç»é²ããããšã«ãªããããã¯ãRP ã«è¿ãããã¡ã¿ããŒã¿ã«ãåæ ãããã
è¿ãããã¡ã¿ããŒã¿ã«ã¯ãclient_idãclient_secretãããã³ OP ã RP ã®ããã«æãåºãããã®ä»ã®ãã©ã¡ãŒã¿ãå«ãŸããã
以äžã¯ãæç€ºçãªã¯ã©ã€ã¢ã³ãç»é²ïŒexplicit client registrationïŒã«æåããåŸãOP ã RP ã«è¿ãç»é²çš Entity Statement ã® JWT Claims Set ã®äŸã§ããã
{
"iss": "https://op.umu.se",
"sub": "https://wiki.ligo.org",
"aud": "https://wiki.ligo.org",
"iat": 1601457619,
"exp": 1601544019,
"trust_anchor": "https://edugain.geant.org",
"metadata": {
"openid_relying_party": {
"client_id": "m3GyHw",
"client_secret_expires_at": 1604049619,
"client_secret": "cb44eed577f3b5edf3e08362d47a0dc44630b3dc6ea99f7a79205",
"client_id_issued_at": 1601457619,
"application_type": "web",
"client_name": "LIGO Wiki",
"contacts": [
"ops@edugain.geant.org",
"ops@incommon.org",
"ops@ligo.org"
],
"grant_types": [
"authorization_code"
],
"id_token_signed_response_alg": "RS256",
"signed_jwks_uri": "https://wiki.ligo.org/jwks.jose",
"redirect_uris": [
"https://wiki.ligo.org/openid/callback"
],
"response_types": [
"code"
],
"subject_type": "public"
}
},
"authority_hints": [
"https://incommon.org"
],
"jwks": {
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "U2JTWHY0VFg0a2FEVVdTaHptVDJsNDNiSDk5MXRBVEtNSFVkeXZwb",
"e": "AQAB",
"n": "4AZjgqFwMhTVSLrpzzNcwaCyVD88C_Hb3Bmor97vH-2AzldhuVb8K..."
},
{
"kty": "EC",
"use": "sig",
"kid": "LWtFcklLOGdrW",
"crv": "P-256",
"x": "X2S1dFE7zokQDST0bfHdlOWxOc8FC1l4_sG1Kwa4l4s",
"y": "812nU6OCKxgc2ZgSPt_dkXbYldG_smHJi4wXByDHc6g"
}
]
}
}
Figure 75: JWT Claims Set of Registration Entity Statement Returned by OP to RP after Explicit Client Registration
Appendix B. Notices
èäœæš© (c) 2025 The OpenID Foundation.
The OpenID FoundationïŒOIDFïŒã¯ãããããå¯çš¿è ãéçºè ãå®è£ è ããŸãã¯ãã®ä»ã®é¢ä¿è ã«å¯Ÿããæ¬ Implementers DraftãFinal SpecificationããŸã㯠Final Specification Incorporating Errata Corrections ãè€è£œããããããæŽŸçèäœç©ãäœæããé åžããäžæŒãã衚瀺ããããã®ãéç¬å çã»ãã€ã€ãªãã£ããªãŒã»å šäžççãªèäœæš©ã©ã€ã»ã³ã¹ãä»äžããããã®èš±è«Ÿã¯ã(i) 仿§ãçå®ããããšãããã³ (ii) ãããææžã«åºã¥ã㊠Implementers DraftãFinal Specificationsããªãã³ã« Final Specification Incorporating Errata Corrections ãå®è£ ããããšããšããç®çã«éã£ãŠèªããããããªããOIDF ãè³æã®åºæãšããŠåž°å±è¡šç€ºïŒattributionïŒãè¡ãããšãæ¡ä»¶ãšãããããã®åž°å±è¡šç€ºã¯ OIDF ã«ããæšå¥šïŒendorsementïŒã瀺ããã®ã§ã¯ãªãã
æ¬ä»æ§ã§è¿°ã¹ãæè¡ã¯ãOpenID Foundation ã®ã¡ã³ããŒãã®ä»ãå«ããããŸããŸãªæäŸå ããã®å¯äžã«ãã£ãŠå ¬éããããOpenID Foundation ã¯ããã®æè¡ãé åžå¯èœã§ããããšã確ä¿ããããã®æé ãè¬ããŠããããæ¬ä»æ§ã§è¿°ã¹ãæè¡ã®å®è£ ãŸãã¯å©çšã«é¢é£ããŠäž»åŒµããåŸãããããªãç¥çè²¡ç£æš©ãã®ä»ã®æš©å©ã«ã€ããŠãããã®æå¹æ§ãŸãã¯ç¯å²ã«é¢ããŠç«å Žã衚æããªãããŸãããã®ãããªæš©å©ã«åºã¥ãã©ã€ã»ã³ã¹ãå©çšå¯èœãã©ããããããã¯å©çšå¯èœã ãšããŠã©ã®ç¯å²ãŸã§ãã«ã€ããŠã衚æããªããããã«ãOpenID Foundation ããã®ãããªæš©å©ãç¹å®ããããã®ç¬èªã®åãçµã¿ãè¡ã£ãããšã衚æãããã®ã§ããªããOpenID Foundation ããã³æ¬ä»æ§ã®å¯çš¿è ã¯ãæ¬ä»æ§ã«é¢ããŠãæç€ºã»é»ç€ºã»ãã®ä»ãããªã圢æ ã®ä¿èšŒãè¡ããïŒããã«æç€ºçã«åŠèªããïŒãååæ§ãé䟵害ãç¹å®ç®çãžã®é©åæ§ããŸãã¯æš©åã«é¢ããé»ç€ºã®ä¿èšŒãå«ãããã¹ãŠã®ä¿èšŒãåŠèªãããæ¬ä»æ§ãå®è£ ããããšã«äŒŽããªã¹ã¯ã¯ããã¹ãŠå®è£ è ãè² æ ãããOpenID Intellectual Property Rights policyïŒopenid.net ã«æ²èŒïŒã¯ãå¯çš¿è ã«å¯Ÿããä»ã®å¯çš¿è ããã³å®è£ è ã«å¯ŸããŠç¹å®ã®ç¹èš±è«æ±ã䞻匵ããªããšããç¹èš±ã«é¢ããçŽæïŒpatent promiseïŒãæäŸããããšãæ±ããŠãããOpenID ã¯ãæ¬ä»æ§ã宿œããããã«å¿ èŠãšãªãåŸãæè¡ã察象ãšããèäœæš©ãç¹èš±ãç¹èš±åºé¡ããŸãã¯ãã®ä»ã®å°ææš©ãååšããå¯èœæ§ãããå Žåããããªãé¢ä¿è ããã§ããã®æ å ±æäŸãæè¿ããã
Appendix C. Document History
[[ To be removed from the final specification ]]
-46
Fixed #293: Said that ECs and ESs MUST NOT contain the peer_trust_chain header parameter.
Fixed #295: Removed unnecessary "sorted as specified in Section 4" phrases.
Fixed #296: Reworded odd language about operators that can be combined.
Fixed #297: Made statement about non-interoperable JSON a note.
Fixed #298: Referenced RFC 9525 for Web PKI.
Allowed the Trust Chain in the trust_chain header parameter to begin with an Entity other than the JWT's subject.
Added reference to Client Authentication section to clarify statement about whether the caller is authenticated.
Described the use of the "aud" (audience) claim in Explicit Registration requests and responses.
Fixed #311: Clarified that the expiration of a resolve response is the minimum of the expiration of the Trust Chain and the expiration of any included Trust Mark.
Fixed #292: Included the Trust Chain in the description of the Resolve Endpoint.
-45
Fixed #233: Gave examples of the use of Automatic Registration at OAuth 2.0 endpoints other than the Authorization Endpoint and Token Endpoint.
Fixed #216: Added two more implementation considerations.
Added Implementation Considerations section "Federation Discovery and Trust Chain Resolution Patterns".
Fixed #237: The order of the elements resulting from merging two sets is not defined.
Fixed #241: Restructured Entity Statement section.
Fixed #84: Added section on validating Entity Statements.
Fixed #243: Be explicit about what to do when server validation fails in automatic registration.
Fixed #100: Define the peer_trust_chain header parameter and use it in combination with the trust_chain header parameter to provide the Federation Integrity and Metadata Integrity properties. This PR leaves the existing trust_chain request parameter for Automatic Registration and the existing Trust Chain-as-request-body syntax for Explicit Registration in place for historical reasons, but defines that the use of the trust_chain header parameter is RECOMMENDED over either of those more ad-hoc methods.
Fixed #283: Provided better description of "crit" Claim in IANA registration.
Fixed #215: Added trust_anchor_hints Entity Configuration Claim.
Fixed #275: Uppercased "Claim", "Claim Name", and "Claim Value".
-44
Fixed #127: Explained Trust Mark Issuer validation in more detail.
Corrected location of Constraints in Trust Chain Example figure.
Fixed #147: Added a note about client authentication methods and Automatic Registration.
Applied must-have feature requests for Swedish government use cases, specifically:
Make it optional to publish an Entity Configuration at the Entity Identifier's /.well-known/openid-federation URL (which is already true when using Explicit Registration).
Allow non-https Entity Identifiers (while leaving defining how to retrieve Entity Configurations for them to future extensions).
Make use of client_registration_types and client_registration_types_supported RECOMMENDED rather than REQUIRED.
Remove recommendation that informational metadata values be in the Entity's federation_entity metadata.
Applied strong requests for Swedish government use cases, specifically:
Fixes #244: Sign Trust Mark Status responses and extend the set of defined status values.
Added warning about using JWKS representations where they may not be understood.
-43
Fixed #194: Renamed trust_mark_id to trust_mark_type.
Fixed #24, #25, #212: Simplified Trust Mark Status endpoint by having it take the Trust Mark to be validated as a parameter.
Fixed #35: Removed requirement for the value and default operators to support JSON object values, since merging them requires comparison. Added note about metadata policy and comparing JSON objects.
Fixed #167: Added Privacy Considerations section.
Fixed #196: The output of rows 3 and 4 in Table 1: Examples of Outputs with Combinations of essential and subset_of for Different Inputs must be empty JSON array [].
OAuth 2.0 Protected Resource Metadata is now RFC 9728.
Follow Implementation Considerations in [OpenID.RP.Choices].
Added note about using different signing algorithms for different Entity Statements in a Trust Chain.
Fixed #172: Added Resolved Metadata as defined term.
Fixed #166: Recommend way to validate non-expiring Trust Marks.
Fixed #193: Clarified that "metadata" declarations declare the roles that the Entity plays - its Entity Types.
Fixed #202: Added String Operations section.
Fixed #173: Use Resolved Metadata term in Explicit Registration.
Added informational metadata parameters display_name, description, keywords, and information_uri and added IANA registrations for them.
Added protected resource metadata IANA registrations.
Renamed homepage_uri to organization_uri.
-42
Addresses #11, #180: Allows the following unconditional operator combinations: add + superset_of. Makes the following previously conditional operator combinations unconditional: default + one_of, default + subset_of, default + superset_of. Makes the following previously unconditional operator combination conditional: value + essential. Allows the following conditional operator combinations: value + add, value + default, value + one_of, value + subset_of, value + superset_of.
Addresses #182: When applying the subset_of operator on a metadata parameter, if the resulting intersection is empty, then the metadata is made empty. Previously it was removed, which may lead to policy override for metadata parameters that have a default value, for instance grant_types RP metadata or grant_types_supported OP metadata. The merge of two subset_of operators is changed to allow empty intersection as well.
Addresses #129: Clarifies that the combination rules for a metadata policy operator apply to both individual as well as merged metadata parameter policies.
Fixed #184: Clarified that Request Objects can be passed by value or by reference.
Fixed #178: Clarify that other client methods (than automatic and explicit) are allowed.
Fixed #181: Contributed metadata policies must be logically sound and consistent with one another.
Fixed #130: Allow multiple Trust Anchor values to be passed in resolve requests.
Require trust_chain claim in resolve response.
Fixed #161: Prohibit loops in Trust Chains.
Fixed #47: Described using and not using a provided Trust Chain during Automatic Registration.
Fixed #85: Clarified Trust Chain selection during Explicit Registration. Also corrected the authority_hints value in the Explicit Registration response to be the Immediate Superior of the RP in the Trust Chain selected for it by the OP.
Fixed #35: Clarified that using non-interoperable JSON, as per Sections 4 and 8 of RFC 8259, can result in unpredictable metadata and metadata policy behavior.
Fixed #162: Trust Mark claim id renamed to trust_mark_id. Other more specific Trust Mark JWT typ header parameter values can be used if defined by trust frameworks in use and understood by the implementation.
-41
Fixed #131: Changed anchor request parameter to trust_anchor, changed trust_anchor_id claim to trust_anchor, and changed type request parameter to entity_type.
Explicitly typed base64url-encoded examples that were previously untyped. Also added missing client_id and iss values in some examples.
Fixed #7, #86, #134, and #148: Provides implementation considerations on Federation topologies.
Fixed #136: Defined additional error codes and rationalized naming. Renamed trust_chain_validation_failed to invalid_trust_chain and renamed missing_trust_anchor to invalid_trust_anchor.
Fixed #133: Refined wording about client authentication when using Automatic Registration and added token_endpoint_auth_methods_supported in RP metadata example.
Reference OpenID Connect Relying Party Metadata Choices 1.0.
Fixed #143: Added Trust Mark Issuer and Trust Mark Owner to Terminology section.
Fixed #139: Clarified description of using request objects.
Fixed #140: Federation Entity Keys MUST NOT appear in metadata.
Fixed #105 and #106: Informatively say that the require_signed_request_object and require_pushed_authorization_requests metadata parameters can be used.
Fixed #107: Clarified how to validate Trust Marks.
Fixed #114: Described why it may make sense to not support the use of request_uri other than in conjunction with a PAR request.
Fixed #108: Removed remark about trust mark delegation revocation.
Fixed #120: Required kid (Key ID) header parameter in Signed JWK Set JWTs.
Define media type for Explicit Registration responses application/explicit-registration-response+jwt distinct from application/entity-statement+jwt.
Restrict audience values to the single Entity Identifier of the intended recipient.
-40
Renamed validation_failed error code to trust_chain_validation_failed. Fixed
89: Improved Entity Statement jwks claim description.
Fixed #88: Explicitly require audience validation for explicit registration requests and responses.
Fixed #28: Described validation of resolved metadata.
Fixed #98: Require that the audience of JWTs used for client authentication at federation endpoints with private_key_jwt be the Entity Identifier of the endpoint's Entity.
Fixed #34: Deleted request_authentication_methods_supported and request_authentication_signing_alg_values_supported and replaced with the use of standard Request Object and PAR metadata values. Also restricted PAR authentication methods to those performing signing with the RP's keys.
Fixed #98: Required audience when using private_key_jwt with PAR to be the Authorization Server's Entity Identifier.
Reverted change to allow PAR requests not using Request Objects when the client authentication method uses a signature with a Federation Entity Key.
Fixed #104: Removed the *_auth_signing_algs metadata parameters in favor of endpoint_auth_signing_alg_values_supported.
Required that the issuer OP and AS metadata values match the Entity Identifier.
Fixed #69: Specified more details of successful and error responses to authentication requests using Automatic Registration.
Fixed #24: Removed trust_mark and iat from Trust Mark Status endpoint. Use GET at Trust Mark Status endpoint.
-39
Fixed #33: Corrected "add" operator values in examples to be arrays.
Endpoint URLs are not form-urlencoded in JSON metadata parameter values.
Fixed #52: Clarified that PAR requests must use Request Objects.
Fixed #64: Explicitly typed signed JWK Sets.
Fixed #55: Required validating explicit typing of JWTs.
Fixed #53: State that JWS and JWE Compact Serializations are used.
Fixed #49: Added request_authentication_signing_alg_values_supported to example.
Fixed #46: Corrected statement about preventing use of Request Object for private_key_jwt client authentication.
Fixed #43: Allow multiple type request parameters in resolve requests.
Fixed #40: Changed section name from "Resolve Entity Statement" to "Resolve Entity".
Improved descriptions of the JWT Claims being registered, per feedback from the IANA Designated Expert.
Fixes #45: Tightened Trust Chain signature validation wording.
Fixed #40: Changed section name from "Resolve Entity Statement" to "Resolve Entity".
Fixed #39: Removed iss parameter from fetch endpoint.
Fixed #54: MAY NOT -> MUST NOT.
Fixed #58: Require authority_hints value to contain the Entity Identifiers of all Immediate Superiors.
-38
Added section defining each media type, per IANA Designed Expert review.
Fixed #36: Simplified obtaining Entity Configurations.
Fixed #30: Simplified fetch endpoint to only return Subordinate Statements.
Removed text describing endpoints as being "encoded in application/x-www-form-urlencoded format".
-37
Note that after the approval and publication of the fourth Implementer's Draft https://openid.net/specs/openid-federation-1_0-ID4.html, work on the OpenID Federation specification moved from the repository https://bitbucket.org/openid/connect/ to the repository https://github.com/openid/federation. Issue numbers before this draft are from the Bitbucket repository. Issue numbers starting with this draft are from the GitHub repository.
Fixed #15: Clarified that OpenID Federation can be used for trust establishment with any application protocols.
Fixed #18: Clarified use of valid Trust Marks.
Fixed #19: Clarified that Federation Entities publish their public keys.
Fixed #22: Defined that Entity Identifiers MUST use the https scheme.
Clarified that additional client_registration_types MAY be defined and used.
Corrected Usage Location values in IANA "OAuth Extensions Error Registry" registrations.
-36
Made the definition of iat and exp consistent.
ïŒä»¥äžãåæ§ã«ç¶ãïŒ
Acknowledgements èè ã¯ãæ¬ä»æ§ã«è²¢ç®ãã以äžã®å人ããã³çµç¹ã«è¬æã衚ãã: Marcus Almgren, Patrick Amrein, Pasquale Barbaro, Ralph Bragg, Peter Brand, Brian Campbell, David Chadwick, Michele D'Amico, Kushal Das, Andrii Deinega, Erick Domingues, Heather Flanagan, Michael Fraser, Samuel Gulliksson, Joseph Heenan, Pedram Hosseyni, Marko IvanÄiÄ, Åukasz Jaromin, Leif Johansson, Takahiko Kawasaki, Ralf KÃŒsters, Torsten Lodderstedt, Josh Mandel, Francesco Marino, John Melati, Alexey Melnikov, Henri Mikkonen, Aaron Parecki, Eduardo Perottoni, Chris Phillips, Roberto Polli, Justin Richer, Jouke Roorda, Nat Sakimura, Mischa Sallé, Stefan Santesson, Marcos Sanz, Michael Schwartz, Giada Sciarretta, Amir Sharif, Sean Turner, Davide Vaghetti, Niels van Dijk, Tim WÃŒrtele, Kristina Yasuda, Gabriel Zachmann, GEANT4-2 ã® JRA3T3 task force, ããã³ SIROS Foundationã
Authors' Addresses Roland Hedberg (editor) independent Email: roland@catalogix.se Michael B. Jones Self-Issued Consulting Email: michael_b_jones@hotmail.com URI: https://self-issued.info/ Andreas à kre Solberg Sikt Email: Andreas.Solberg@sikt.no URI: https://www.linkedin.com/in/andreassolberg/ John Bradley Yubico Email: ve7jtb@ve7jtb.com URI: http://www.thread-safe.com/ Giuseppe De Marco independent Email: demarcog83@gmail.com URI: https://www.linkedin.com/in/giuseppe-de-marco-bb054245/ Vladimir Dzhuvinov Connect2id Email: vladimir@connect2id.com URI: https://www.linkedin.com/in/vladimirdzhuvinov/