prayno/casauth-bundle
CASAuth Bundle adds Central Authentication Service (CAS) single sign-on to PHP applications, with CAS login and logout, user authentication, and session handling for institutions that rely on CAS servers. It simplifies connecting apps to existing CAS identity providers.
Framing correction (material): this is a Symfony bundle, not a Laravel package. It ships a Symfony Bundle subclass, a DI extension, and a security-firewall factory that wires a CasListener into Symfony's security.firewalls config. It cannot be composer require'd into a Laravel application and used as-is. Any "leverage" from a Laravel-centric shop is limited to reference implementation value — the phpCAS integration logic, listener flow, and config shape — not direct dependency reuse. This single fact should drive the build-vs-adopt decision.
Architecture fit
apereo/phpcas (historically jasig/phpcas), exposing CAS ticket validation as a Symfony security authenticator. Expect ~a few hundred LOC; the hard work lives in phpCAS, not in this bundle.Integration feasibility (Laravel)
apereo/phpcas directly, implement a CasGuard + CasUserProvider + login/logout controllers, and use this bundle only as a checklist for edge cases. Effort is a few days, not a few weeks, for a PHP dev who knows Laravel auth.Technical risk
Key questions
apereo/phpcas, or a Laravel-native CAS provider — versus owning a fork?Stack fit
Apereo\phpCAS client → custom Guard/RequestGuard → Authenticatable resolution from CAS attributes → middleware group for protected routes.Migration path
apereo/phpcas in a scratch app against the real IdP; validate ticket flow, attribute payload, and logout behavior end-to-end. This de-risks 80% of the unknowns regardless of package choice.Compatibility
composer.json constraints from 2019.Sequencing Cheapest-first: validate IdP interop → confirm protocol/attribute requirements → choose implementation → build guard → wire SLO → roll out. The package itself is a day-3 decision at most, never day 1.
Maintenance
Support
Scaling
Failure modes
service parameter — validate the return URL against an allowlist.Ramp-up
How can I help you explore Laravel packages today?