flip-fest icon indicating copy to clipboard operation
flip-fest copied to clipboard

Dev Wallet Feature: Improve OpenID implementation

Open srinjoyc opened this issue 4 years ago β€’ 6 comments

πŸ‘‹ Β  If you are interested in working on this issue, please check out the Getting Started guide on HackerEarth!

Description/Problem

Dapps should be able to define and request user information from FCL compatible wallet providers so that they can associate the account address with identity fields. Currently, during authentication, the only field the FCL development wallet returns is the address of the authenticated account and hardcoded values for scopes provided. Within the development wallet, we need a way manage OpenID scopes per account and return them dynamically during authentication if requested by the FCL configuration.

If any user information is being shared, show the user a prompt on which details are being shared with what domain (similar to an OAuth flow) via the authentication UI.

Experience Required

  • Moderate level experience with Typescript & Javascript
  • Some understanding of FCL and the communication patterns for FCL wallets

Minimum Feature Set (Acceptance Criteria)

Manage OpenID fields on all accounts

  • All these claims should be supported and editable as the administrator of the dev wallet (via the 'manage account' screens) and be done so with good UI/UX principles in mind.

Implement Dynamic OpenID Spec Authentication Responses

Extension (Optional) Feature Set

Support required OpenID fields. If a field in the configuration of service.OpenID.scopes is required (via the '!' operator), then do the following:

If the account exists during authentication:

  • If all the required fields do not exist in the account:
    • Render and collect the fields that are required but missing
    • Return the data with all required fields
  • If all the required fields do exist:
    • Return the data

If the account does not exist during authentication:

  • Render and collect the required fields
  • Save the collected data to the user's profile for future use
  • Return the data

Milestone Requirements

  1. Create wireframes to illustrate how you plan on showing and managing OpenID scopes in the UI.
  2. Implement the management of OpenID fields on any account created in the dev wallet.
    1. An administrator should be able to modify any valid field to any value and have it saved to the account.
    2. A user should see which scopes are being shared with the dApp on authentication.
    3. The response from the wallet should contain values from the requested scopes (empty if not set).
  3. Optimize the UX of the wallet and its developer usability and/or implement the extension feature
    1. Add documentation on OpenID to the dev wallet
    2. Ensure scopes are optimized to be easy to manage and display during development

Software Requirements

Maintainability

  • Code should be written with good practices in mind and allow extensibility
  • Follow existing code semantics and patterns in the existing repository

Testing

  • This feature should have unit tests for core parts of the logic.
  • Each user flow should have at minimum one end to end test.

Other Requirements

Documentation

  • The following pieces of documentation needs to be completed alongside the code for a successful submission:
    • OpenID Usage: Help developers understand and use the feature set.

Judging Criteria

Resources

srinjoyc avatar Sep 09 '21 14:09 srinjoyc

Hello there. Mackenzie here. πŸ„πŸΌβ€β™‚οΈ I'm part of the Developer Experience team at Flow. Glad you're checking out this issue. I can help answer any questions you might have about what you see here, and if you decide to take this on, I'll be your primary point of contact for you or your team.

Please add your comments/questions here, or find me on the Flow Discord (mack)

Happy hacking! πŸš€

10thfloor avatar Sep 15 '21 22:09 10thfloor

hi @10thfloor, we are interested to work on this issue. HackerEarth Team: Dev Wallet OIDC I hope it is not too late to join to FLIP Fest

wfalcon0x avatar Oct 22 '21 20:10 wfalcon0x

@wfalcon0x It is not too late! Do you have any code, specification or a repository we could look at yet? If not, no worries, but an idea of your expected timeline would be helpful at this stage.

10thfloor avatar Oct 25 '21 23:10 10thfloor

@10thfloor , not yet, just started to look into the code to understand what will need to be done. I missed your message yesterday. I would like to clarify some details and make sure we understand the requirements before I make an estimate on the timeline.

We understand that private info from the wallet providers will be requested via scopes. In regards to managing OpenID fields on all accounts, we could use the currently hardcoded values as default values as a start to populate the data at the account creation, just to have some data there for testing purposes. Is it something in line with what you are expecting?

In regards to showing the user a prompt on which details are being shared, we assume it is sufficient to expose on the UI the exact names of the scopes as they are referenced in the OpenID standard. As the dev wallet is a development tool, we assume it is not required to provide more user friendly description.

Please let me know, in what way do you prefer to share the wireframes with you?

wfalcon0x avatar Oct 27 '21 21:10 wfalcon0x

Good day Dev Wallet OIDC (@wfalcon0x)

Thanks so much for all your hardwork & participation. In order to finalize winners & prepare for prize payout, we'll need the following actions from your end.

Please provide the following information byΒ Nov 17, 2021 (in this GH Issue is fine):

1. Team Information

  • Team Members Information - Github Username + Email Contact + Percentage of prize allocation (total should = 100%)
  • All mentioned members MUST react to the post with a πŸ‘ which will act as confirmation that the information is correct, or a πŸ‘Ž to indicate that the information is not correct.
  • We will be reaching out via e-mail

πŸŽ–IMPORTANT: We will only proceed with prize payouts once all members have confirmed with πŸ‘ on the post.

2. Video Demo (optional)

  • Please provide a 5-minute video demo to be featured & showcased in the FLIP Fest Closing Ceremonies
  • Link format & Downloadable (eg. Google Drive, Vimeo)
  • Content Format (Problem Statement, your work / how you solved it, final outcome)

We will be hosting Closing Ceremonies on November 23rd, 8AM PT where we'll having closing remarks from Dete & will be announcing the winners! I'll share the details here before Nov 17.

kimcodeashian avatar Nov 12 '21 23:11 kimcodeashian

Hey folks,

We've received and reviewed over 82 submissions! What an amazing community on Flow! To commemorate all the hard work done, we have finalized winners and will be announcing them during our Closing Ceremony on Nov 23rd, 8AM PT. Be sure to join us - there may be some attendance prizes & a keynote from our CTO, Dete πŸ˜‰!

RSVP here so you don't miss out! See you then!

kimcodeashian avatar Nov 17 '21 00:11 kimcodeashian