Implement a web page that contains a form field (for DID) and a button. Upon clicking the button, a credential should be issued to the DID subject
- Start the SSI Service locally
docker-compose up --build
- Run ngrok (wondering why? see explaination details)
ngrok http --region=us --hostname=ngrok.anthonydellavecchia.com 8080- Or your ngrok hostname, i.e.
ngrok http 8080
- Run a proxy (wondering why? see explaination details)
lcp --proxyUrl https://ngrok.anthonydellavecchia.com- Or
lcp --proxyUrl https://{YOUR-NGROK-URL}
- Go to https://tbd-verify-credential.vercel.app/
- Create Issuer DID
- Enter the keytype:
Ed25519 - Copy the Issuer DID
- Enter the keytype:
- Create Subject DID
- Enter the keytype:
Ed25519
- Enter the keytype:
- Create Schema
- Paste the Issuer DID created from Step 4 (Create Issuer DID)
- For example,
did:key:z6MkpEQY4FCCtJEVpZ6gGK541fYWynH2ya7D1RikTGfdydCF
- Verify Credential
- Paste the Issuer DID associated to the schema ID
- For example,
did:key:z6MkpEQY4FCCtJEVpZ6gGK541fYWynH2ya7D1RikTGfdydCF
Create Issuer DID
Create Subject
Create Schema
Validate Credential

- When you click on each button, an API call is made to the SSI Service.
- To create Issuer DID, the arg is the keytype.
- To create Subject DID, the arg is the keytype.
- To create Schema, the arg is the Issuer DID.
- To verify the credential, the args are the Issuer DID and Schema ID.
- Vercel and Next.js for the frontend (my first time using them)
- Also includes Typescript
- SSI Service in Golang for the backend
- Python for the mock backend (wondering why? see explaination details)
- Flask as the web server
- During initial development, the SSI Service was down, so I created my own mock service in Python
/mock-service-backend - I am running 2 servers: the SSI Service, and my development server. They are both on
localhost, but different ports (8080 and 3000). But the SSI Service throws a CORS error, because no 'Access-Control-Allow-Origin' header is present. In order to fix it, I had to run the SSI service through a proxy. This is done by:- Creating a tunnel using ngrok. It forwards
localhost:8080to a public URL likengrok.anthonydellavecchia.com/ - Creating a proxy from
ngrok.anthonydellavecchia.com/tolocalhost:8010/proxy. This way, I can access the SSI endpoints like so:localhost:8010/proxy/v1/dids/key
- Creating a tunnel using ngrok. It forwards
This repo contains two submodules
- The frontend in
/acme-frontend - The backend service in
/ssi-service
Note: Because SSI Service was down, I created a mock backend in
/mock-service-backend.
/mock-service-backend is a Mocked Python backend with 3 endpoints:
/v1/dids/keyto create a key - Postman screenshot/v1/schemasto create a schema - Postman screenshot/v1/credentialsto validate a credential - Postman screenshot
All 3 endpoints return a similar Response from their respective endpoint in the SSI service
cdinto/acme-frontendyarn installyarn dev
cdinto/mock-service-backend- Run
python3 app.py
Note:
/mock-service-backendis running on localhost:8080, so it will only work if you run it locally.
cd ssi-service/build- Run
docker-compose up - Continue to follow the steps below (using ngrok and proxy)
There is a CORS issue, so this is how to fix it:
- Run
ngrok http --region=us --hostname=ngrok.anthonydellavecchia.com 8080- This creates a tunnel and points
http://localhost:8080tohttps://ngrok.anthonydellavecchia.com
- This creates a tunnel and points
- Run
lcp --proxyUrl https://ngrok.anthonydellavecchia.com- This creates a proxy on
http://localhost:8010/proxy - So, if you want to hit a SSI Service endpoint it might look like:
http://localhost:8010/proxy/v1/credentials
- This creates a proxy on