SolidusIdentity

Build identity into anything.

Integrate passwordless auth, verify credentials via zero-knowledge proofs, or become a verified issuer in minutes.

Login.tsx
import { solidusAuth } from '@solidus/auth';

const session = await solidusAuth.request({
  domain'yourapp.com',
  require['kyc_l2', 'age>18']
});

Sign in with Solidus

For web apps wanting passwordless auth. Drop-in SDKs for React, Vue, and vanilla JS. Get started in under 5 minutes.

Issue Credentials

For organizations wanting to issue verifiable credentials to their users. Use the Issuer Node API to mint and deliver directly to wallets.

Verify Credentials

For services wanting to verify incoming credentials. Use the Verifier SDK, REST API, and webhook delivery to validate ZK proofs.

Become a Verified Issuer.

Issue W3C Verifiable Credentials directly to users' Solidus wallets. From employment records to educational degrees — any credential type is supported.

01

Register as Issuer

Apply for a Verified Issuer DID. Provide org details, credential types you'll issue, and your preferred verification method. Takes 2–5 business days.

02

Define Your Schema

Use the Schema Registry to define your credential type's fields and data types. Schemas are published on-chain for discoverability.

03

Issue via SDK

Use @solidus/issuer-sdk to issue credentials. One API call signs the credential with your issuer DID and delivers it to the user's inbox.

issuer.ts
import { SolidusIssuer } from '@solidus/issuer-sdk';

const issuer = new SolidusIssuer({ apiKeyprocess.env.SOLIDUS_KEY });\n\n'await issuer.issue({
  recipient'did:solidus:mainnet:5dK3fP7vLm8Qw2xNz9Rb4YcJ6tHgAs',
  schema'solidus:schema:professional-license:v1',
  attributes{ name, employer, role, validUntil },
});

KYC Level 2

full_name, date_of_birth, nationality, document_type, document_expiry

Professional License

name, employer, role, license_number, valid_until

Education Degree

name, institution, degree, field_of_study, graduation_date

Issue credentials your users can carry across the Solidus network.

Verify presentations in your stack.

import { verifyPresentation } from '@solidus/auth/server';

// Receives the presentation from your frontend
const handleVerify = async (req, res) => {
  const { proof, presentation } = req.body;
  
  const result = await verifyPresentation({
    presentation,
    proof,
    expectedDomain'yourapp.com',
    requiredCredentials['kyc_l2']
  });

  if (!result.isValid) return res.status(401).send('Invalid proof');

  // Create session for user DID
  const session = createSession(result.did);
  return res.json({ session });
};

The full Sign in with Solidus flow.

5 steps. Zero passwords. Cryptographically verified.

User
Browser / App
Solidus Identity
Your Backend
1
Clicks 'Sign in with Solidus' button
2
Opens @solidus/auth modal; sends RP context (domain, credential requirements)
3
Shows credential request; user selects fields and approves with biometric
4
Returns ZK proof + signed, timestamped presentation
5
POSTs proof via webhook
6
Calls /v1/verify to validate proof on-chain
7
Issues session token
webhook payload
{
  "event": "presentation.verified",
  "did": "did:solidus:mainnet:5dK3fP7vLm8Qw2xNz9Rb4YcJ6tHgAs",
  "credentials": [{ "type": "KYC_L2", "verified": true }],
  "disclosed": { "country": "US" },
  "proofHash": "0x4f2e8a1b9c3d7e6f...",
  "timestamp": "2026-03-17T14:32:08Z"
}

SDKs & Libraries

PackageLanguageInstall CommandLatest Version
JavaScript
npm i @solidus/auth
v2.4.1
Node.js backend
npm i @solidus/jwt
v1.8.0
Python
pip install solidus
v1.3.0
Go
go get solidus.network/sdk
v0.9.2