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

Merged
merged 24 commits into from
Jan 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
f442117
breaking change: OpenID4VP alignments to Draft 22
peppelinux Nov 25, 2024
3990d38
fix: standards refs
peppelinux Nov 25, 2024
019a1e8
Apply suggestions from code review
peppelinux Nov 25, 2024
c89ac5d
fix: added redirect_uris in rp metadata and further indication againt…
peppelinux Nov 25, 2024
7ff7d77
fix: request endpoint with wallet metadata and wallet nonce
peppelinux Nov 25, 2024
310278e
Apply suggestions from Giada
peppelinux Dec 23, 2024
fc78f2f
fix: request uri json object example
peppelinux Dec 23, 2024
03d7666
Apply suggestions from code review
peppelinux Dec 23, 2024
1c2a2c6
Apply suggestions from code review
peppelinux Dec 23, 2024
c20cd08
fix: ref to openid4vp section 7.3
peppelinux Dec 23, 2024
45189fc
fix: wallet_nonce in non normative example
peppelinux Jan 7, 2025
7d30abb
Apply suggestions from code review
peppelinux Jan 7, 2025
23ab8d7
fix: presentation sequence diagrams and step, reintroducing croos vs …
peppelinux Jan 9, 2025
39ed682
fix: presentation RST linting
peppelinux Jan 9, 2025
ae5f3a6
Merge branch 'versione-corrente' into rp-draft-22
peppelinux Jan 9, 2025
43b0ca2
Apply suggestions from code review
peppelinux Jan 9, 2025
1b5fde6
presentation: added normative descriptions about request uri parameters
peppelinux Jan 9, 2025
e909952
Apply suggestions from code review
peppelinux Jan 9, 2025
b189b96
Apply suggestions from code review
peppelinux Jan 10, 2025
eed003f
Apply suggestions from code review
peppelinux Jan 10, 2025
8b62d5b
fix: RFC 6749 ref
peppelinux Jan 10, 2025
e6fb32e
Merge branch 'versione-corrente' into rp-draft-22
peppelinux Jan 10, 2025
9eb5e45
fix: Wallet Metadata Parameters table
peppelinux Jan 12, 2025
44672af
Apply suggestions from code review
peppelinux Jan 13, 2025
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
6 changes: 1 addition & 5 deletions docs/common/standards.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ 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", December 2024, Draft 23.
* - `PresentationExch`_
- Presentation Exchange 2.0 for Presentation Definition.
* - :rfc:`2119`
Expand Down Expand Up @@ -65,8 +65,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 @@ -75,8 +73,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
12 changes: 6 additions & 6 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 @@ -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
6 changes: 3 additions & 3 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
21 changes: 11 additions & 10 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,17 @@ 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 "*dc+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 41 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 41 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