-
Notifications
You must be signed in to change notification settings - Fork 25
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
Allow the service to issue Verifiable Credentials #6
Comments
BBS+ signatures (for Privacy-ABCs) are not yet standardized: https://github.com/decentralized-identity/bbs-signature |
There is ongoing development on this topic in the Verifiable Credentials Branch. Currently this branch only supports proofs through signing the JWT-encoded VC as well as an initial implementation of the Ed25519Signature2018 LD-Proof signing algorithm, which should be checked against other implementations in the near future. As for BBS+, there is ongoing work to propose new standards both for a new type of JWTs (called JSON Web Proofs), which aim to support selective disclosure, as well as an LD-Proof signature suite. We should probably focus on the latter, as that one has at least some implementations in other languages, see e.g. https://github.com/transmute-industries/verifiable-data/ (Although there are some inconsistencies, like the required Unfortunately, as noted in this issue, relying on implementations is something we will have to do, as the LD-Proof Specs are at times vague or even contradictory. I was unable to find a Ruby implementation of BBS+ Signatures, but we could interface with libpabc. This would probably be useful by itself, so I would recommend creating a gem in a dedicated repository. @schanzen As for delivering the token: I assume by "the JWT" you refer to either the access or ID token. We should make sure that these are not confused with JWT-encoded Verifiable Credentials having a similar
I would suggest following an approach close to OIDC4VP, which only deals with verifiable presentations issued by the OP (a topic we may want to explore in the future), but offers two possible delivery methods:
Either could then be requested using the |
Interesting information. Please note that omejdn will never be an SSI OP (OP = OpenID Provider). SSI OPs are usually implemented as client side software. They act as an OP for example through the SIOP profile. A relying party may ask the subject to provide identity information of a SSI and a client-side OP can implement an OIDC AuthZ flow. The SIOP will then issue presentations in the JWTs (at least that is my assumption). But those presentations must be generated from (verifiable) credentials. |
To follow up on this and make it a bit clearer: The feature could be implemented in omejdn by having an API endpoint, say However, the above would be non-standard functionality. I was in particular wondering, if there is a standards effort on how to do this. |
There seems to be for OIDC: https://mattrglobal.github.io/oidc-client-bound-assertions-spec/ It defines a generic "Credential Endpoint" discoverable via OIDC Discovery. Were we to implement this, we should probably stick to copying their example endpoints, which would mean choosing I would argue that the format might matter, since not all credential holders (CH) will have support for both JSON-LD with every single LD-Proof Suite as well as JWTs (with the latter probably not being the problem here). After all, the CH has to be able to derive a verifiable presentation. Subsequently, it would be helpful if CHs could specify their desired format. Another approach is given in https://identity.foundation/credential-manifest/ . Unfortunately, the two specs seem to be incompatible with each other. There is an open issue here. |
For now I will focus on the former, as that one is easier to get running. We may choose other specs in the future |
The mattr spec looks exactly like what I had in mind! |
It seems the above mentioned Mattr spec has been abandoned in favour of https://openid.net/specs/openid-connect-claims-aggregation-1_0.html |
Quick update on APIs to issue VCs:
|
I think in both cases we would have to violate or extend the specifications. So the question becomes what is cleaner and what do want. In general, I think the OIDC4CI would be nicer to have in order to support SSI wallets. |
We could add the option to issue verifiable credentials as defined in https://www.w3.org/TR/vc-data-model/#json-web-token in particular in the client_credentials flow using public key authentication (JWT bearer auth).
This would mean that we issue a verifiable credential in the
vc
claim of the JWT.The VC could then be used by a client to create a new self-signed JWT which in turn includes a verifiable presentation claim (
vp
). The VC/VP attributes could be issued using Privacy-ABCs such as https://github.com/Fraunhofer-AISEC/libpabc.The text was updated successfully, but these errors were encountered: