Skip to content
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

Adopt list of supported Identity Wallets #11

Closed
OR13 opened this issue Aug 7, 2019 · 23 comments
Closed

Adopt list of supported Identity Wallets #11

OR13 opened this issue Aug 7, 2019 · 23 comments
Assignees

Comments

@OR13
Copy link
Collaborator

OR13 commented Aug 7, 2019

Please add Identity Wallet Mobile apps that would like to be supported, and comment on the idea of implementing a QR Code flow.

@OR13
Copy link
Collaborator Author

OR13 commented Aug 7, 2019

Transmute ID is a PWA, but we have the ability to scan QR Codes, I think we can support the DID Auth Flow. Our codebase is JavaScript. Our approach would likely not be reusable by mobile wallets because of the client-server architecture.

@OR13 OR13 changed the title Supported Identity Wallets Adopt List of supported Identity Wallets Aug 7, 2019
@OR13 OR13 changed the title Adopt List of supported Identity Wallets Adopt list of supported Identity Wallets Aug 7, 2019
@ipatka
Copy link

ipatka commented Aug 12, 2019

BloomID is an identity wallet with the ability to scan QR codes and route deep links for credential sharing and authentication. Server side is Typescript. Clients are in Swift and Java using a shared c++ crypto library for signing. If anything is useful for other wallets we would be open to packaging it into an open source repo.

@kdenhartog
Copy link

I'll make an announcement on the Aries call tomorrow to mention companies who want to join should come in here and comment.

@OR13 OR13 assigned awoie and unassigned pelle Aug 15, 2019
@brentzundel
Copy link
Member

Evernym has a mobile agent with an identity wallet that uses QR codes, but I'm not sure what it would take for it to be a "supported identity wallet." What would this actually entail?

@vongohren
Copy link
Contributor

Uport is using React Native, and scans QR code. Our app is far from ready but my efforts so far is going in that direction

@OR13
Copy link
Collaborator Author

OR13 commented Aug 21, 2019

Excellent, thanks kicking off the conversation.

For an Identity Wallet to be supported, it must implement protocol / data structures necessary to complete the interop demo (a simple credential issuance and presentation flow).

While some of these concepts are still being ironed out, we do have some higher confidence assertions:

  1. The Auth Flow will use OIDC SIOP, a client will need to sign and verify ES256K JWT, that are encoded in QR Codes.

  2. The client will likely need to render a W3C VC format as described here: https://github.com/decentralized-identity/interop-project#credential-format

I think we should focus on OIDC SIOP to start.

That means that the clients will need to be able to sign and verify ES256K JWT, and scan QR Codes.

It sounds like there are a couple different languages which would need to be supported.

I suggest we build a javascript SDK for demoing this first, and then we can figure out how to get interoperability tests for Java, C++, etc...

@awoie
Copy link
Member

awoie commented Aug 27, 2019

@OR13 yes, I'm setting up the respective repositories in GitHub in the course of the Authentication WG.

@Joachim16
Copy link

Jolocom SmartWallet is in React Native with ability to scan QR codes. there is deep linking for credential sharing and authentication. backend is Typescript.

@OR13
Copy link
Collaborator Author

OR13 commented Sep 20, 2019

Seems like QR Codes are well supported, but the question is what data is presented in the QR Code.

I think we will likely find that existing apps have varying expectations here.

If the QR Code is exactly a JWT, I think thats the easiest for interoperability.

@cboscolo
Copy link

@OR13 if the QR codes is "exactly a JWT", would that mean that someone scanning it using the iPhone camera (not via an app) would not have a good user experience since it wouldn't know what app to launch?

@OR13
Copy link
Collaborator Author

OR13 commented Sep 24, 2019

yes, good point, from discussions elsewhere. We seem to be heading for a URI format like:

openid://<jwt>

app://<jwt>

app://expand?request=<jwt>

We probably need some kind of spec hosted in the DIF that organizes these approaches.

@awoie
Copy link
Member

awoie commented Sep 25, 2019

@cboscolo

if the QR codes is "exactly a JWT", would that mean that someone scanning it using the iPhone camera (not via an app) would not have a good user experience since it wouldn't know what app to launch?

Yes! But we could register the URL scheme with IANA, then there is a chance that the behaviour changes on iOS. We are trying to do this for openid://.

Another approach is to use custom MIME-types but the UX would still be very unusual.

@awoie
Copy link
Member

awoie commented Sep 25, 2019

yes, good point, from discussions elsewhere. We seem to be heading for a URI format like:

openid://<jwt>

openid should not be used for credential issuance, only for openid requests.

We probably need some kind of spec hosted in the DIF that organizes these approaches.

Yes, and if we decide on a custom URL scheme, then we should also register it with IANA.

@hob
Copy link

hob commented Oct 4, 2019

Having the QR code exactly be a JWT simplifies the flow, but it might lower the bar a bit if the QR were just a URL. If it were assumed that flow started with fetching the JWT from a URL 1st, then the QR becomes optional and the barrier to entry would be lower. It would enable features like direct linking for mobile devices where a QR presents a bit of a chicken/egg problem (the phone can't scan its own screen).

@alenhorvat
Copy link

alenhorvat commented Oct 12, 2019

Hi. We (Netis/AceBlock) have a working SSI Mobile app, a web-snippet (QR code part) and a backend agent for verifying the OIDC-SSI token for a year. Our QR Code content is a JWT. We also implemented the mobile-browser-mobile-SSI app (deep link) functionality. The mobile part is in Java, web part in JS, server-side part in JS. A year ago the OIDC implementations did not support the ES256K JWT signatures, nor OIDC-SSI tokens.
We also have a server-side fix for .NET and LUA. (it should be rewritten)

Core parts of the libraries will be open source. If you need any help/input, let me know.

(the phone can't scan its own screen) -- we have solved this using deep-links. For interoperability, all SSI apps should follow the same URI format.

@OR13
Copy link
Collaborator Author

OR13 commented Oct 14, 2019

@alenhorvat please add links to any implementations if possible, especially your existing URI format, thanks for adding your voice.

@alenhorvat
Copy link

Here is the demo page: https://id.aceblock.com/ (Mobile app is not public, yet. V1 is for the demo, V2 is expected to be available by end of the year.)
Web-site JS module: https://www.npmjs.com/package/@aceblock/aceblock-login-qr
Auth. flow is the same as OIDC-SSI (and also DID-AuthN SIOP).

I will provide more info about the URI in the following days.

@ipatka
Copy link

ipatka commented Oct 28, 2019

We just released a CLI which replicates much of the functionality for the Bloom app for prototyping and testing purposes. https://github.com/hellobloom/bloom-credential-playground

It is not yet compliant with the interop mechanisms for did creation, credential issuance, etc but my plan is to prototype the interop features in the CLI then migrate it into the mobile app when ready.

@alenhorvat
Copy link

URI Format: at the moment we're using: app_name:base64_encode(oidc_request) <- this should be standardized (e.g., ssi:oidc_auth: for an OIDC-SSI compliant authentication). The oidc_request complies with the OIDC-SSI and DID-Auth SIOP (for authentication only). VC/Attestation request flows are not defined at the moment. Question: are deep-links and QR codes secure way of transferring information from a client to an SSI Agent?

@kdenhartog
Copy link

I would not consider a QR code a secure method of transferring information. They should be considered an insecure method of transmitting data.

@OR13
Copy link
Collaborator Author

OR13 commented Nov 12, 2019

If the QR Code is a JWE... its as secure as JWE...

Size limits of QR Codes means usually they will be either a resource that can be protected with whatever authorization scheme or a JWE... I'd love to to see OIDC SIOP actually tested in the wild, before we got any further down the QR Code rabbit whole for AuthZ / credential exchange.

@brentzundel
Copy link
Member

@kdenhartog
Copy link

If the QR Code is a JWE... its as secure as JWE...

Size limits of QR Codes means usually they will be either a resource that can be protected with whatever authorization scheme or a JWE... I'd love to to see OIDC SIOP actually tested in the wild, before we got any further down the QR Code rabbit whole for AuthZ / credential exchange.

Yes, this is a better way of saying what I was trying to.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

13 participants