@cybercommand/identity (0.2.1)
Installation
@cybercommand:registry=npm install @cybercommand/identity@0.2.1"@cybercommand/identity": "0.2.1"About this package
@cybercommand/identity
De gedeelde identity- en autorisatielaag van het Cyberbrein-platform. Eén importpad voor forward-auth-parsing, de dev-identiteit, secret-verificatie met dual-accept-rotatie, scoped service-tokens en het canonieke rol/permission-model.
Normatieve basis: Identity and access standards (kernbeslissing CORE-29). Eigen header-parsing of secret-vergelijking in een service is een reviewblokker (IAM-2).
Modules
| Module | Inhoud |
|---|---|
headers |
Canonieke headerconstanten (x-authentik-*, x-internal-auth, x-management-key, …) + HeadersLike/HeaderGetter-adapters |
forward-auth |
forwardAuthIdentityFromHeaders(), parseForwardAuthGroups() (pipe + komma, IAM-3), case-insensitieve groepschecks, matchesAllowlist() (fail-closed) |
dev |
Gestandaardiseerde dev-identiteit (dev@cyberbrein.local) voor TRUST_FORWARD_AUTH=false |
secrets |
verifyRotatableSecret() — constant-time, dual-accept (plaintext of sha256:-hash), hashSecret() |
roles |
Canonieke rol-registry: platform-, workspace-, account- en productrollen + scope-keys en type-guards |
tokens |
Scoped v2-tokens plus release-bound targets voor Workspace Actions, Access Grants, accountcapabilities en Admin owner-proxycalls |
permissions |
Re-export van de rol→permission-matrix uit @cybercommand/product-sdk |
Gebruik
import {
forwardAuthIdentityFromHeaders,
matchesAllowlist,
devIdentity,
verifyRotatableSecret,
} from '@cybercommand/identity';
// Express
const identity = trustForwardAuth
? forwardAuthIdentityFromHeaders(req.headers)
: devIdentity(process.env);
// Next.js (headers() geeft een Headers-object)
const h = await headers();
const identity2 = forwardAuthIdentityFromHeaders((name) => h.get(name));
// Admin-gate (fail-closed: lege allowlist ⇒ geen toegang)
if (!identity || !matchesAllowlist(identity, { emails: adminEmails, groups: adminGroups })) {
// 401/403
}
// Management-key met rotatie (env + geroteerde sha256-hash uit de DB)
const ok = verifyRotatableSecret(providedKey, [process.env.MANAGEMENT_API_KEY, rotatedHash]);
Release
Identity heeft een eigen source-bound releasebaan, omdat shell- en ownerrepos deze grens nodig hebben
zonder te wachten op een gezamenlijke release van alle Platformpackages. Een releasecommit bevat geen
open Identity-changesets en wordt exact als identity-v<versie> getagd. De workflow
.forgejo/workflows/identity-package.yml bouwt de dependencyclosure, draait de packagetests,
installeert de tarball in een lege externe consumer en publiceert uitsluitend
@cybercommand/identity.
Voor 0.2.1:
pnpm identity:release:check -- --tag identity-v0.2.1
Pas nadat de Registry 0.2.1 retourneert, mogen consumer-lockfiles die ^0.2.0 vragen worden
ververst. Een lokale workspace-link of een handmatig aangepaste lock geldt niet als releasebewijs.
Dependencies
Dependencies
| ID | Version |
|---|---|
| @cybercommand/product-sdk | ^2.0.1 |
| @cybercommand/service-runtime | ^0.1.1 |
| jose | ^6.2.3 |
Development dependencies
| ID | Version |
|---|---|
| @types/node | ^26.1.1 |
| tsx | ^4.23.0 |
| typescript | ^6.0.3 |