Skip to content

Security considerations for client_metadata parameters - #735

Open
dpostnikov wants to merge 12 commits into
mainfrom
dpostnikov-patch-3
Open

dpostnikov wants to merge 12 commits into
mainfrom
dpostnikov-patch-3

Conversation

@dpostnikov

@dpostnikov dpostnikov commented Apr 27, 2026

Copy link
Copy Markdown
Collaborator

resolves #670

Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
Co-authored-by: Frederik Krogsdal Jacobsen <fkj@users.noreply.github.com>
Comment thread 1.1/openid-4-verifiable-presentations-1_1.md
Comment on lines +1985 to +1989
Wallet implementers need to choose a source of client metadata they can trust within their own ecosystem or implementation. This should determine whether it is safe to use or display to a User. For example, a client name obtained from an X.509 certificate can be trusted, whereas a client name from the `client_metadata` parameter cannot.

It is recommended to use `client_metadata` parameters only for client-supplied parameters that can be used untrusted, for example, a public key.

Ecosystems can use other ecosystem-specific trusted data sources as long as they conduct a proper trust evaluation.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we have to be careful not to conflict with this text:

Image

"It is recommended" probably needs to be reworded, and 'Ecosystems' we used 'profiles' in the other text.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jogu What specifically is the problem with the "it is recommended" text? Just that it reads as a normative statement?

And what about something like this:

Suggested change
Wallet implementers need to choose a source of client metadata they can trust within their own ecosystem or implementation. This should determine whether it is safe to use or display to a User. For example, a client name obtained from an X.509 certificate can be trusted, whereas a client name from the `client_metadata` parameter cannot.
It is recommended to use `client_metadata` parameters only for client-supplied parameters that can be used untrusted, for example, a public key.
Ecosystems can use other ecosystem-specific trusted data sources as long as they conduct a proper trust evaluation.
Ecosystems can define other ecosystem-specific trusted data sources in a profile as long as they conduct a proper trust evaluation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jogu where do you think it conflicts? Is it the example of the public key and should we be more specific that it is about specific, ephemeral public keys as described in the section?

In the spec I also often notice we use "ecosystems or profiles" instead of the one or the other. Maybe that applies here as well.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jogu Would be great to have some more detail on this.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think my concern was in the conflict between

It is recommended (for Wallet implementers) to use client_metadata parameters...

and

Other metadata parameters MUST be ignored unless a profile <...>'

If the recommendation is scoped to profiles that's better. But maybe something like:

Profiles MAY define additional client_metadata parameters for client-supplied parameters that can be used untrusted, for example, a public key.

(Pretty sure that can be improved upon)

Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
@paulbastian

Copy link
Copy Markdown
Contributor

@fkj to re-review
@jogu please re-review
@c2bo @javereec to also add reviews

@fkj
fkj requested review from c2bo and javereec June 4, 2026 15:13
Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
Comment on lines +1985 to +1989
Wallet implementers need to choose a source of client metadata they can trust within their own ecosystem or implementation. This should determine whether it is safe to use or display to a User. For example, a client name obtained from an X.509 certificate can be trusted, whereas a client name from the `client_metadata` parameter cannot.

It is recommended to use `client_metadata` parameters only for client-supplied parameters that can be used untrusted, for example, a public key.

Ecosystems can use other ecosystem-specific trusted data sources as long as they conduct a proper trust evaluation.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jogu What specifically is the problem with the "it is recommended" text? Just that it reads as a normative statement?

And what about something like this:

Suggested change
Wallet implementers need to choose a source of client metadata they can trust within their own ecosystem or implementation. This should determine whether it is safe to use or display to a User. For example, a client name obtained from an X.509 certificate can be trusted, whereas a client name from the `client_metadata` parameter cannot.
It is recommended to use `client_metadata` parameters only for client-supplied parameters that can be used untrusted, for example, a public key.
Ecosystems can use other ecosystem-specific trusted data sources as long as they conduct a proper trust evaluation.
Ecosystems can define other ecosystem-specific trusted data sources in a profile as long as they conduct a proper trust evaluation.

@fkj
fkj requested a review from jogu June 15, 2026 19:33
Comment on lines +1985 to +1989
Wallet implementers need to choose a source of client metadata they can trust within their own ecosystem or implementation. This should determine whether it is safe to use or display to a User. For example, a client name obtained from an X.509 certificate can be trusted, whereas a client name from the `client_metadata` parameter cannot.

It is recommended to use `client_metadata` parameters only for client-supplied parameters that can be used untrusted, for example, a public key.

Ecosystems can use other ecosystem-specific trusted data sources as long as they conduct a proper trust evaluation.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think my concern was in the conflict between

It is recommended (for Wallet implementers) to use client_metadata parameters...

and

Other metadata parameters MUST be ignored unless a profile <...>'

If the recommendation is scoped to profiles that's better. But maybe something like:

Profiles MAY define additional client_metadata parameters for client-supplied parameters that can be used untrusted, for example, a public key.

(Pretty sure that can be improved upon)

Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
@brentzundel

Copy link
Copy Markdown
Collaborator

@dpostnikov can you respond to reviews here before the WG calls this week?

Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
@brentzundel

Copy link
Copy Markdown
Collaborator

@dpostnikov we need your response to the comments and requests for changes

Co-authored-by: Frederik Krogsdal Jacobsen <fkj@users.noreply.github.com>
Co-authored-by: Joseph Heenan <joseph@heenan.me.uk>
Co-authored-by: Lukasz Jaromin <lukasz.jaromin@raidiam.com>

@dpostnikov dpostnikov left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apply suggestions from code review
Co-authored-by: Frederik Krogsdal Jacobsen fkj@users.noreply.github.com
Co-authored-by: Joseph Heenan joseph@heenan.me.uk
Co-authored-by: Lukasz Jaromin lukasz.jaromin@raidiam.com

@dpostnikov
dpostnikov requested review from fkj, jogu and lj-raidiam August 5, 2026 06:26
@dpostnikov
dpostnikov requested a review from brentzundel August 5, 2026 07:40
Comment thread 1.0/openid-4-verifiable-presentations-1_0.md Outdated
Comment thread 1.0/openid-4-verifiable-presentations-1_0.md Outdated
Comment thread 1.0/openid-4-verifiable-presentations-1_0.md Outdated
Comment thread 1.0/openid-4-verifiable-presentations-1_0.md Outdated
Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
Comment thread 1.0/openid-4-verifiable-presentations-1_0.md Outdated
Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
Comment thread 1.0/openid-4-verifiable-presentations-1_0.md Outdated
Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
Comment thread 1.1/openid-4-verifiable-presentations-1_1.md Outdated
@brentzundel

Copy link
Copy Markdown
Collaborator

@dpostnikov looks like there are changes for you to review

dpostnikov and others added 7 commits August 25, 2026 05:22
Co-authored-by: Joseph Heenan <joseph@authlete.com>
Co-authored-by: Joseph Heenan <joseph@authlete.com>
Co-authored-by: Joseph Heenan <joseph@authlete.com>
Co-authored-by: Joseph Heenan <joseph@authlete.com>
Co-authored-by: Joseph Heenan <joseph@authlete.com>
Co-authored-by: Joseph Heenan <joseph@authlete.com>
Co-authored-by: Joseph Heenan <joseph@authlete.com>
@dpostnikov
dpostnikov requested review from fkj and jogu August 24, 2026 19:26
@brentzundel

Copy link
Copy Markdown
Collaborator

Discussed today. @jogu will review this week.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Retrieving all client metadata from client_metadata parameter seems too restrictive

10 participants