javer/sp-bundle
javer/sp-bundle is a PHP package that organizes reusable service-provider logic into a compact bundle, helping developers register and configure shared services with less boilerplate. It offers a simple integration point for projects that need lightweight, maintainable service setup.
Architecture fit — unchanged, still poor on the stated premise. javer/SpBundle remains a Symfony bundle, not a Laravel package. Release 2.1.0 adds Symfony 7 support; it does not add a Laravel service provider, auto-discovery, facade, config publishing, or any HTTP-kernel integration. There is still no composer.json auto-discovery path Laravel will honor, and Symfony's DependencyInjection/Configuration tree has no meaning in Laravel's container. Treating this as a "Laravel/PHP package" remains a category error that must be corrected before any commitment. The reusable asset is the underlying SAML2 SP logic (almost certainly the LightSAML library family given the package name — verify which version and whether it wraps lightsaml/lightsaml-core or reimplements protocol handling), not the bundle glue. Nothing in 2.1.0 changes that calculus.
Integration feasibility — feasible only as a port, not an install; no change. The 2.1.0 release does not narrow the porting surface. A TPM should still frame this as a small internal fork:
App\Models\User mapping.config/saml.php plus validation at boot.Still realistically 2–4 engineer-weeks including security review, and it still lands you as sole maintainer of a security-critical codepath.
Technical risk — high, marginally reduced on one axis only.
robrichards/xmlseclibs or equivalent) carries its own CVE history — a full transitive composer audit and SCA scan remains a hard kill-gate. Note that "Update GitHub Actions" is CI plumbing, frequently dependency-bot driven, and is not evidence of security triage or CVE response.composer.json, not the release note; (b) a Symfony 7 migration commonly drops deprecated config-tree keys and service aliases — verify whether 2.1.0 is a config-breaking change for anyone running the bundle in a Symfony harness.2.x → 2.1.0) yet raises the minimum PHP to 8.1 and changes framework support. If SemVer hygiene is loose here — which a 1-star repo with no changelog discipline tends to be — assume any future pin can move under you. Treat the constraint in composer.json as authoritative and pin exactly.Key questions — updated status:
composer.json (Symfony 7 implies PHP 8.2+).Stack fit — unchanged, misaligned. Laravel-only estate: no direct fit. The one viable scenario remains a mixed PHP estate where a Symfony application already hosts the SP as a sidecar, brokering identity to Laravel via short-lived signed JWT or OIDC. 2.1.0 marginally improves that scenario — a Symfony 7 sidecar is a supportable target rather than an EOL one — but it raises the sidecar's runtime floor to PHP 8.2 and adds a framework-major upgrade to your sidecar's own maintenance backlog. It remains an extra deployable, an extra failure domain, an extra cert to rotate.
Recommended path — unchanged, evaluate alternatives first, in this order:
onelogin/php-saml behind a thin provider. Validate current stewardship — the OneLogin toolkit has had its own stewardship changes; apply the same audit rigor as here.Compatibility checklist for the spike (amended): exact PHP/Symfony matrix from composer.json; transitive dependency audit; Symfony 7 deprecation scan if a sidecar harness is used; config-tree diff 2.0.x → 2.1.0; IdP metadata parsing against your actual IdP's XML; signature algorithm (SHA-1 rejection is common); NameID format expectations; spec-valid EntityDescriptor from the metadata endpoint.
Sequencing (if pursuing option 3):
composer.json constraint read for the 2.1.0 constraint bump. Kill-gate: any unpatched critical CVE in the DSig chain ends the evaluation.Maintenance. Still assume you own it, but the signal is slightly better than at initial assessment: 2.1.0 demonstrates the single maintainer tracks ecosystem change (Symfony 7, PHP floor) rather than having abandoned the repo. That is a maintenance signal, not a maintenance commitment — two releases with zero dependents is not a community. Budget a standing ~10–15% of one engineer's capacity for dependency bumps and cert-rotation hygiene, plus an annual security review. This remains a permanent tax.
Support. Unchanged: no documentation beyond the repo, no issue-tracker corpus, no vendor. SAML failures are bidirectional — a generic 400/403 at the ACS while the true cause (audience mismatch, InResponseTo mismatch, skew) sits in IdP-side logs. A TPM must secure an escalation channel with the IdP owner before go-live. Note that upstream's own release note is a bullet list with no upgrade guidance; do not expect upstream to help diagnose your incident.
Scaling. Unchanged: the SP role scales horizontally if AuthnRequest IDs and RelayState live in a shared store (Redis) rather than PHP sessions or local files. The Symfony bundle's session assumptions will not survive a naive port to a multi-pod Laravel deployment behind a load balancer without sticky sessions. Metadata caching should be TTL'd and warmed.
Failure modes to design against explicitly:
Ramp-up. Unchanged and meaningful: SAML2 bindings (HTTP-Redirect vs. HTTP-POST), Web Browser SSO profile, XML DSig semantics, plus Symfony bundle conventions you will discard if porting. 1–2 weeks to productivity for a senior PHP engineer, who should not be the only one who understands it.
Verdict. Still not recommended as a direct adoption. Release 2.1.0 is a genuine positive on framework currency — Symfony 7 support and a defined PHP floor remove the "unverified compatibility" objection and slightly improve the viability of the Symfony-sidecar variant. It does nothing for the two objections that actually drove the recommendation: near-zero adoption (1 star, 0 dependents) and an unquantified, single-maintainer security surface in a security-critical codepath, where the note's "Update GitHub Actions" is CI hygiene rather than evidence of CVE response. Hold the two-day feasibility spike capped by the dependency-audit kill-gate, with managed-IdP-broker integration as the default recommendation absent a compelling constraint otherwise. If the spike proceeds, read composer.json and any CHANGELOG before assuming 2.1.0 is a drop-in.
How can I help you explore Laravel packages today?