@greencheck/sdk-client
v0.0.2
Published
client SDK for securely connecting to GreenCheck servers for authentication and other activities
Readme
Greencheck SDK Client
This SDK is for use by third-party sites to enable GreenCheck Login on their applications. GreenCheck can create various levels of "proof of humanity" of a real peson.
The SDK enables safe and secure connection from the third party site, to GreenCheck's authorization server, which then proxies to the main application server once the SDK has been authorized to access it. It uses the same basic architecture as major enterprise players such as Stripe and Auth0.
Basic architecture
- Third-party sites are identified by a public client token ID and registered origin(s) as the first gatekeeper
- All requests from the SDK are protected by CORS headers with strict origin settings
- SDK manages ephemeral public/private key pairs, unique to each session
- Authorization server does a bi-directional handshake with the SDK that must be authorized before any other requests are allowed
- Challenges and signatures are created and verified for the handshake
- Authorization server stores the transient public key from the SDK to identify it for the session (used to verify challenges and signatures)
- A secondary layer of authorization is added once a user successfully identifies themselves (social sign-in, 2FA for email or phone, etc)
- Before a user identity confirmation is transmitted, the SDK and authorization server perform a PKCE token challenge exchange to verify that the current SDK making the user identity request is the one that originated it
- All data posted is also sent with a signature for verification
Test POC
You may visit our test POC environment to try out the process. Observe the requests in the network tab to see the third-party requests in action.
Test POC site, hosted at our other project Noo Networks.
TODOs
- add a few more methods and logic for social services login (Mastodon, Facebook, etc, please see the GreenCheck main site for a complete list)
- add a silent refresh method via iframe for use in some contexts (a strategy that is used by enterprise services)
- clean up and publish to NPM
