Identity
Identity provides OpenIddict OIDC, hosted login/register/password pages, platform user profiles, and per-project environment users/roles/permissions.
{pe} = /projects/{projectId}/environments/{environmentId}.
| Method | Path | Notes |
|---|
| GET | /auth/health | Anonymous |
| GET/POST | /auth/login | Hosted page; POST rate-limited |
| GET/POST | /auth/register | Hosted page; POST rate-limited |
| GET | /auth/confirm-email | Rate-limited |
| GET | /auth/confirm-email-change | Rate-limited |
| GET/POST | /auth/forgot-password | Hosted page; POST rate-limited |
| GET/POST | /auth/reset-password | Hosted page; POST rate-limited |
| GET/POST | /auth/logout | Anonymous |
| GET | /auth/external/{provider} | OAuth challenge |
| GET | /auth/external/callback | OAuth callback |
| Method | Path | Notes |
|---|
| GET/POST | /connect/authorize | OpenIddict |
| — | /connect/token | Token endpoint (middleware) |
| GET | /connect/userinfo | OpenIddict |
| GET/POST | /connect/logout | OpenIddict |
| GET | /.well-known/openid-configuration | Discovery |
| Method | Path | Notes |
|---|
| GET/PATCH | /identity/me | Bearer required |
| POST | /identity/me/password | Bearer |
| POST | /identity/me/email | Bearer |
| POST/DELETE | /identity/me/avatar | Bearer |
| GET | /identity/avatars/{userId} | Anonymous |
| GET | /identity/permissions | Bearer |
| Method | Path | Notes |
|---|
| GET/POST | /identity{pe}/users | Bearer |
| GET/PATCH/DELETE | /identity{pe}/users/{userId} | Bearer |
| POST | /identity{pe}/users/{userId}/password | Bearer |
| PUT | /identity{pe}/users/{userId}/roles | Bearer |
| GET/POST | /identity{pe}/roles | Bearer |
| PATCH/DELETE | /identity{pe}/roles/{roleId} | Bearer |
| PUT | /identity{pe}/roles/{roleId}/permissions | Bearer |
| Package | Runtime |
|---|
@vijihub/auth | browser |
VijiHub.Auth | server (.NET JWT helpers) |
import { createAuthClient } from '@vijihub/auth'
const auth = createAuthClient({
authority: 'http://localhost:5600',
clientId: 'vijihub-console',
redirectUri: 'http://localhost:5500/auth/callback',
})
await auth.login()
// on callback:
await auth.handleRedirectCallback()
const token = await auth.ensureAccessToken()
- Register an OIDC client (or use seeded
vijihub-console in Development). - Implement Authorization Code + PKCE with
@vijihub/auth or a standards-compliant library. - For project RBAC, call
/identity{pe}/… with the owner/admin JWT from the Console session or your trusted backend. - Hosted auth pages live on the Gateway — do not reimplement login HTML in the Console.
- No resource-owner password grant.
- Auth POSTs are rate-limited by IP.
- Project user/role APIs require authorization; they are not public API-key admin surfaces for end-user apps unless you deliberately proxy them.
- See Authentication and Constraints.