nuts-foundation / nuts-specification

Contains the source of the Nuts specification RFCs.
https://nuts-foundation.gitbook.io
2 stars 1 forks source link

RFC021: support multiple VPs to enable user auth without OpenID4VP #275

Closed reinkrul closed 4 months ago

reinkrul commented 5 months ago

RFC021 currently limits the holder the present 1 Verifiable Presentation through the assertion parameter. In practice, this is used for presenting the care organization's credential(s). As we require Verifiable Presentations to contain credentials for 1 single credential subject (the signer of the VP), this limits the holder to presenting from 1 wallet/DID.

I propose changing it to assertions (or changing cardinality to *), allowing credentials to be presented from multiple wallets/DIDs.

Use case

In the health care sector we aimed for users (care professionals) to have a credential in their wallet that identifies them as (registered) care professional. They would then present this credential at the verifier (the data holder in data exchanges). To guarantee good usability/UX, this wallet should be support an "unlock once-multiple use" flow, as a care professional could initiate many data exchanges per day. Having to unlock the wallet every time would deteriorate UX and thus adaptation.

Problem

It's very probably that a state-issued care professional-credential is only issued to qualified wallets, which in practice will probably mean mobile phones and/or devices that don't support "unlock once-multiple use" flows.

We aimed for a very high user authentication assurance level (user presents credential at remote party) using OpenID4VP, but this might not be possible due to these limitations imposed by the credential issuer(s).

Proposed solution

An approach that would offer a lower, but still substantial user authentication assurance level could be as followed:

This allows hospital B to verify that the user was actually authenticated to the requesting party's (hospital A) system.

reinkrul commented 4 months ago

Initial fix is to have the system self-attest a user presence (https://github.com/nuts-foundation/nuts-node/issues/3186). If required, we can revisit this proposal.