cboxdk / laravel-id
cboxdk/laravel-id: a Laravel-native auth and identity framework. AuthN, SSO/SAML, SCIM, OAuth/OIDC provider, RBAC, billing-fed entitlements, tamper-evident audit.
Requires
- php: ^8.4
- ext-openssl: *
- ext-sodium: *
- cboxdk/laravel-audit-chain: ^0.1
- cboxdk/laravel-siem: ^0.1 || ^0.2
- cboxdk/laravel-ssrf: ^1.1.1
- cboxdk/siem: ^0.1
- firebase/php-jwt: ^7.0
- illuminate/auth: ^12.0 || ^13.0
- illuminate/contracts: ^12.0 || ^13.0
- illuminate/database: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
- onelogin/php-saml: ^4.0
- robrichards/xmlseclibs: ^3.1.5 || ^4.0.0
- spomky-labs/cbor-php: ^3.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.18
- orchestra/testbench: ^10.0 || ^11.0
- pestphp/pest: ^3.5 || ^4.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v2.6.0
- v2.5.0
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.0
- v1.28.0
- v1.27.3
- v1.27.2
- v1.27.1
- v1.27.0
- v1.26.6
- v1.26.5
- v1.26.4
- v1.26.3
- v1.26.2
- v1.26.1
- v1.26.0
- v1.25.0
- v1.24.0
- v1.23.1
- v1.23.0
- v1.22.0
- v1.21.0
- v1.20.0
- v1.19.3
- v1.19.2
- v1.19.1
- v1.19.0
- v1.18.1
- v1.18.0
- v1.17.0
- v1.16.0
- v1.15.0
- v1.14.0
- v1.13.0
- v1.12.0
- v1.11.0
- v1.10.0
- v1.9.0
- v1.8.0
- v1.7.0
- v1.6.0
- v1.5.0
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.0
- v0.96.0
- v0.95.0
- v0.94.0
- v0.93.0
- v0.92.0
- v0.91.1
- v0.91.0
- v0.90.0
- v0.89.1
- v0.89.0
- v0.88.0
- v0.87.3
- v0.87.2
- v0.87.1
- v0.87.0
- v0.86.0
- v0.85.0
- v0.84.0
- v0.83.1
- v0.83.0
- v0.82.1
- v0.82.0
- v0.81.0
- v0.80.0
- v0.79.0
- v0.78.0
- v0.77.1
- v0.77.0
- v0.76.0
- v0.75.0
- v0.74.0
- v0.73.0
- v0.72.0
- v0.71.0
- v0.70.0
- v0.69.0
- v0.68.0
- v0.67.0
- v0.66.0
- v0.65.0
- v0.64.0
- v0.63.0
- v0.62.0
- v0.61.0
- v0.60.0
- v0.59.1
- v0.59.0
- v0.58.0
- v0.57.0
- v0.56.0
- v0.55.1
- v0.55.0
- v0.54.0
- v0.53.0
- v0.52.0
- v0.51.0
- v0.50.0
- v0.49.0
- v0.48.0
- v0.47.0
- v0.46.0
- v0.45.0
- v0.44.0
- v0.43.0
- v0.42.0
- v0.41.0
- v0.40.0
- v0.39.1
- v0.39.0
- v0.38.1
- v0.38.0
- v0.37.1
- v0.37.0
- v0.36.1
- v0.36.0
- v0.35.0
- v0.34.0
- v0.33.0
- v0.32.0
- v0.31.0
- v0.30.1
- v0.30.0
- v0.29.3
- v0.29.2
- v0.29.1
- v0.29.0
- v0.28.5
- v0.28.4
- v0.28.3
- v0.28.2
- v0.28.1
- v0.28.0
- v0.27.2
- v0.27.1
- v0.27.0
- v0.26.0
- v0.25.0
- v0.24.0
- v0.23.0
- v0.22.0
- v0.21.0
- v0.20.0
- v0.19.0
- v0.18.0
- v0.17.1
- v0.17.0
- v0.16.0
- v0.15.0
- v0.14.0
- v0.13.0
- v0.12.1
- v0.12.0
- v0.11.0
- v0.10.0
- v0.9.0
- v0.8.0
- v0.7.0
- v0.6.0
- v0.5.0
- v0.4.0
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.0
- v0.1.2
- v0.1.1
- v0.1.0
- dev-release/2.7.0
- dev-perf/hot-paths-2
- dev-feat/id-token-identity-claims
- dev-id-v3/secret-prefixes
- dev-feat/app-catalog-token-ttl
- dev-sd/agentic-ciba
- dev-sd/totp-authenticator-devices
- dev-sd/signals-auth-assessment
- dev-fix/cimd-fetch-guzzle-8
- dev-feat/link-sign-in-accounts
- dev-feat/env-sign-in-methods
- dev-release/1.24.0
- dev-fix/auth0-doc-link
- dev-feat/pipes
- dev-feat/sms-mfa
- dev-feat/fga-api
- dev-feat/hris
- dev-feat/feature-flags
- dev-feat/1.22-security-hardening
- dev-feat/1.22-mcp-authorization
- dev-feat/1.21-agent-foundation
- dev-feat/extract-audit-chain
- dev-fix/support-session-scopes-audience
- dev-fix/deterministic-rbac-claims
- dev-fix/api-key-scope-labels
- dev-release/v1.19.0
- dev-docs/honest-engine-support
- dev-feat/unified-account-identity-cutover
- dev-review/2026-07-24-remediation
- dev-feat/environments
This package is auto-updated.
Last update: 2026-11-12 15:20:45 UTC
README
cboxdk/laravel-id is a Laravel-native auth and identity framework. Central login,
enterprise SSO, directory sync, RBAC, billing-driven entitlements and a tamper-evident audit
trail: all interface-driven, deny-by-default, and verified (tests + PHPStan level max +
composer audit) before it ships.
UI-free and domain-free: every capability sits behind a contract you bind, mock, extend or replace.
Install
composer require cboxdk/laravel-id php -r "echo base64_encode(random_bytes(32)).PHP_EOL;" # set as CBOX_ID_CRYPTO_KEY php artisan migrate
A taste
use Cbox\Id\Organization\Contracts\Organizations; use Cbox\Id\Organization\ValueObjects\NewOrganization; use Cbox\Id\Identity\Contracts\Subjects; $org = app(Organizations::class)->create(new NewOrganization('Northwind', 'northwind')); $user = app(Subjects::class)->create('ida@northwind.test', 'Ida', password: 's3cret');
Environments first.
Organization,Userand the other domain models are environment-owned and deny-by-default — the calls above need an environment in context (a request resolves one from its host, or setcbox-id.environments.default; the deployable app creates the first one from its installer, and the rest from its platform console). See Environments & the isolation model.
What's supported
Grades are against this package's own src/ — never the deployable app or an add-on.
Full = ships and is tested · Partial = works, with the named limit · Contract
only = you bind the implementation · Host = your app writes the interactive half ·
No = not implemented. Every row is expanded, with its caveats, in
Standards & conformance and
Feature support.
| Area | Support |
|---|---|
| OAuth 2.0 | Full authorization-code + PKCE S256 (RFC 7636), client-credentials, refresh with rotation + reuse detection, RFC 8414 / 9728 metadata · Partial introspection (RFC 7662), revocation (RFC 7009), device grant (RFC 8628), PAR (RFC 9126), DPoP (RFC 9449), token exchange (RFC 8693), resource indicators (RFC 8707), DCR (RFC 7591/7592), step-up challenge (RFC 9470: acr/auth_time on access tokens and introspection, insufficient_user_authentication builder) · No ROPC, implicit, mTLS (RFC 8705), JAR (RFC 9101), JARM |
| OpenID Connect | Full discovery, JWKS, UserInfo, RP-Initiated Logout, Back-Channel Logout · Partial id_token (code flow + query mode only), CIBA (poll only) · Host /authorize, consent, prompt/max_age/acr_values gating (the package ships the AuthenticationRequirement check your /authorize calls), RFC 9207 iss · No front-channel logout, pairwise sub |
| SAML 2.0 (IdP role) | Full signed assertions and responses, RSA-SHA256, HTTP-Redirect + HTTP-POST, signed-AuthnRequest verification, XSW-hardened, SP-initiated SLO · No HTTP-Artifact, outbound assertion encryption, unsolicited SSO, global logout fan-out |
| SAML 2.0 / OIDC (relying party) | Full ACS with replay protection, JIT provisioning, JWKS rotation, state/nonce, a catalogue of 15 sign-in providers (incl. LinkedIn, Bitbucket, Xero, Intuit), setup guides for 20 enterprise IdPs · Partial SLO (receive-only), inbound assertion decryption · No signed outbound AuthnRequest, PKCE on the outbound OIDC leg |
| SCIM 2.0 | Full Users + Groups CRUD, Enterprise User extension (RFC 7643), the full RFC 7644 filter grammar, sorting, ETags (If-Match / If-None-Match), /Bulk with bulkId references, errors and discovery; held to Microsoft Entra ID's and Okta's published test cases · Partial PATCH (value-path filters; one stored email), attribute selection · No /.search, /Me |
| Provisioning out | Partial generic SCIM 2.0 client with outbox, retries, circuit breaker, SSRF guard — users only, no group push, no vendor connectors |
| Directory in | Full SCIM push, Google Workspace and Microsoft Entra pull; deprovision revokes sessions immediately |
| MFA & credentials | Full recovery codes, magic links, password reset, password policy (length/reuse/expiry/lockout) · Partial TOTP (RFC 6238, SHA-1/6/30 fixed), WebAuthn/passkeys (ES256+RS256, none + self-attested packed), email OTP, SMS OTP (Twilio, MessageBird, Bird, 46elks over HTTP; toll-fraud guard) and an SMS second factor (off by default per environment) · Contract only breach screening · No HOTP (RFC 4226), complexity classes |
| Authorization | Full org-scoped RBAC with hierarchy roll-down, entitlements, POST /oauth/decisions · Partial ReBAC engine (uncached), the PDP (ReBAC-only) · No wildcard permissions, role-inherits-role, XACML |
| Audit | Full SHA-256 hash chain, query + pull stream, retention · Partial signed checkpoints (nothing schedules them), SIEM streaming (HTTP transport only: Splunk HEC / ECS / GELF / CEF / JSON) · No tamper-proof storage, OCSF |
| Governance | Full access-certification campaigns · Partial Segregation of Duties — both cover roles and memberships only |
| Crypto | Full XChaCha20-Poly1305 AEAD at rest, signing-key rotation with overlap, closed RS256/ES256/EdDSA allow-list (RFC 8725, RFC 8037), JWKS (RFC 7517), at+jwt (RFC 9068) · Contract only HSM/KMS · No JWE (RFC 7516), master-key rotation |
| Delivery | Full transactional outbox, webhooks (HMAC-SHA256, retries, circuit breaker; per endpoint either the Cbox signature or Standard Webhooks, with receiver-side verifiers for both), six inline hook points · Partial at-least-once only; no secret-rotation overlap window |
This package does not serve
/authorize. It ships the back-channel — token, introspection, revocation, registration, PAR, device, CIBA, discovery, JWKS — and the crypto and validation behind them. Login, consent, and everything decided at the authorization request are your app's, and are marked Host above. The deployable cbox-id app implements that half if you would rather not.
Modules
| Layer | Modules |
|---|---|
| Kernels | Tenancy · Crypto · Audit · Events · Authorization · Usage |
| Domain | Organization · Identity · Otp · AccessControl · Directory (inbound SCIM + pull connectors) · Provisioning (outbound SCIM) · Federation (SSO relying party) · SamlIdp (SAML 2.0 IdP) · OAuthServer (OAuth 2.0 / OIDC) · Governance (access reviews, SoD) · TokenVault · FeatureFlags · Pipes (connected third-party accounts) · ExternalActions (inline hooks) · Webhooks · AuditQuery · AuditStreaming |
| HTTP & ops | Api (OAuth/OIDC/SCIM/SAML endpoints) · Platform (operators + the self-serve account/project plane) · Maintenance (retention) · Console (17 cbox-id:* commands) |
Documentation
Full docs live in docs/:
- Capabilities — the full support matrices and what each grade means
- Requirements · Installation · Quickstart
- Upgrading — breaking changes and what to do about them, read this before crossing a version
- Operations — the queue worker and scheduler the platform needs, and retention
- Architecture & patterns
- Cookbook
- Extending & customizing
- Testing
- Security ·
SECURITY.md - Standards & conformance — the RFC-by-RFC matrix (OAuth/OIDC/SCIM/SAML/WebAuthn/MCP) · Feature support
- Compliance mapping — SOC 2 / ISO 27001 / NIS2 / GDPR / HIPAA / PCI-DSS · Threat model
License
MIT. Published on Packagist as a 1.x release under semantic versioning — installable via
composer require cboxdk/laravel-id. Breaking changes wait for a major; every one that
has happened is written up in UPGRADING.md.
Membership creation, role change, removal and invitation acceptance publish a positive directory_revision and the affected membership_id in the domain event. The revision advances in the same database transaction as the mutation and is local to the organization. Relays can deliver those mutations out of order. Consumers can compare their revisions with the revision of a complete organization roster to prevent an older grant from restoring access.