@cybercommand/identity (0.2.1)

Published 2026-08-31 01:53:07 +00:00 by cyberbrein

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
Details
npm
2026-08-31 01:53:07 +00:00
1
latest
21 KiB
Assets (1)
Versions (1) View all
0.2.1 2026-08-31