gdbots/iam-bundle
Identity and access management bundle for Laravel/PHP apps, integrating the Gdbots IAM service for authentication, user accounts, roles, and permissions. Provides configurable guards, middleware, and service bindings to wire IAM into your application quickly.
Architecture fit. gdbots/iam-bundle is not a standalone auth solution — it is a Symfony glue layer over Gdbots' event-sourced identity stack, and, as the v5.1.0 release reveals, over auth0/auth0-php as well. The lock-in surface is therefore three-deep: Symfony Security → Gdbots (PBJ messages, Curator, message buses, identity store) → Auth0 SDK. The v5.1.0 release is the first concrete evidence that an Auth0/Auth0-php contract is part of this bundle's supported surface, which was not visible in the prior assessment. That materially changes the architecture-fit story: the product is no longer "Gdbots-shaped or nothing" — it is "Gdbots-shaped and an Auth0/OIDC tenant consumer, or nothing." If our platform already standardizes on Auth0 (or generic OIDC via the Auth0 SDK), fit improves; if it does not, adopting this bundle now entails accepting an external identity vendor we have not otherwise committed to. That is a platform decision, not a package decision.
Integration feasibility. Feasibility for an existing Symfony app is unchanged in shape but reduced in the specific: a UserProviderInterface bridge, an event-stream backfill, and a dual-read window still apply, but the bridge now additionally requires a configured Auth0 tenant (or an alternative OIDC issuer compatible with auth0-php), credentials handling, and a decision on where token validation lives (Symfony firewall vs. SDK). The v5.1.0 release note — "Requires hard coded reference to guzzle as auto discovery of psr-17 client is not working when auto discovery is disabled for security reasons" — is both a feasibility clue and a feasibility risk: it means the package supports a security-hardened (discovery-disabled) mode, but only by internally hard-coding Guzzle. Our Guzzle version constraint must be made compatible with theirs before we can even run the spike to completion. The 0-dependents / 0-stars profile remains the headline concern; v5.1.0 does not change that.
Technical risk.
auth0/auth0-php 9.x + Guzzle. Four moving parts with independent release cadences.__POSSIBLE BREAKING CHANGES__ header. A project that treats "possible breaking changes" as a minor bump forces consumers to pin exact versions and read changelogs, and raises the question of whether major bumps will be reserved for actual behavior changes or merely for dependency-major alignments. This is a process risk independent of the code.Key questions (revised).
gdbots/iam require, and are those already in our platform?auth0/auth0-php in this bundle? Is it required at runtime, is it Auth0-tenant-specific or usable against any OIDC issuer, and what configuration is required for the "auto-discovery disabled" hardened mode?auth0-php the only OAuth path?Stack fit (revised). Assume Symfony 6/7 on PHP 8.1+, the Gdbots PBJ/Curator/message-bus stack, auth0/auth0-php 9.x, Guzzle, and an event-sourced identity domain. The TPM framing must now be: this bundle is a package only if we are already (a) a Gdbots shop and (b) comfortable with an Auth0/OIDC dependency. If (b) is not true, the release note is the clearest possible signal that v5.1.0 is not our upgrade path.
Migration path. Four realistic paths, all narrower than before:
Compatibility (revised — this is the crux of v5.1.0).
gdbots/iam-bundle, gdbots/iam, auth0/auth0-php, and Guzzle to exact versions. The combination that is known-good upstream is a single tuple, and the changelog gives us no wider matrix.composer why guzzlehttp/guzzle across our existing services. If any service already depends on a Guzzle major that the bundle's hard-coded reference does not accept, that service is effectively excluded from adoption until the bundle ships a fix.Sequencing.
auth0/auth0-php 9.x can coexist with our other packages. Output: go/no-go on resolvability, before any code is written.The new step 1 is deliberate: v5.1.0 means dependency resolution can kill the project before the spike even starts. Find that out cheaply.
Maintenance (revised). The maintenance surface has widened. We now inherit: Symfony Security churn, Gdbots churn, auth0/auth0-php majors (7 → 8 → 9 observed), and a hard-coded Guzzle pin. Budget for:
Apache-2.0 makes forking legally clean but not free; a fork of auth code accrues CVE-response obligations we would otherwise outsource to a vendor.
Support. No community support channel of consequence; GitHub issues to a low-traffic repo. The "possible breaking changes in a minor release" signal suggests the maintainer's consumer base is small enough that semver discipline is not exercised. For a Tier-0 auth dependency, this means: assume we own first-line support, define an internal escalation owner before production cutover, and do not plan on the vendor or the community responding within an SLA. If we are on Auth0, we additionally have Auth0 support — but only for the Auth0 layers, not for this bundle's wiring.
Scaling. Unchanged in shape: authorization is a hot path hit on nearly every request; without caching, latency and Auth0 API call volume (if the SDK is invoked per-request rather than per-session) scale linearly with traffic. New requirements to add to the validation list:
auth0-php SDK is exercised per-request or per-session/token-introspection only; the cost profile is very different.Failure modes (revised).
^5.x will silently accept future breakage. Change policy to exact pins for this package.Ramp-up (revised). Steeper than before. Engineers must now be fluent in three idioms: Symfony Security (firewall/authenticator/voter), Gdbots event-sourcing/PBJ, and the Auth0 SDK / OIDC flow (including the security-hardened auto-discovery-disabled configuration). Plan for three-to-five weeks per engineer; do not staff with someone strong in only one or two of the three. The spike's most important deliverable is now internal documentation covering all three layers — that artifact is what makes the second and third engineer productive, especially given how little public documentation exists for the bundle itself.
TPM recommendation (revised). The v5.1.0 release is informative in exactly the way that should move the decision needle: it (a) confirms an auth0/auth0-php dependency that prior assessments did not have visibility into, (b) introduces a hard-coded Guzzle workaround that constrains downstream resolution, and (c) publishes "possible breaking changes" under a minor version number. None of these are disqualifying on their own, but together they refine the package's identity: it is a competent internal integration for an organization already committed to Gdbots and Auth0, maintained to that organization's timeline and semver conventions, not a general-purpose Symfony auth bundle. If we are both, keep it on the shortlist and run the dependency audit before the spike. If we are Gdbots-only and not Auth0 — or neither — treat v5.1.0 as further evidence to adopt the pattern (wire identity into Symfony via a provider and voter) rather than the package.
How can I help you explore Laravel packages today?