oidc-ca | August 2021 | |
Sakimura, et al. | Standards Track | [Page] |
OpenID Providers within OpenID Connect assume many roles, one of these is providing End-User claims to relying parties at the consent of the End-User such as their name or date of birth. OpenID Connect defines multiple models under which claims are provided and relied upon by a relying parties, including simple, aggregated and distributed claims. This document focuses on elaborating upon the aggregated model outlined in section 5.6.2 of OpenID Connect core by defining the full life-cycle of aggregated claims and the new roles of the entities involved in an aggregated claims model.¶
This document is not an OIDF International Standard. It is distributed for review and comment. It is subject to change without notice and may not be referred to as an International Standard.¶
Recipients of this draft are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.¶
The OpenID Foundation (OIDF) grants to any Contributor, developer, implementer, or other interested party a non-exclusive, royalty free, worldwide copyright license to reproduce, prepare derivative works from, distribute, perform and display, this Implementers Draft or Final Specification solely for the purposes of (i) developing specifications, and (ii) implementing Implementers Drafts and Final Specifications based on such documents, provided that attribution be made to the OIDF as the source of the material, but that such attribution does not indicate an endorsement by the OIDF.¶
The technology described in this specification was made available from contributions from various sources, including members of the OpenID Foundation and others. Although the OpenID Foundation has taken steps to help ensure that the technology is available for distribution, it takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this specification or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any independent effort to identify any such rights. The OpenID Foundation and the contributors to this specification make no (and hereby expressly disclaim any) warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to this specification, and the entire risk as to implementing this specification is assumed by the implementer. The OpenID Intellectual Property Rights policy requires contributors to offer a patent promise not to assert certain patent claims against other contributors and against implementers. The OpenID Foundation invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology that may be required to practice this specification.¶
The OpenID Foundation (OIDF) promotes, protects and nurtures the OpenID community and technologies. As a non-profit international standardizing body, it is comprised by over 160 participating entities (workgroup participants). The work of preparing implementer drafts and final international standards is carried out through OIDF workgroups in accordance with the OpenID Process. Participants interested in a subject for which a workgroup has been established has the right to be represented in that workgroup. International organizations, governmental and non-governmental, in liaison with OIDF, also take part in the work. OIDF collaborates closely with other standardizing bodies in the related fields.¶
OpenID Connect is a selective claims disclosure mechanism. When a set of claims included in its response is about an entity authentication event, it works as an entity authentication federation mechanism, but it can deliver other claims selected by the subject as well.¶
In the OpenID Connect specification, it is assumed that there are many sources of claims. Each claim is associated with its authoritative source so there naturally will be many authoritative sources. Claim sources can be corroborative, i.e., not authoritative, as well. In total, there will be many Claim Set sources in OpenID Connect Framework. These Claim sources are called Issuing Authorities in OpenID Connect. Issuing-Authority (IA) is just an Identity-Agent (IdA) but it does not provide the claims about the current authentication event and its associated subject identifier authoritatively. Note that Issuing-Authority can act as an Identity-Agent in other transactions. Whether it is called IdA or IA is depending on their role in a particular transaction.¶
There are four main actors in the OpenID Connect aggregated claims model.¶
An IdA can provide an CC the claims by value or by reference.¶
By value is the case where an IdA collects claims and their values from IAs and aggregate them in one package to provide to the CC. This model is called Aggregated Claims Model.¶
By value is the case where the IdA does not collect and provide the value but just provide the reference and its access information to the CC. This model is called Distributed Claims Model.¶
In either case, there has to be strong binding between the subject in the claim sets provided by IAs and the subject in the ID Token provided by the IdA. Conceptually, it can be done through Subject value correlation or through the correlation of signing key materials. Regardless of the methods, there has to be this binding. Otherwise, the provided claims cannot be trusted to be linked to the authenticated subject.¶
This document defines how to do this binding even in the case of ephemeral subject identifier
in which case the sub
value of the ID Token will change every time the subject visits the CC.
This allows anonymous attribute based authentication where an CC cannot link two visits
by the subject without using other facilities.¶
By supporting the case of ephemeral subject identifier, pairwise pseudonymous identifier and omni-directional identifier cases are also covered.¶
Another feature that this document provides is the way to avoid multiple consent screen per CC authorization request. If OpenID Connect Core spec is used to build Aggregated Claims Model naively, it may results in many consent screens per CC request. For example, if four IAs and one IdA is involved in the request, then, there may be five consent screens. This is too onerous. This document defines a mechanism to consolidate it into one consent screen. This is done through one "IdA User Setup Phase" per IA that the IdA obtains the consent from the subject to obtain claims from the IA for the purpose of creating aggregated and distributed claims response for future CC requests in which IdA will collect a new consent from the subject.¶
The mechanism used for this is to obtain an access token and a refresh token that corresponds to a suitably wide scope for the purpose. While the claims at the time of an CC request can be obtained from the UserInfo endpoint, this document defines a new endpoint called claims endpoint. It is almost the same as the UserInfo endpoint, but there are a few important differences:¶
iss
claim. (Userinfo Endpoint does not)¶
Note that while Userinfo Endpoint was conceived to support multiple response types, e.g., support for SCIM schema, the exact method was not specified at the time of the publication.¶
This new Claims Endpoint allows the specification of the response schema and media type, e.g., OIDC JWT, OIDC4IDA JWT, W3C Verifiable Claims in JWT and JSON-LD, SCIM 2.0 in JWT, etc. It is done so in an extensible manner (using registry tbd).¶
This implies that there will be an impact to the authentication and claims request that an CC makes. It may optionally want to specify its preferred format for the Claim Sets to be received. Therefore, this document also defines a new parameter to express its preference.¶
There are four phases defined in this document.¶
CC Phase:¶
Note that distributed claims model is out of scope of this document.¶
Intended reader of this document is the developer and systems architect who builds attributes and claims base systems.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
In the .txt version of this document, values are quoted to indicate that they are to be taken literally. When using these values in protocol messages, the quotes MUST NOT be used as part of the value. In the HTML version of this document, values to be taken literally are indicated by the use of this fixed-width font.¶
All uses of JSON Web Signature (JWS) JWS and JSON Web Encryption (JWE) JWE data structures in this specification utilize the JWS Compact Serialization or the JWE Compact Serialization; the JWS JSON Serialization and the JWE JSON Serialization are not used.¶
This document specifies the methods for¶
The following referenced documents are indispensable for the application of this document. For dated references, only the edition cited applied. For undated references, the latest edition of the referenced document (including any amendments) applies.¶
For the purpose of this document, the terms defined in RFC6749, RFC6750, RFC7636, OpenID Connect Core apply. In addition, following terms are defined as a shorthand for the definition text that follows.¶
3.1
Issuing-Authority
party that issues attested claims¶
3.2
Claims-Consumer
party that verifies and consumes the provided claim sets¶
3.3
Identity-Agent
party that acts as an RP to Issuing-Authorities and OP to Claims-Consumers¶
Note to entry: A Digital Identity Wallet is a type of IdA.¶
IA - Issuing-Authority¶
IdA - Identity-Agent¶
CC - Claims-Consumer¶
DID - Decentralized Identifier¶
HTTP - Hyper Text Transfer Protocol¶
TLS - Transport Layer Security¶
VC - W3C Verifiable Credential¶
VP - W3C Verifiable Presentation¶
W3C - World Wide Web Consortium¶
In this document, there are four main actors.¶
They are topologically connected as in the following diagram.¶
!---¶
Subject is the entity that grants access to the claims at IAs and the IdA. In this system, the Subject grants IA to provide IdA the Claims for the purpose of providing those claims with other claims to potentially unspecified CCs under the Subject's direction.¶
This request from the IdA to the IA is sent by the Subject's instruction. The Subject also allows IdA to potentially store the obtained claims.¶
The Subject also allows CC to make a claims request to the IdA, typically for the Subject to receive some services from the CC.¶
CC is an actor that typically provides some service to the Subject. To perform the service, the CC obtains some claims about the Subject from IdA. The basis for the processing of the Subject's claims by the CC can be performance of contract, consent, and other lawful basis.¶
IdA is an entity that acts as an Identity-Agent to the CC. Also, IdA acts as a Claims-Consumer to IAs.¶
The provision for the IdA is as follows:¶
c_token
authentication request parameter as a mechanism to request claims to IAs.¶
** EDITOR'S NOTE ** I guess there are other provisions.¶
c_token
Authorization Request parameter lists individual Claims
that the IdA asks the IA to be returned from the Claims Endpoint.
This top-level member is a JSON object with the names of the individual Claims being requested
as the member names and the values are defined as in 5.5.1 of OpenID Connect 1.0 OIDC.¶
Before registering it self as an OAuth Client to a IA, the IdA needs to obtain configuration information from the IA, including its Authorization Endpoint and Token Endpoint locations.¶
This information is obtained via Discovery, as described in OpenID Connect Discovery 1.0 OpenID.Discovery, or may be obtained via other mechanisms.¶
This document adds the following Identity-Agent Metadata to the OpenID Connect Discovery 1.0 OpenID.Discovery response:¶
claims_endpoint
Required. Claims Endpoint. URL at the Issuing-Authority that provides signed claims.¶
claims_signing_alg_values_supported
Optional. JSON array containing a list of the JWS JWS signing algorithms (alg values) JWA JWA supported by the Claims Endpoint to encode the Claims in a JWT JWT. The value none MUST NOT be included.¶
claims_encryption_alg_values_supported
Optional. JSON array containing a list of the JWE JWE encryption algorithms (alg values) JWA JWA supported by the Claims Endpoint to encode the Claims in a JWT JWT.¶
claims_encryption_enc_values_supported
Optional. JSON array containing a list of the JWE JWE encryption algorithms (enc values) JWA JWA supported by the Claims Endpoint to encode the Claims in a JWT JWT.¶
Additionally, the following optional OpenID Connect Discovery 1.0 OpenID.Discovery parameters are now required in the Issuing-Authority Metadata:¶
claim_types_supported
claims_supported
claims_parameter_supported
request_parameter_supported
request_uri_parameter_supported
claimset_supported
claimset_formats_supported
claimset_claims_supported
claimset_name
dids_supported
did_methods_supported
If the IA supports OpenID Connect for Identity Assurance 1.0 OpenID.IDA, the supported OpenID Connect for Identity Assurance 1.0 OpenID.IDA features MUST be published as specified in section 7 of OpenID Connect for Identity Assurance 1.0 OpenID.IDA.¶
If the IA suppports W3C Verifaiable Credeintial, the IA MUST advertise it with the following metadata:¶
** Editors Note: Tobias, could you fill in here? **¶
The following is a non-normative example of the relevant entries in the openid-configuration meta data for an OpenID Provider supporting the claimset issuance flow¶
{ "dids_supported": true, "did_methods_supported": [ "did:ion:", "did:elem:", "did:sov:" ], "claimset_supported": true, "claimset_endpoint": "https://server.example.com/credential", "claimset_formats_supported": [ "w3cvc-jsonld", "jwt" ], "claimset_claims_supported": [ "given_name", "last_name", "https://www.w3.org/2018/credentials/examples/v1/degree" ], "claimset_name": "University Credential" }¶
If the IA supports mDL format, the IA MUST advertise it with the following metadata:¶
** Editors Note: Tony or Kristina, could you fill in here? **¶
If the IA supports SCIM fromat, the IA MUST advertise it with the following metadata:¶
** Editors Note: SCIM experts, could you fill in here? **¶
Before starting to make requests to a IA, the IdA MUST register itself to the IA. The registration SHOULD be performed via Dynamic Registration, as described in OpenID Connect Dynamic Client Registration 1.0.¶
This documents adds the following Client Metadata to the OpenID Connect Dynamic Client Registration :¶
claims_signed_response_alg
Required. JWS alg
algorithm JWA JWA REQUIRED for signing Claims Responses. The value none MUST NOT be used. If this is specified, the response will be JWT JWT serialized, and signed using JWS. The default, if omitted, is RS256
.¶
claims_encrypted_response_alg
Optional. JWE alg
algorithm JWA JWA REQUIRED for encrypting Claims responses to the client. If both signing and encryption are requested, the response will be signed then encrypted, with the result being a Nested JWT, as defined in JWT JWT. The default, if omitted, is that no encryption is performed.¶
claims_encrypted_response_enc
Optional. JWE enc
algorithm JWA JWA REQUIRED for encrypting Claims responses. If claims_encrypted_response_enc
is specified, the default for this value is A128CBC-HS256
. When claims_encrypted_response_enc
is included, claims_encrypted_response_alg
MUST also be provided.¶
Authentication requests to the Issuing-Authority's Authorization Endpoint should be signed or signed and encrypted. In order to support a more diverse set of claims, requests for claims should be made using Request Objects which are signed or signed and encrypted by registering the appropriate values for the following Client Metadata registration parameters:¶
In this phase, the IdA obtains an access token (and optionally refresh token) that is bound to the current user so that the IdA can obtain the claims about the current user from the IA subsequently without taking the user to the IA and show them the consent dialogue for every CC requests.¶
** Editor's NOTE:** Originally, it had: The Claims to be granted MUST be specified with c_token
parameter.¶
Successful and Error Authentication Response are in the same manner
as OpenID Connect Core 1.0
with the code
parameter always being returned with the Authorization Code Flow. ** DISCUSS **¶
On Request to the Token Endpoint the grant_type
value MUST be authorization_code
inline with the Authorization Code Flow and the code
value included as a parameter.¶
The following is a non-normative example of a response from the token endpoint, whereby the access_token
authorizes the Claimset Holder to request a credential
from the claimset endpoint.¶
{ "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6Ikp..sHQ", "token_type": "bearer", "expires_in": 86400, "id_token": "eyJodHRwOi8vbWF0dHIvdGVuYW50L..3Mz" }¶
In Delivery Phase, the claims are delivered to CC. To do so, it typically goes through the following steps:¶
Claims Collection MAY be done out of sync. That is, the signed claim sets can be obtained before the CC requests. This is typically the case when claims are provided through the W3C Verifiable Credentials container.¶
For an CC to request claims according to this document, the CC¶
Upon receit of the request, the IdA¶
NOTE: CC MUST be authenticated at one point or another before completion of the transaction.¶
After verifying the request, the IdA¶
The IdA collects the required claims from relevant Claims Endpoints. This process can be performed before the CC's request, in which case IdA stores the obtained signed claim set for a later day use.¶
The Claims Endpoint is an OAuth 2.0 Protected Resource that when called, returns Claims about the authenticated Subject in the form of a signed claim set. To obtain a claim set on behalf of the Subject, the IdA makes a request to the Claims Endpoint using an Access Token obtained through OpenID Connect Authentication stated above.¶
Communication with the Credential Endpoint MUST utilize TLS. See Section TBD for more information on using TLS.¶
The Claims Endpoint MUST support the use of HTTP POST methods defined in RFC 2616 [RFC2616].¶
The Claims Endpoint SHOULD support the use of Cross Origin Resource Sharing (CORS) [CORS] and or other methods as appropriate to enable Java Script Clients to access the endpoint.¶
The Claims Endpoint MUST support either MTLS or DPOP.¶
For claims collection, the IdA¶
claims
parameter to minimize the collected claims to what is necessary;¶
uid
parameter if binding between the claim set and the response to the CC is sought; and¶
aud
parameter.¶
Additionally,¶
The following is a non-normative example of a Claims Endpoint Request:¶
POST /claims HTTP/1.1 HTTP/1.1 Host: server.example.com Authorization: Bearer SlAV32hkKG claims={"uid":"id8837395937","email":{"essential":true},"email_verified":{"essential":true}}&aud={["client1234"]}¶
** Editor's Note ** An alternative way.¶
A non-normative example of a Signed Credential request.¶
POST /claims HTTP/1.1 Host: https://issuer.example.com Authorization: Bearer <access-token> Content-Type: application/json { "request": <signed-jwt-request-obj> }¶
where the decoded payload of the request parameter is as follows:¶
{ "aud": "https://issuer.example.com", "iss": "https://wallet.example.com", "sub": "urn:uuid:dc000c79-6aa3-45f2-9527-43747d5962a5", "sub_jwk" : { "crv":"secp256k1", "kid":"YkDpvGNsch2lFBf6p8u3", "kty":"EC", "x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M", "y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o" }, "claimset_format": "w3cvc-jwt", "nonce": "43747d5962a5", "iat": 1591069056, "exp": 1591069556 }¶
The process will be repeated to as many Claims Endpoints as necessary.¶
Usage of Decentralized Identifiers¶
TODO improve this section¶
Decentralized identifiers are a resolvable identifier to a set of statements about the did subject including a set of cryptographic material (e.g public keys). Using this cryptographic material, a decentralized identifier can be used as an authenticatable identifier in a claimset, rather than using a public key directly.¶
An IdA submitting a signed Claim Set Request can request,
that the resulting claim set be bound to the IdA through the usage of decentralized identifiers by using the did
field.¶
An IdA prior to submitting a claim set request SHOULD validate that the IA supports the resolution of decentralized identifiers
by retrieving their openid-configuration metadata to check if an attribute of dids_supported
has a value of true
.¶
The IdA SHOULD also validate that the IA supports the did method
to be used in the request by retrieving their openid-configuration metadata to check if an attribute of did_methods_supported
contains the required did method.¶
An IA processing a claim set request featuring a decentralized identifier MUST follow the following additional steps to validate the request.¶
did
field is a valid decentralized identifier.¶
did
value to a did document.¶
sub_jwk
field of the request is referenced in the authentication section of the DID Document.¶
If any of the steps fail then the IA MUST respond to the request with the Error Response parameter,
section 3.1.2.6. with Error code: invalid_did
.¶
The following is a non-normative example of requesting the issuance of a claimset that uses a decentralized identifier.¶
{ "response_type": "code", "client_id": "IAicV0pt9co5nn9D1tUKDCoPQq8BFlGH", "sub_jwk" : { "crv":"secp256k1", "kid":"YkDpvGNsch2lFBf6p8u3", "kty":"EC", "x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M", "y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o" }, "did": "did:example:1234", "redirect_uri": "https://Client.example.com/callback", "claimset_format": "w3cvc-jsonld" }¶
Upon receipt of the request, the Claims Endpoint Response is returned in the top level member of the
JSON payload named claimset
,
of which the format is indicated by another top level memberformat
.¶
format : REQUIRED. The proof format the claimset was returned in. For example oidc-jws
or w3cvc-jsonld
or w3cvc-jwt
.
claimset : REQUIRED. A cryptographically verifiable proof in the defined proof format
. Most commonly a Linked Data Proof or a JWS.¶
The following is a non-normative example:¶
{ "format": "w3cvc-jsonld", "claimset": <claimset> }¶
If the claimset is provided as oidc-jws, the claimset¶
aud
claim with is value a subset of what was in the request;¶
NOTE: the combination of op_iss and sub is used to correlated to the IdA response to the CC later.¶
The following is a non-normative example of such:¶
To be provided.¶
Formats of the claimset
can vary, examples include JSON-LD or JWT based Credentials,
the IA SHOULD make their supported claimset formats available at their openid-configuration metadata endpoint.¶
The following is a non-normative example of a claim set issued as a W3C Verifiable Credential 1.0 compliant format in JSON-LD.¶
{ "@context": [ "https://www.w3.org/2018/credentials/v1", "https://www.w3.org/2018/credentials/examples/v1" ], "id": "http://example.gov/credentials/3732", "type": ["VerifiableCredential", "UniversityDegreeCredential"], "issuer": "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "issuanceDate": "2020-03-10T04:24:12.164Z", "credentialSubject": { "id": "urn:uuid:dc000c79-6aa3-45f2-9527-43747d5962a5", "jwk": { "crv":"secp256k1", "kid":"YkDpvGNsch2lFBf6p8u3", "kty":"EC", "x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M", "y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o" }, "givenName": "John", "familyName": "Doe", "degree": { "type": "BachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "Ed25519Signature2018", "created": "2020-04-10T21:35:35Z", "verificationMethod": "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", "proofPurpose": "assertionMethod", "jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..l9d0YHjcFAH2H4dB9xlWFZQLUpixVCWJk0eOt4CXQe1NXKWZwmhmn9OQp6YxX0a2LffegtYESTCJEoGVXLqWAA" } }¶
The following is a non-normative example of a claims endpoint response for the request shown above.¶
{ "format": "w3cvc-jsonld", "credential": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://www.w3.org/2018/credentials/examples/v1" ], "id": "http://example.gov/credentials/3732", "type": ["VerifiableCredential", "UniversityDegreeCredential"], "issuer": "https://issuer.edu", "issuanceDate": "2020-03-10T04:24:12.164Z", "credentialSubject": { "id": "did:example:1234", "degree": { "type": "BachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "Ed25519Signature2018", "created": "2020-04-10T21:35:35Z", "verificationMethod": "https://issuer.edu/keys/1", "proofPurpose": "assertionMethod", "jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..l9d0YHjcFAH2H4dB9xlWFZQLUpixVCWJk0eOt4CXQe1NXKWZwmhmn9OQp6YxX0a2LffegtYESTCJEoGVXLqWAA" } } }¶
The following is a non-normative example of a Claim Set issued as a JWT¶
ewogICJhbGciOiAiRVMyNTYiLAogICJ0eXAiOiAiSldUIgp9.ewogICJpc3MiOiAiaXNzdWVyIjogImh0dHBzOi8vaXNzdWVyLmVkdSIsCiAgInN1YiI6ICJkaWQ6ZXhhbXBsZToxMjM0NTYiLAogICJpYXQiOiAxNTkxMDY5MDU2LAogICJleHAiOiAxNTkxMDY5NTU2LAogICJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy9leGFtcGxlcy92MS9kZWdyZWUiOiB7CiAgICAgImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL2V4YW1wbGVzL3YxL3R5cGUiOiAiQmFjaGVsb3JEZWdyZWUiLAogICAgICJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy9leGFtcGxlcy92MS9uYW1lIjogIkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiCiAgfQp9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c¶
And the decoded Claim Set of the JWT¶
{ "iss": "https://issuer.example.com", "sub": "urn:uuid:dc000c79-6aa3-45f2-9527-43747d5962a5", "sub_jwk" : { "crv":"secp256k1", "kid":"YkDpvGNsch2lFBf6p8u3", "kty":"EC", "x":"7KEKZa5xJPh7WVqHJyUpb2MgEe3nA8Rk7eUlXsmBl-M", "y":"3zIgl_ml4RhapyEm5J7lvU-4f5jiBvZr4KgxUjEhl9o" }, "iat": 1591069056, "exp": 1591069556, "https://www.w3.org/2018/credentials/examples/v1/degree": { "https://www.w3.org/2018/credentials/examples/v1/type": "BachelorDegree", "https://www.w3.org/2018/credentials/examples/v1/name": "Bachelor of Science and Arts" } }¶
When an error condition occurs, the Claims Endpoint returns an Error Response as defined in Section 3 of OAuth 2.0 Bearer Token Usage RFC6750. (HTTP errors unrelated to RFC 6750 are returned to the User Agent using the appropriate HTTP status code.)¶
The following is a non-normative example of a Claims Endpoint Error Response:¶
HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"¶
Upon receit of the response, the IdA¶
Once the necessary claim sets were collected, the IdA creates the Aggregated Claims response to be returned.¶
The response can be returned as ID Token or Userinfo Response ( or Claims Endpoint Response).¶
The aggregated claims response is constructed as follows:¶
For Claims Verification,¶
op_iss
and uid
values in the signed claims match the iss
and sub
value of the response;¶
The following referenced documents are indispensable for the application of this document. For dated references, only the edition cited applied. For undated references, the latest edition of the referenced document (including any amendments) applies.¶
BCP14 - Key words for use in RFCs to Indicate Requirement Levels¶
RFC6749 - The OAuth 2.0 Authorization Framework¶
RFC6750 - The OAuth 2.0 Authorization Framework: Bearer Token Usage¶
RFC7636 - # Proof Key for Code Exchange by OAuth Public Clients¶
BCP212 - OAuth 2.0 for Native Apps¶
RFC6819 - OAuth 2.0 Threat Model and Security Considerations¶
BCP195 - Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)¶
OIDC - OpenID Connect Core 1.0 incorporating errata set 1¶
OpenID.Discovery - OpenID Connect Discovery 1.0¶
OpenID.Registration - OpenID Connect Registration 1.0¶
OpenID.IDA - OpenID Connect for Identity Assurance 1.0¶
MTLS - OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens¶