Coder Social home page Coder Social logo

userinfo-vc's Introduction

openid-connect-userinfo-vc

Specification of a standard verifiable credential type to convey OpenID Connect UserInfo claims.

Current WG Draft

The current WG-Draft version is built automatically from the main branch and can be accessed at:

https://bifurcation.github.io/userinfo-vc/openid-connect-userinfo-vc-1_0.html

Build the HTML

docker run -v `pwd`:/data danielfett/markdown2rfc openid-connect-userinfo-vc-1_0.md

userinfo-vc's People

Contributors

bc-pi avatar bifurcation avatar pieterkas avatar sakurann avatar soaringdude avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

bc-pi

userinfo-vc's Issues

Introduce user identifier section

It would be helpful to explicitly point out what is used as an identifier for the issuer and the holder as it impacts key management and does not use DIDs (I think?)

remove examples from the overview section?

What is the intended purpose of the sub-sections in the overview section? (Authentication and Authorization, Issuance, etc.)
They seem to provide examples, which I believe are better to be later in the text - in a test vectors section or separately in each of the section defining each aspect of the protocol.

Priming Request Example

The response to the priming request is described as an error response, but the return is an HTTP/1.1 200 OK. Should there be some other response that indicates an error, or is this not really an error response?

Reconsider "Decentralized OpenID-based Login" as a use-case

I am pretty against advocating to use VCs to authenticate, it leads to claim based authentication which is a well-known security vulnerability. there are much more secure passwordless options available. and using sub in a Self-Issued ID Token or a self-signed VC to re-authenticate the user identifier using a VC is a different use-case.
We cannot stop people to use claims in the VCs to authenticate, but we should not explicitly advocate for it.

Rename UserInfoCredential to UserInfoVerifiableCredential

There may be other credentialtypes (even in the decentralised world, there is quite a proliferation of formats), so being more specific in the label may be useful. It also makes for easier reading - I kept reading about UserInfoCredential, and then about verifiable credential and had to stop and remind myself that these are the same (this last point may be just a quirk of my mental processes).

add out of scope section

suggest moving "The RP may then use the VC in a VC presentation protocol (outside the scope of this document) to demonstrate the End-User's identity to a Verifier." to an out of scope section

suggest adding a cryptographic alg section

There seem to be certain requirements around crypto algorithms which should be separated into its own section

The alg value MUST represent a digital signature algorithm supported by the Verifier. The alg value MUST NOT represent a MAC based algorithm such as HS256, HS384, or HS512.

Rewrite terminology section

If terminology is the same as defined in another specification, please cite that specification, instead of redefining.

Why is there a need to return an ID Token?

Is it a requirement to return an ID Token?
OpenID4VP is based on OAuth and ID Token is optional. I have not found a reason to mandate ID Token in this document but I migh tbe missing something.
I suggest removing ID Token from the overview.

Add in-scope section and rewrite the introduction

Introduction is misleading because it states that the following three things are defined:

  1. a Verifiable Credential format that carries OpenID Connect claims,
  2. profiles the general OpenID for Verifiable Credential Issuance specification to provide a similar level of interoperability to OpenID Connect
  3. a standard mechanism for an OpenID Provider to express credential revocation information.

In my mind there is only one thing - an interop profile - being defined and a revocation mechanism and values for specific JWT claims are just parts of the interop profile that are in-scope for it. please see this section: https://identity.foundation/jwt-vc-presentation-profile/#scope

Using "sub" to convey the jwk

I wonder if we need a different claim than "sub" to represent the key that was bound to the user to avoid potential confusion and even implementation errors.

Rename the document

related to issue #2, calling this document OpenID Connect Verifiable Credentials is too broad of a scope and is too conflicting with OpenID4VC spec family that it builds upon. Suggest to pick something more specific to a particular use-case it tries to address.

align with the structure of a VCI spec

I think the document will be more readable if it aligns with VCI spec.
so that the it is clear what is being defined in this profile and what are the requirements for the optionalities in the VCI and other specs used.
Right now, the reader needs to read step by step to pick out what are the requirements on top of VCI.

Rewrite the document so that it is clear that it is a profile

Please rephrase all of the sentences that imply that this document defines a new mechanism/standard. It is a profile of specification to ensure interoperability using existing drafts/published specifications. These are two very different things.

For example, "This document extends OpenID Connect with an interface by which a Client may request a Verifiable Credential attesting to the user's identity attributes." this is what OpenID4VC spec does already, and this profile builds on top of it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.