-
Notifications
You must be signed in to change notification settings - Fork 23
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
request_uri extension #59
Conversation
Thank you @tlodderstedt, starting from your very good proposal, I propose some little changes here as well, according to the following notes:
note also that:
|
I am still a bit skeptical. What I observe:
|
Would it be simpler to extend the HTTP GET for request_uri with static wallet metadata and add wallet_attestation as OPTIONAL to the Authorization Response? |
@paulbastian your points make sense and needs to be clarified because the risks you raise are concrete:
I didn't get these:
Can you provide more elements and these last two elements? then, on this this discovery method through signed artifacts becomes a mutual authentication between the parties, before the data is released. This, RP side represents a way to protect the response_uri endpoint that could otherwise be subject to abuse. Think of an adversary who brings 8MB of JWS to direct.post with a thousand credentials and the RP that processes every single vp token, think of a hundred requests of this type in 5 seconds. This discovery-advance flow allows to authenticate the wallet instance before the presentation, using OAuth 2.0 Attestation-Based Client Authentication. This may not represent a priority for our working group and our implementations, and we may even put it on the back burner but let's not abandon it, this work can be useful to us. |
I like this flow much more, because it reuses Authorization Endpoint. and I think POST makes more sense than GET, just want to understand the implications how disruptive it is. |
The PR proposes to make the new request type a variation of the authorization request. That's why it is called authorization request. So in contrast to the first PR, it does not require a new endpoint at the wallet.
Given my argument above, we could use "oauth-authz-req+jwt" or invent a new typ like "oauth-authz-req-extended+jwt"
That's why I included "Metadata MAY also be provided by other means, for example in the wallet attestation." |
Co-authored-by: Giuseppe De Marco <[email protected]>
Co-authored-by: Giuseppe De Marco <[email protected]>
Where is the additional roundtrip? The PR just replaces the GET request onto the request_uri by a POST request to a new endpoint.
Early refusal? + enhanced privacy since anonymous initiation of a callback (request URI) is impossible due to the signed request.
We are not there yet. Perhaps this request is the one way going forward. |
Can you please explain why that would be a better solution? Note: a GET request MUST be idempotent and does not have a body (which limits parameter size). |
diagrams/create_request_uri.md
Outdated
wm --> rp: [OPTIONAL] wallet metadata | ||
rp -> rp: create and sign presentation request object (client_id, w_nonce, nonce, response_uri, \npresentation_definition, state) | ||
rp --> w: **signed request object** (client_id, w_nonce, nonce, response_uri, \npresentation_definition, state) | ||
note over u, w: do we want to allow unsigned presentation request objects, too? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since we had a signed authz request and presumably a secure channel then signing the presentation request object should be optional
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you are right, we already have authenticated the verifier at that stage.
What do others think? Should we make the signature of the presentation request optional?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think in the meeting last week, we agreed that having unsigned requests is a viable approach but we should create a new issue for that, after we merged this PR.
@tlodderstedt this PR is definitely standing and taking shape in an increasingly consistent way. However, the term Authz request is a traditional OAuth 2.0 term used for years in a well established flow; while in this flow in the wallet ecosystem extends the tradtional oauth 2.0 authz request by adding the I don't like to stress on this, but, the oauth 2.0 flow returns auth code or tokens, while this flow returns artifacts used for doing discovery. The term |
`wallet_nonce`: | ||
: OPTIONAL. A String containing a value the Verifier MUST use in the `wallet_nonce` authorization parameter when creating the signed presentation request object. For example, a base64url encoded fresh, cryptographically random number with sufficient entropy. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also wallet_nonce
authorization request parameter needs to be defined somewhere else (authorization request/section 5 probably). this section is wallet's request parameter.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am ok with the mechanism, direction. but I am not comfortable merging as-is without description of the mechanism being brushed up a little more (and I have made concrete suggestions).
also I am a little worried about the terminology for this new request_uri_mode, in some places it tries to be different from JAR, but in other tries to align. at least saying "the wallet retrieves Request Object using POST request" should be fine.
Co-authored-by: Kristina <[email protected]>
Co-authored-by: Kristina <[email protected]>
Co-authored-by: Kristina <[email protected]>
Co-authored-by: Daniel Fett <[email protected]>
Co-authored-by: Kristina <[email protected]>
Co-authored-by: Kristina <[email protected]>
Co-authored-by: Daniel Fett <[email protected]>
Co-authored-by: Paul Bastian <[email protected]>
Co-authored-by: Christian Bormann <[email protected]>
Co-authored-by: Daniel Fett <[email protected]>
Co-authored-by: Kristina <[email protected]>
Co-authored-by: Kristina <[email protected]>
Co-authored-by: Kristina <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
Co-authored-by: David Chadwick <[email protected]>
This is an attempt to come up with a simplified and more privacy preserving design for the advanced flow (issue #45). The simplification and tightening is achieved by removing the ability to pick client identity and scheme on demand and instead adding the ability to sign the initial request.
It fulfills the following requirements:
It would also allow encryption of the presentation request and to include a wallet provided nonce in the signed presentation request object.