Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alignments with OpenID4VP Draft 22 #507

Open
wants to merge 5 commits into
base: versione-corrente
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion docs/common/common_definitions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@
.. _OAUTH2: https://www.rfc-editor.org/rfc/rfc6749
.. _OPENID4VC-HAIP: https://openid.net/specs/openid4vc-high-assurance-interoperability-profile-sd-jwt-vc-1_0.html
.. _OAUTH-STATUS-ASSERTION: https://datatracker.ietf.org/doc/draft-demarco-oauth-status-assertions/02/
.. _OAUTH-V2-JARM-04: https://openid.net/specs/oauth-v2-jarm-04.html
.. _OIDC: https://openid.net/specs/openid-connect-core-1_0.html
.. _OAUTH-MULT-RESP-TYPE: https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html
.. _OAUTH-ATTESTATION-CLIENT-AUTH: https://datatracker.ietf.org/doc/draft-ietf-oauth-attestation-based-client-auth/03/
Expand Down
8 changes: 2 additions & 6 deletions docs/common/standards.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ Technical References
* - `EIDAS-ARF`_
- EUDI Wallet - Architecture and Reference Framework.
* - `OpenID4VP`_
- Terbu, O., Lodderstedt, T., Yasuda, K., Looker, T., "OpenID for Verifiable Presentations", November 2023, Draft 20.
- Terbu, O., Lodderstedt, T., Yasuda, K., Looker, T., "OpenID for Verifiable Presentations", October 2024, Draft 22.
* - `PresentationExch`_
- Presentation Exchange 2.0 for Presentation Definition.
* - :rfc:`2119`
- Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels" BCP 14, RFC 2119, March 1997.
* - :rfc:`2616`
- Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, “Hypertext Transfer Protocol -- HTTP/1.1,” RFC 2616, June 1999.
- Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, “Hypertext Transfer Protocol -- HTTP/1.1”, RFC 2616, June 1999.
* - :rfc:`3339`
- Klyne, G. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002.
* - :rfc:`3986`
Expand Down Expand Up @@ -63,8 +63,6 @@ Technical References
- De Marco, G., Steele, O., Marino, F., "OpenID4VC High Assurance Interoperability Profile with SD-JWT VC", June 2024, Draft 2.
* - `OAUTH-ATTESTATION-CLIENT-AUTH`_
- Looker, T., Bastian, P., "OAuth 2.0 Attestation-Based Client Authentication", May 2024, Draft 3.
* - `OAUTH-V2-JARM-04`_
- Lodderstedt, T., Campbell, B., "JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)".
* - `OAUTH-MULT-RESP-TYPE`_
- de Medeiros, B., Scurtescu, M., Tarjan, P., Jones, M., "OAuth 2.0 Multiple Response Type Encoding Practices", February 2014.
* - ISO18013-5
Expand All @@ -73,8 +71,6 @@ Technical References
- Sakimura, N., Bradley, J., Jones, M., de Medeiros, B., Mortimore, C., "OpenID Connect Core 1.0 incorporating errata set 2", December 2023.
* - `SD-JWT`_
- Fett, D., Yasuda, K., Campbell, B., "Selective Disclosure for JWTs (SD-JWT)".
* - `OAUTH-ATTESTATION-CLIENT-AUTH`_
- Looker, T., Bastian, P., "OAuth 2.0 Attestation-Based Client Authentication".
* - USASCII
- American National Standards Institute, "Coded Character Set -- 7-bit American Standard Code for Information Interchange", 1986.
* - `MODI`_
Expand Down
2 changes: 1 addition & 1 deletion docs/en/pid-eaa-data-model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ The JOSE header contains the following mandatory parameters:
- **Description**
- **Reference**
* - **typ**
- REQUIRED. It MUST be set to ``vc+sd-jwt`` as defined in `SD-JWT-VC`_.
- REQUIRED. It MUST be set to ``dc+sd-jwt`` as defined in `SD-JWT-VC`_.
- :rfc:`7515` Section 4.1.9.
* - **alg**
- REQUIRED. Signature Algorithm.
Expand Down
14 changes: 7 additions & 7 deletions docs/en/pid-eaa-entity-configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The PID/(Q)EAA Providers MUST provide the following metadata types:
- `oauth_authorization_server`
- `openid_credential_issuer`

In cases where the (Q)EAA Providers authenticate Users using their Wallet Instance, then the metadata for *wallet_relying_party* MUST be provided in addition to the metadata above. In case a national eID scheme is used by the PID/(Q)EAA Providers for the User authentication, they MAY include a metadata for *openid_relying_party* within their Entity Configuration. The *openid_relying_party* metadata MUST be compliant with the current version of `SPID/CIE id OIDC Technical Specification <https://github.com/italia/spid-cie-oidc-docs>`_.
In cases where the (Q)EAA Providers authenticate Users using their Wallet Instance, then the metadata for *openid_credential_verifier* MUST be provided in addition to the metadata above. In case a national eID scheme is used by the PID/(Q)EAA Providers for the User authentication, they MAY include a metadata for *openid_relying_party* within their Entity Configuration. The *openid_relying_party* metadata MUST be compliant with the current version of `SPID/CIE id OIDC Technical Specification <https://github.com/italia/spid-cie-oidc-docs>`_.


Metadata for federation_entity
Expand Down Expand Up @@ -54,9 +54,9 @@ The *oauth_authorization_server* metadata MUST contain the following parameters.
* - **scopes_supported**
- JSON array containing a list of the supported *scope* values. See :rfc:`8414#section-2`.
* - **response_modes_supported**
- JSON array containing a list of the supported "response_mode" values, as specified in `OAuth 2.0 Multiple Response Type Encoding Practices <https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html>`_. The supported values MAY be *query* and *form_post.jwt* (see `[oauth-v2-jarm-03] <https://openid.net/specs/oauth-v2-jarm-03.html#name-response-mode-form_postjwt>`__).
- JSON array containing a list of the supported "response_mode" values, as specified in `OAuth 2.0 Multiple Response Type Encoding Practices <https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html>`_. The supported values MAY be *query* and *form_post.jwt* (see `JARM`_).
* - **authorization_signing_alg_values_supported**
- JSON array containing a list of the :rfc:`7515` supported signing algorithms (*alg* values). The values MUST be set according to Section :ref:`Cryptographic algorithms`. See Section 4 of `[oauth-v2-jarm-03] <https://openid.net/specs/oauth-v2-jarm-03.html>`__.
- JSON array containing a list of the :rfc:`7515` supported signing algorithms (*alg* values). The values MUST be set according to Section :ref:`Cryptographic algorithms`. See Section 4 of `JARM`_.
* - **grant_types_supported**
- JSON array containing a list of the supported grant type values. The authorization server MUST support *authorization_code*.
* - **token_endpoint_auth_methods_supported**
Expand Down Expand Up @@ -100,7 +100,7 @@ The *openid_credential_issuer* metadata MUST contain the following claims.
* - **credential_configurations_supported**
- JSON object that outlines the details of the Credential supported by the PID/(Q)EAA Provider. It includes a list of name/value pairs, where each name uniquely identifies a specific supported Credential. This identifier is utilized to inform the Wallet Instance which Credential can be provided by the PID/(Q)EAA Provider. The associated value within the object MUST contain metadata specific to that Credential, as defined following. See `OpenID4VCI`_ Sections 11.2.3 and A.3.2.

- **format**: String identifying the format of this Credential. The PID/(Q)EAA MUST support the value string "*vc+sd-jwt*". See `OpenID4VCI`_ Section A.3.1.
- **format**: String identifying the format of this Credential. The PID/(Q)EAA MUST support the value string "*dc+sd-jwt*". See `OpenID4VCI`_ Section A.3.1.
- **scope**: JSON String identifying the supported *scope* value. The Wallet Instance MUST use this value in the Pushed Authorization Request. Scope values MUST be the entire set or a subset of the *scope* values in the *scopes_supported* parameter of the Authorization Server. [See `OpenID4VCI`_ Section 11.2.3].
- **cryptographic_binding_methods_supported**: JSON Array of case sensitive strings that identify the representation of the cryptographic key material that the issued Credential is bound to. The PID/(Q)EAA Provider MUST support the value "*jwk*".
- **credential_signing_alg_values_supported**: JSON Array of case sensitive strings that identify the algorithms that the PID/(Q)EAA Provider MUST support to sign the issued Credential. See Section :ref:`Cryptographic algorithms` for more details.
Expand All @@ -123,10 +123,10 @@ The *openid_credential_issuer* metadata MUST contain the following claims.



Metadata for wallet_relying_party
Metadata for openid_credential_verifier
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The *wallet_relying_party* metadata MUST contain the parameters as defined in Section :ref:`Metadata for wallet_relying_party`.
The *openid_credential_verifier* metadata MUST contain the parameters as defined in Section :ref:`Metadata for openid_credential_verifier`.


Example of a (Q)EAA Provider Entity Configuration
Expand All @@ -137,7 +137,7 @@ Below is a non-normative example of an Entity Configuration of a (Q)EAA Provider
- `federation_entity`
- `oauth_authorization_server`
- `openid_credential_issuer`
- `wallet_relying_party`
- `openid_credential_verifier`

.. literalinclude:: ../../examples/ec-eaa.json
:language: JSON
Expand Down
12 changes: 6 additions & 6 deletions docs/en/pid-eaa-issuance.rst
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ The PID/(Q)EAA Issuance flow is based on [`OpenID4VCI`_] and the following main
* **Pushed Authorization Requests** (PAR) [:rfc:`9126`], as recommended in Section 5 of [`OpenID4VCI`_].
* **Proof Key for Code Exchange** (PKCE) [:rfc:`7636`], as recommended in Section 5 of [`OpenID4VCI`_].
* **JWT Authorization Requests** (JAR) [:rfc:`9101`].
* **JWT Authorization Response Modes** (JARM) [`OAUTH-V2-JARM-04`_].
* **JWT Authorization Response Modes** (JARM) [`JARM`_].
* **Rich Authorization Requests** (RAR) [:rfc:`9396`].
* **OAuth 2.0 Attestation-Based Client Authentication** [`OAUTH-ATTESTATION-CLIENT-AUTH`_].
* **OpenID Federation 1.0** [`OID-FED`_].
Expand Down Expand Up @@ -504,8 +504,8 @@ The ``request`` JWT payload contained in the HTTP POST message is given with the
- MUST be set to ``code``.
- :rfc:`6749`
* - **response_mode**
- It MUST be a string indicating the "*response_mode*", as specified in [`OAUTH-MULT-RESP-TYPE`_]. It MUST be one of the supported values (*response_modes_supported*) provided in the metadata of the PID/(Q)EAA Provider. It informs the PID/(Q)EAA Provider of the mechanism to be used for returning parameters from the Authorization Endpoint. In case of *HTTP 302 Redirect Response* the value MUST be *query*. In this mode, Authorization Response parameters are encoded in the query string added to the ``redirect_uri`` when redirecting back to the Wallet Instance. In case of *HTTP POST Response* the value MUST be *form_post.jwt* according to [`OAUTH-V2-JARM-04`_]. In this mode, Authorization Response parameters are specified into a JWT encoded as HTML form value that is auto-submitted in the user-agent, and thus is transmitted via the HTTP POST method to the Wallet Instance, with the result parameters being encoded in the body using the *application/x-www-form-urlencoded* format. The action attribute of the form MUST be the Redirection URI of the Wallet Instance. The method of the form attribute MUST be POST.
- See [`OAUTH-MULT-RESP-TYPE`_] and [`OAUTH-V2-JARM-04`_].
- It MUST be a string indicating the "*response_mode*", as specified in [`OAUTH-MULT-RESP-TYPE`_]. It MUST be one of the supported values (*response_modes_supported*) provided in the metadata of the PID/(Q)EAA Provider. It informs the PID/(Q)EAA Provider of the mechanism to be used for returning parameters from the Authorization Endpoint. In case of *HTTP 302 Redirect Response* the value MUST be *query*. In this mode, Authorization Response parameters are encoded in the query string added to the ``redirect_uri`` when redirecting back to the Wallet Instance. In case of *HTTP POST Response* the value MUST be *form_post.jwt* according to [`JARM`_]. In this mode, Authorization Response parameters are specified into a JWT encoded as HTML form value that is auto-submitted in the user-agent, and thus is transmitted via the HTTP POST method to the Wallet Instance, with the result parameters being encoded in the body using the *application/x-www-form-urlencoded* format. The action attribute of the form MUST be the Redirection URI of the Wallet Instance. The method of the form attribute MUST be POST.
- See [`OAUTH-MULT-RESP-TYPE`_] and [`JARM`_].
* - **client_id**
- It MUST be set as in the :ref:`Table of the HTTP parameters <table_http_request_claim>`.
- See :ref:`Table of the HTTP parameters <table_http_request_claim>`.
Expand Down Expand Up @@ -897,10 +897,10 @@ If the *DPoP proof* is invalid, the Credential endpoint returns an error respons
- **Description**
- **Reference**
* - **format**
- Format of the Credential to be issued. This MUST be ``vc+sd-jwt`` or ``mso_mdoc``.
- Format of the Credential to be issued. This MUST be ``dc+sd-jwt`` or ``mso_mdoc``.
- [`OpenID4VCI`_].
* - **vct**
- CONDITIONAL. REQUIRED only if the *format* identifier is ``vc+sd-jwt``.
- CONDITIONAL. REQUIRED only if the *format* identifier is ``dc+sd-jwt``.
- See Annex A3.4. of [`OpenID4VCI`_]
* - **doctype**
- CONDITIONAL. REQUIRED only if the *format* identifier is ``mso_mdoc``.
Expand Down Expand Up @@ -969,7 +969,7 @@ The Credential Response contains the following parameters:
- **Description**
- **Reference**
* - **credential**
- CONDITIONAL. REQUIRED if ``lead_time`` is not present. String Containing the issued PID/(Q)EAA. If the requested format identifier is ``vc+sd-jwt`` then the ``credential`` parameter MUST NOT be re-encoded. If the requested format identifier is ``mso_mdoc`` then the ``credential`` parameter MUST be a base64url-encoded representation of the issued Credential.
- CONDITIONAL. REQUIRED if ``lead_time`` is not present. String Containing the issued PID/(Q)EAA. If the requested format identifier is ``dc+sd-jwt`` then the ``credential`` parameter MUST NOT be re-encoded. If the requested format identifier is ``mso_mdoc`` then the ``credential`` parameter MUST be a base64url-encoded representation of the issued Credential.
- Section 7.3, Annex A2.5 and Annex A3.5 of [`OpenID4VCI`_].
* - **lead_time**
- CONDITIONAL. REQUIRED if ``credential`` is not present. The amount of time (in seconds) required before making a new Credential Request.
Expand Down
20 changes: 11 additions & 9 deletions docs/en/relying-party-entity-configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ The Entity Configuration of Relying Parties MUST contain the parameters defined
The Relying Parties MUST provide the following metadata types:

- `federation_entity`
- `wallet_relying_party`
- `openid_credential_verifier`


Metadata for federation_entity
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The *federation_entity* metadata MUST contain the claims as defined in Section :ref:`Metadata of federation_entity Leaves`.

Metadata for wallet_relying_party
Metadata for openid_credential_verifier
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The *wallet_relying_party* metadata MUST contain the following parameters.
The *openid_credential_verifier* metadata MUST contain the following parameters.

.. list-table::
:widths: 20 60
Expand All @@ -39,16 +39,18 @@ The *wallet_relying_party* metadata MUST contain the following parameters.
* - **response_uris_supported**
- JSON Array of response URI strings to which the Wallet Instance MUST send the Authorization Response using an HTTP POST request as defined by the Response Mode ``direct_post`` and ``direct_post.jwt`` (see `OpenID4VP`_ Draft 20 Sections 6.2 and 6.3).
* - **authorization_signed_response_alg**
- String representing the signing [:rfc:`7515`] *alg* algorithm that MUST be used for signing authorization responses. The algorithm *none* MUST NOT be used. See `[oauth-v2-jarm-03] <https://openid.net/specs/oauth-v2-jarm-03.html>`_ Section 3.
- String representing the signing [:rfc:`7515`] *alg* algorithm that MUST be used for signing authorization responses. The algorithm *none* MUST NOT be used. See `JARM`_.
* - **authorization_encrypted_response_alg**
- Algorithm used to encrypt the authorization response. It specifies to the Wallet Instance the asymmetric encryption algorithm. See `JARM`_.
* - **authorization_encrypted_response_enc**
- Encryption algorithm used for the authorization response. It specifies to the Wallet Instance the symmetric encryption algorithm. See `JARM`_.
* - **vp_formats**
- JSON object defining the formats and proof types of Verifiable Presentations and Verifiable Credentials the RP supports. It consists of a list of name/value pairs, where each name uniquely identifies a supported type. The RP MUST support at least "*vc+sd-jwt*" according to `OPENID4VC-HAIP`_ Draft 00 Section 7.2.7. The value associated with each name/value pair MUST be a JSON object "**sd-jwt_alg_values**" that MUST contain a JSON array containing identifiers of cryptographic algorithms the RP supports for protection of a SD-JWT. The *alg* JOSE header (as defined in :rfc:`7515`) of the presented SD-JWT MUST match one of the array values. See also `OpenID4VP`_ Draft 20 Section 9.1.
* - **presentation_definitions_supported**
- JSON Array of supported *presentation_definition* objects that MUST be compliant to the syntax defined in Section 5 of `[DIF.PresentationExchange] <https://identity.foundation/presentation-exchange/spec/v2.0.0/>`_ and Section 7.2.8 of `OPENID4VC-HAIP`_ Draft 00. For *presentation_definition* objects see also `OpenID4VP`_ Section 5.1.
- JSON object defining the formats and proof types of Verifiable Presentations and Verifiable Credentials the RP supports. It consists of a list of name/value pairs, where each name uniquely identifies a supported type. The RP MUST support at least "*dc+sd-jwt*". The value associated with each name/value pair MUST be a JSON object "**sd-jwt_alg_values**" that MUST contain a JSON array containing identifiers of cryptographic algorithms the RP supports for protection of a SD-JWT. The *alg* JOSE header (as defined in :rfc:`7515`) of the presented SD-JWT MUST match one of the array values. See also `OpenID4VP`_ Draft 20 Section 9.1.
* - **jwks**
- JSON Web Key Set document, passed by value, containing the protocol specific keys for the Relying Party. See `[oauth-v2-jarm-03] <https://openid.net/specs/oauth-v2-jarm-03.html>`_ Section 3, `OID-FED`_ Draft 36 Section 5.2.1 and `JWK`_.
- JSON Web Key Set document, passed by value, containing the protocol specific keys for the Relying Party. See `JARM`_ Section 3, `OID-FED`_ Draft 36 Section 5.2.1 and `JWK`_.

.. note::
The claims **response_uris_supported** and **presentation_definitions_supported** are introduced in this Specification.
The claims **response_uris_supported** are introduced in this Specification.

Example of a Relying Party Entity Configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
Loading
Loading