Enable user authentication by presentation of an SD-JWT identity credential with OAuth 2.0 for First-Party Applications (FiPA) #38796
IngridPuppet
started this conversation in
Ideas
Replies: 2 comments
-
There is a lot of conceptual and architectural decision to be taken with respect to this feature. We hereby invite the community to contribute with comments on this discussion. |
Beta Was this translation helpful? Give feedback.
0 replies
-
The first failing request will probably produce a LOGIN_ERROR event. We should make sure that we can differntiate those from "normal" LOGIN_ERRORS, as the former a "normal" expected event during the FiPA authentication and the later is an "exceptional" event. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Motivation
With recent developments, Keycloak can serve as an OID4VCI issuer, issuing a verifiable credential for parties to validate the identity of a user. Enabling users to log in to Keycloak by presenting that same credential is a valid use case, and one that is gaining traction.
The SD-JWT format for verifiable credentials is certainly one of the most supported currently. In our use case at adorsys, we specifically want to exchange an SD-JWT identity credential for an access token, so as to maintain legacy systems operable. By this, we mean Keycloak is not intended to implement the OID4VP peer protocol to OID4VCI for verifying presentations, which, given its complexity, would have probably justified the addition of some dependencies. Instead, Keycloak is intended to verify SD-JWT presentations, i.e., with the presence of a Key Binding JWT (KB-JWT), and eventually return an access token.
For reference, these issues enabled Keycloak to run this SD-JWT verification:
Proposal
Our proposal is to delegate OID4VP interaction with a user wallet to an external client, which in turn, runs this SD-JWT against access token exchange with Keycloak. Though OAuth 2.0 for First-Party Applications (FiPA) is primarily thought for providing native login experience, we believe it remains sufficiently agnostic of the authentication means to enable its API-only conceptual foundation to be leveraged for this SD-JWT authentication. The FiPA flow is particularly helpful in preventing replayed presentations.
SD-JWT authentication may be achieved by implementing an SD-JWT authenticator for FiPA for these reasons:
Here is a comprehensive sequential diagram of the scenario:
Comments:
We could implement a functional PoC on this logic and are particularly seeking input from the community with the expectation to amend and contribute our code to Keycloak, enabling user authentication by presentation of an SD-JWT identity credential.
Useful links
Beta Was this translation helpful? Give feedback.
All reactions