korotovsky/sso-sp-bundle
Symfony bundle that adds SAML 2.0 Service Provider support, letting your application authenticate users through an external identity provider. Configure metadata, routes, and user mapping to integrate corporate or cloud IdPs with minimal setup.
A TPM should treat this package as a requirements document, not a dependency. The description positions it as a Laravel SSO Service Provider with drop-in login/callback/logout routes, guard integration, .env-driven IdP config, and automatic user provisioning. That is exactly the capability shape an enterprise-readiness epic needs. But the underlying repository is a Symfony 2 bundle (SingleSignOnServiceProviderBundle), not a Laravel package: it registers via a Symfony kernel/DI extension and hooks the security firewall through event listeners. The gap between the marketing description and the artifact is the single most important finding for a TPM, because it means any roadmap item built on "we can just install this" is built on an unverified claim.
Architecture fit is poor as a dependency and good as a spec. As a dependency, fit fails three ways: lifecycle (Symfony 2 is EOL since 2018; Composer constraints will collide with a modern PHP 8 / Symfony 6–7 Laravel runtime), paradigm (Symfony firewall/listener vs. Laravel guard/middleware — auth state, session binding, and provisioning all need rewriting), and ownership (zero stars, zero dependents, no release cadence means no upstream to absorb fixes). As a spec, fit is strong: the listed surfaces — configurable routes and middleware, .env credentials, mapped profile fields, native guard/session integration — are a credible acceptance-criteria checklist for our own SP work.
Integration feasibility is low, and the decision is cheap to make. There is no realistic "composer require and configure" path on Laravel. The viable options are (a) read it as a reference for SP flow mechanics and build framework-native, or (b) lift its protocol layer — but only if whatever SAML toolkit it wraps is itself healthy. That second condition is the real question, because the bundle is a thin orchestration shell; the security-critical parsing lives below it.
Technical risk is elevated and concentrated in the auth path. XML signature validation, assertion replay protection, and certificate handling are where SAML implementations fail catastrophically (signature wrapping, XXE, unsigned-assertion acceptance). A single-maintainer, decade-stale bundle with no dependents has no CVE response path and no community scrutiny of its validation logic. The scoring signals are also contradictory — zero stars and zero dependents against a 17.34 opportunity sub-score — which a TPM should read as "no evidence," not "hidden value."
Key questions a TPM must get answered before funding engineering:
php-saml, LightSAML, xmlseclibs), and what is that library's health? That determines whether any protocol layer is salvageable.Audience/Recipient/InResponseTo?Frame the decision as three delivery models, not one integration. A TPM's leverage here is sequencing the cheapest viable option first and using this package as the reference only if the first two are ruled out.
Stack fit should be the gating criterion in the decision memo. On Laravel, option 3 is the only path that touches this package, and it converts the package from "dependency" into "reading material plus internal IP." That reframing is what keeps the roadmap honest: we are not adopting a community bundle, we are funding a small, owned integration.
Migration path, if option 3 is chosen, is fork-and-own rather than upgrade. There is no release cadence to track, so vendor and pin any extracted code as internal IP with an assigned owner. Expect PSR-0→PSR-4 namespace modernization, replacement of Symfony 2 DI config with Laravel container bindings, and rewriting the firewall listener as middleware plus a custom guard. Do not plan on upstream fixes.
Compatibility work is front-loaded and must be validated against a live IdP. Metadata parsing, certificate rotation, attribute mapping, and session binding all need re-verification — the bundle's assumptions were formed against IdP software from roughly 2014 and may not hold. The description's claimed features (auto user lookup/creation, configurable redirects, middleware) are the acceptance checklist for that spike.
Recommended sequencing:
Maintenance is the dominant cost and it is permanent. An unmaintained bundle with zero dependents has essentially no bus factor: no upstream to patch a broken signature check, no release to absorb a PHP minor-version regression, no triaged issue tracker. Every PHP upgrade, IdP metadata change, and certificate rotation becomes our incident. A TPM should price this standing tax explicitly in the business case rather than let the inheriting team absorb it silently — that line item is what makes the gateway option look cheap.
Support posture is self-support. No vendor, no SLA, no CVE feed. For an authentication component, that mandates our own security review at adoption and a re-review cadence (at minimum annually and on any IdP-side change). This is the strongest argument for option 2: it converts an unbounded internal support obligation into a product with a maintainer and a disclosure process.
Scaling is modest in throughput but broad in configuration surface. SP validation is session-bound and per-request: signature verification is CPU-costly but low-volume relative to normal traffic, so horizontal scaling is fine provided session state lives in a shared backend (Redis) and validation results are never cached incorrectly. The real scaling risk is breadth — each added IdP or SP multiplies metadata, certificate, and attribute-mapping config that someone must own. Budget ownership headcount, not QPS.
Failure modes to design for, in rough likelihood order:
NotBefore/NotOnOrAfter validation and yields intermittent, opaque login failures. Needs NTP discipline and a specific, logged error surface.Ramp-up requires a specialist and should be planned as such. SAML debugging is a genuine skill; engineers unfamiliar with it lose days to opaque signature and base64/XML encoding errors. Staff the spike with someone who has shipped SAML before, and capture the debugging runbook as a deliverable — it is the artifact that makes the integration supportable after the spike team moves on.
How can I help you explore Laravel packages today?