-
Notifications
You must be signed in to change notification settings - Fork 3
Clarify use of JWT-Secured Authorization Request in KCC README #33
Comments
I love that we have YC to go through this flow, which in turn provokes these important changes. My thoughts to your unanswered questions:
Once we all reach a conclusion on this, I'll be sure to update the KCC guides. |
|
Good catch, I glossed over this in the first go at kcc-prototype-exemplar.
|
given that HAIP requires |
HAIP is not a spec we've used in KCC so far. We aren't doing most of what it requires: SD-JWT VC, authorization code flow, sender-constrained tokens, S256 code challenge method. If we're going to take it's recommendations then it should be all of them. I'm fine with using just 1 of |
We should understand the choices they've made and why, and apply them where they make sense. A few clear security benefits for using
I wasn't too familiar with PAR, but I believe it could be a good security addition to the KCC spec. This would improve the security of Step 3 in the Initiate Application Flow, so instead of
We could introduce a PAR endpoint which surfaces a So tl;dr -- yes let's go with |
@decentralgabe I might have misread the spec, but I believe the issue is that this PAR cannot be easily combined with SIOPv2, particularly in cross-device scenarios. As noted in the diagram below (excerpt from KCC README) the RP is the PFI and the IDP/Authorization Server is the mobile app. In order to use PAR, the mobile app would need a publicly accessible endpoint for the PFI to push its authorization request to. I've searched and thus far I can't find any good example of SIOPv2 combined with PAR when the IDP/AS doesn't have publicly accessible endpoints. I'm sequenceDiagram
autonumber
participant W as Webview
participant D as Mobile App
participant P as PFI
D->>+P: GET
P->>P: Construct SIOPv2 Authorization Request
P-->>-D: SIOPv2 Authorization Request
D->>D: Construct SIOPv2 Authorization Response
D->>+P: SIOPv2 Authorization Response
P->>P: Construct IDV Request
P-->>-D: IDV Request
D->>D: Verify IDV Request
D->>W: Load URL in IDV Request
|
my mistake - let's ignore my suggestion for PAR |
JAR update PR for |
Context
@ethan-tbd and I were troubleshooting an issue with DIDPay throwing an exception during the KCC issuance sequence with the YC PFI.
DIDPay expects to receive a JWT-Secured Authorization Request (JAR):
Here's an example of what DIDPay expects to receive:
YC followed the kcc-prototype-exemplar so their endpoint is returning the JSON payload directly:
Proposal
We should:
Unanswered Questions
Should we make JWT-Secured Authorization Request (JAR) mandatory such that URL-encoded JSON auth requests are rejected? It seems like this is the most reasonable approach both to reduce variability / decisions for implementers and because accepting JSON means that the Auth Request from the RP (PFI Issuer in this case) is unsigned and could be tampered with. FWIW, although we don't use this spec due to its lack of support for DIDs, HAIP also mandates usage of RFC 9101 JARs for auth requests.
Should we enable support for returning the authorization request by reference in addition to (or instead of) by value? The benefit to doing this is that it makes it feasible (fewer bytes to QR encode a URI vs. signed JWT) to present the auth request as a QR code, which could then be scanned by a mobile device in the case that the wallet that contains the user's DID+keys+VCs are a different device from the one they are using to interact with a PFI. In other words, should we return an authorization request that looks like this:
The text was updated successfully, but these errors were encountered: