openid / OpenID4VP

57 stars 20 forks source link

Support for selecting multiple credentials via a single dcql #298

Open sloops77 opened 3 weeks ago

sloops77 commented 3 weeks ago

In Velocity Network, a career and education ecosystem, wallets are using PE to select multiple credentials based on a particular claim.

dcql (#266) does not seem to currently support a common use case we have is to return all credentials matching “vct”: “https://credentialrepository.com/education_degree”

sloops77 commented 1 week ago

@danielfett I spoke with you at IIW about the above requirement that we have.

A suggestion I would make is to add a multiple flag to credential sets that would be used to say that the RP wants to receive all matching versions of a credential, not simply one.

{
   "credentials": [
     {
       "id": "pid",
       "format": "vc+sd-jwt",
       "meta": {
         "vct_values": ["https://credentials.example.com/identity_credential"]
       },
       "claims": [
         {"path": ["given_name"]},
         {"path": ["family_name"]},
         {"path": ["address", "street_address"]}
       ]
     },
     {
       "id": "degrees",
       "format": "vc+sd-jwt",
       "meta": {
         "vct_values": ["https://credentials.example.com/education_degree"]
       }
     },
     {
       "id": "work_experience",
       "format": "vc+sd-jwt",
       "meta": {
         "vct_values": ["https://credentials.example.com/employment_role"]
       }
     }
  ],
  "credential_sets": {
      {
       "purpose": "Identification",
       "options": [
         [ "pid" ]
       ]
       // implicitlu multiple: false
     },
     {
       "purpose": "Resume",
       "options": [
         [ "degrees", "work_experience"]
       ],
      "multiple": true
     }
  }
} 

Considerations

The benefit of the proposal above is that it changes the behaviour for all options in the credential_set making it easy to adjust the Wallet UI to be a multiselect for that particular set. Alternatives would be to permit changes on a per option list or even per option basis, but I dont see what the use case for that would be, and makes the simple UI challenging

Also another consideration is the name of this property but I'll leave that for a discussion

WDYT?