A solution to the NASCAR login problem.
A live version and demo of this site can be found at authorization.io.
This software enables a person to find their credential curator (previously known as their identity provider) using an email address and passphrase known to them.
In general, the site accomplishes this by providing a Web polyfill to enable the decentralized lookup of services associated with a person, organization, or entity. It does this by providing a number of HTTP APIs that credential curator websites can integrate with as well as front-end code that can be used as a polyfill on websites that want to support Identity Credentials-based login.
The goal of this project is to support Identity Credentials-based login until a more complete Web Decentralized Hashtable (WebDHT) solution is standardized at W3C and Web browsers build the capability into the core of a browser. While the WebDHT work is a multi-year R&D effort, this software is provided as a placeholder so that other work that depends on Identity Credentials can proceed in parallel.
- npm v3+
This software enables a person to:
- Create and store a device-specific cryptographic key in local storage.
- Create a decentralized identifier (DID), associate that DID with the public key associated in the previous step, and store it in a decentralized identifier document in a decentralized network.
- Map an email address / passphrase combination to a decentralized identifier document.
- Map a decentralized identifier document to a credential curator.
- Proxy read and write requests for credentials between credential issuers, credential consumers, and credential curators.
The following section explains how to setup and develop the authorization.io software on a local development machine.
- node.js
- npm
- mongodb
The options in the ./configs/authorization.dev.js
file can be tuned to your
environment as needed.
- Setup an admin user on mongodb (see below)
- Install the dependencies (see below)
- Map the
authorization.dev
hostname to your localhost.
To setup an admin user on mongodb:
Enter the mongo shell
use admin
db.createUser( { user: "admin", pwd: "password", roles: [ "clusterAdmin", "readWriteAnyDatabase", "userAdminAnyDatabase", "dbAdminAnyDatabase"] } )
To install dependencies, do the following:
npm install
Add a host alias (for example, edit /etc/hosts
) to map authorization.dev
to
localhost
.
Run the following to start up a development server from the source directory:
node authorization.dev.js
To add more verbose debugging, use the --log-level
option:
node authorization.dev.js --log-level debug
Access the server at the following URL: