Quickstarts¶
These quickstarts are written for tenant owners, application developers, and operators who need a working SigID integration. Each flow ends with a clear definition of done so you can hand the result to another team without hidden context.
Before you start¶
Gather the following before creating production resources:
| Item | Why it matters |
|---|---|
| Tenant display name | Shown in login, consent, email, and administrator screens |
| Production application URLs | Required for redirect URI and allowed-origin checks |
| Administrator list | Determines who can change tenant security settings |
| Required scopes | Controls what user, organization, agent, or wallet data apps can request |
| Identity providers | Determines whether you need social OAuth, enterprise OIDC SSO, SIWE, or passkeys |
| Event receiver URL | Needed if your application consumes webhooks or audit events |
Recommended order
Start with one tenant, one web application, one administrator, and one test user. Add organizations, SSO, agents, and webhooks after basic login works.
Create a tenant¶
- Sign in to the SigID dashboard.
- Create a tenant for the product, workspace, customer account, or organization boundary you manage.
- Choose a stable tenant slug. Treat it as a durable operational identifier.
- Set the customer-facing tenant name and support contact.
- Add at least two administrators before inviting broader teams.
- Review the default authentication, session, and consent settings.
Definition of done:
- The tenant has a recognizable display name.
- At least two administrators can access the dashboard.
- The tenant slug, production domain, and owner team are recorded internally.
- Audit logging is enabled for administrator actions.
Add login to a web application¶
Use Authorization Code with PKCE for browser, mobile, and desktop applications. Do not use implicit flow.
Register a development application from a terminal or coding agent:
npm exec @sigid/init -- \
--issuer https://auth.example.com \
--tenant acme \
--registration-token "$SIGID_DCR_INITIAL_ACCESS_TOKEN"
The command uses Dynamic Client Registration, creates a public PKCE client by
default, and writes SIGID_ISSUER_URL, SIGID_CLIENT_ID, SIGID_REDIRECT_URI,
and SIGID_SCOPES to .env.local.
Manual setup follows the same model:
- Open the tenant dashboard.
- Create an application.
- Add development and production redirect URIs.
- Add allowed browser origins for frontend calls.
- Choose the scopes the application needs for its first release.
- Configure your frontend to redirect users to
/oauth/authorize. - Exchange the returned authorization code at
/oauth/token. - Validate access tokens in your backend before serving protected resources.
- Use the ID token or
/userinfoonly for claims the user consented to share.
Minimum authorization request:
GET /oauth/authorize
?response_type=code
&client_id=CLIENT_ID
&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback
&scope=openid%20email
&code_challenge=BASE64URL_SHA256_VERIFIER
&code_challenge_method=S256
&state=OPAQUE_CSRF_VALUE
Definition of done:
- A test user can sign in and return to the application.
- The backend rejects tokens with the wrong issuer, audience, signature, expiration, tenant, or scope.
- The application stores the tenant-local subject as its user key.
- Logout and session refresh behavior are documented for support.
Configure hosted login¶
Hosted login is the user-facing trust boundary. Make it recognizable and keep the security posture consistent with your product.
| Setting | Recommended practice |
|---|---|
| Application name | Match the product name users expect |
| Redirect URIs | Use exact HTTPS URLs in production |
| Allowed origins | Include only browser origins you control |
| Branding | Use tenant-approved names, colors, and support links |
| Scopes | Start narrow and add only when a workflow needs more access |
| Consent text | Explain what the application receives in user terms |
| Step-up rules | Require MFA for sensitive or administrative actions |
Definition of done:
- Login and consent screens are recognizable to real users.
- Development callback URLs are separated from production callback URLs.
- Sensitive actions require fresh authentication, consent, or MFA.
Invite users¶
Tenant users are membership records. They do not replace the person's global SigID account.
- Open the tenant user area.
- Invite users by email or pre-provision them before first sign-in.
- Assign the least-privileged role needed for their job.
- Place users in organizations when access is business-account scoped.
- Use suspension for temporary access removal.
- Use removal when the user should no longer belong to the tenant.
Definition of done:
- The invited user can accept the invitation and sign in.
- The user's role is visible in the tenant user list.
- Suspension blocks future access without deleting audit history.
Add an organization¶
Organizations model teams, companies, departments, or customer accounts within the tenant.
- Create the organization.
- Assign an owner or administrator.
- Invite members manually or connect enterprise SSO.
- Verify domains before enabling routing or auto-join.
- Map organization roles to application permissions.
- Review organization audit events after the first login.
Definition of done:
- The organization has at least one owner.
- Members can sign in and receive the expected organization context.
- Domain verification and SSO enforcement are tested with a non-admin user.
Register an AI agent¶
Agents are first-class principals. They can authenticate as themselves or act for users through delegated tokens.
- Create an agent record in the tenant dashboard.
- Attach an identity anchor such as ERC-8004,
did:web,did:key, or client credentials. - Complete challenge-response verification.
- Register signing keys or anchors needed for the agent's runtime.
- Grant only the scopes and delegations required by the agent.
- Use audit logs and webhooks to monitor agent activity.
Definition of done:
- The agent has a verified identity anchor.
- The agent can obtain a tenant-scoped token.
- Delegated user access is narrower than the user's own access.
- Sensitive tools require policy checks or human approval.
Register a webhook receiver¶
Use webhooks when your product needs asynchronous event updates.
- Create an HTTPS endpoint dedicated to SigID events.
- Register a webhook subscription in the tenant dashboard.
- Select the event types your application needs.
- Store the signing secret in your secret manager.
- Verify every delivery by recomputing the HMAC signature. See signature verification for the canonical string format and full verification steps.
- Deduplicate deliveries by
X-SigID-Delivery.
For the full list of delivery headers, see Webhooks And Events.
- Return a
2xxresponse only after the event is safely accepted.
Definition of done:
- Test delivery reaches your endpoint.
- Invalid signatures are rejected.
- Duplicate delivery IDs do not create duplicate side effects.
- Receiver failures are visible in your logs and alerting.
Go live¶
See the production checklist before exposing SigID login to production users.