Decentralized Identity UPORT(SSI)- Hands ON

Rangesh Sripathi
3 min readMay 3, 2020

What is uport ?

A self -sovereign Identity platform that lets user to control data which is often owned by centralized organization. In-case of self-sovereign identity(SSI) ,its the user who decides if the information has to be shared to the organization.

uPort is tied with Ethereum Blockchain and supports both private and public.

Where does SSI Fit ?

I firmly believe SSI would be adopted where preserving user sensitive information is crucial and privacy of user data is very important . It would also replace Authentication mechanism which are quite centralized and owned by large Enterprise security firms . SSI would replace such Centralized system and let User to control what to share.

Getting started with uPort

We would be using Truffle Box for building sample application with uport.

Step 1 : Download Truffle Box for uPort. This is a boiler plate code that sets most of the stuffs to play around with uPort.

https://www.trufflesuite.com/boxes/react-uport-box

truffle unbox react-uport

Step 2 : Download uPort from Playstore and have it installed in Mobile. All of the request we make for sample application will happen over uPort Mobile app .

https://play.google.com/store/apps/details?id=com.uportMobile&hl=en (Android)

https://apps.apple.com/us/app/uport-id/id1123434510 (Apple)

Step 3: Its time to create sample app , Register your sample app at below url

https://developer.uport.me/myapps

You would be shown a QR Code and please use uPort app to scan the same. You should see something like below , which tells you that you have successfully registered app in uPort and corresponding Rinkbey Ethereum testnet account would also be displayed like shown below.

Step 4:

Now since you have registered app in uport and you are aware of Rinkbey Ethereum DID , Lets try to use the same in Truffle Box Boilerplate code.

Navigate to /util/Connector.js and make the following changes

import { Connect, SimpleSigner } from 'uport-connect'
export let uport = new Connect('React Uport Truffle Boilerplate', {
clientId: 'urdid',
network: 'rinkeby'
})
export port const web3 = uport.getWeb3()

All set once you have set your DID , Try building the app i.e

npm start

You should see application running in localhost:3000 and you would find QR Code like below once you hit Login with uPort

Please use uPort to scan the QRCode and you would be presented with two option either to share or Reject the request like below,

Please note Sample application is requesting information it requires form the user and providing the user to control / own the request .

Upon Sharing the request and if all good ,you should see something similar below, This implies we are able to share Information requested by Sample App in Decentralized SSI fashion !

--

--