Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Cas Bundle Laravel Package

l3/cas-bundle

l3/cas-bundle integrates CAS (Central Authentication Service) single sign-on into Symfony applications. It lets users authenticate against an existing CAS server, handles the CAS login and logout flow, and configures easily so centralized credentials can secure your Symfony app with minimal setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — the framing is wrong. l3/cas-bundle is a Symfony bundle, not a Laravel package. It ships a Symfony DI extension, a bundle class, and configuration under the l3_cas / cas namespace. There is no Laravel service provider, no facade, no publishable config, no config/cas.php. Dropping it into a Laravel application gets you an unused bundle and a hard dependency on symfony/http-kernel, symfony/dependency-injection, and symfony/config for zero runtime benefit. This is the single most important finding: for a Laravel target, treat this as a reference implementation of phpCAS wiring, not as an installable dependency.

What it actually is. A thin configuration/adapter layer over apereo/phpcas. The substantive protocol work (ticket validation, service URL construction, proxy tickets, SAML assertions) lives in phpCAS; the bundle's contribution is DI wiring plus config surface. That means the replacement cost is low — a competent Laravel engineer can replicate the useful 20% (client bootstrap, service base URL, redirect/validate flow) in a service provider over a few days.

Integration feasibility. Conditional. In a Symfony 4/5 estate it is a plausible drop-in. In Laravel, feasibility collapses to "port the pattern, don't install the package." Three concrete blockers:

Blocker Detail
Framework mismatch Symfony-only bundle API; no Laravel container bindings
Version ceiling Symfony 2–5 only; no Symfony 6/7 support, which also constrains admissible PHP versions and therefore Laravel 10/11
License NOASSERTION — GitHub could not identify a license. Legal clearance is a blocking gate, not a checkbox

Technical risk.

  • License ambiguity (high). NOASSERTION means no verifiable OSI license text. In any organization with a dependency-review or SBOM policy, this fails procurement by default. Resolve before any code is written.
  • Abandonment risk (high). 32 stars, 0 dependents, last release Aug 2023 (pre-dating Symfony 6's maturity). Effectively a single-maintainer wrapper. You will own it.
  • Thin-wrapper fragility (medium). phpCAS uses static global state (phpCAS::client()), assumes session_start(), and mutates redirect flow. This fights stateless/token-based API auth (Sanctum, Passport) and queue/CLI contexts. Any Laravel port must confine phpCAS to the web guard.
  • Protocol trajectory (medium). CAS is a shrinking IdP surface; most institutions are steering to SAML or OIDC. Building on CAS couples you to the older path.

Key questions.

  1. Is the target application Laravel or Symfony? If Laravel — why is a Symfony bundle under consideration at all?
  2. Which CAS protocol level does the IdP expose (CAS 2.0/3.0, SAML 1.1, proxy granting tickets)? Does the bundle's config surface cover it, or does it need phpCAS directly?
  3. Does the IdP have a SAML/OIDC roadmap with dates? If yes within 18 months, don't invest in CAS glue.
  4. Can legal clear NOASSERTION, or must we vendor/fork under a known license?
  5. Who is the named internal owner for the wrapper across the next two Symfony/PHP upgrade cycles?

Integration Approach

Stack fit. Recommend not installing this package into a Laravel codebase. Two viable paths:

  • Path A — Symfony estate: adopt as-is, pin to the release that matches your Symfony minor, wrap in a small internal adapter so the bundle's config surface is the only coupled point.
  • Path B — Laravel estate (likely): implement CAS as a custom auth guard backed by phpCAS directly. Reuse this bundle's configuration schema as a design reference (service base URL, server host/port/context, certificate validation toggle, logout behavior), then discard the Symfony layer. Evaluate maintained Laravel-native alternatives before writing code — several phpCAS/SAML wrappers exist for Laravel — and score them on maintenance recency and license before defaulting to in-house.

Migration path. Because there is no existing Laravel footprint, "migration" is really a greenfield auth integration with a CAS constraint. Sequence:

  1. Confirm IdP protocol and get test-tenant credentials.
  2. Spike: phpCAS against the test IdP, one Laravel route + one guard, certificate validation on, 2–3 days.
  3. Decision gate on the spike result and on license clearance.
  4. If proceed: guard + middleware + user provisioning (JIT mapping of CAS attributes to users), plus logout.
  5. Only then touch production.

Compatibility. Verify PHP constraint against your Laravel baseline (Laravel 10/11 need PHP 8.1+; the Symfony-5-era dependency set may resolve to older PHP). Check apereo/phpcas transitive constraint — it moves independently of this bundle and is the real compatibility risk. Composer resolution in a Laravel app with Symfony components present should be tested in a throwaway branch, not main.

Sequencing / effort. Spike 2–3 days; in-house guard + provisioning + logout 1–2 weeks including tests; add 3–5 days for certificate/attribute edge cases. Budget ~2–3 weeks of one backend engineer plus a legal review cycle. Total cost is low enough that the decision is about ownership and protocol direction, not engineering capacity.

Operational Impact

Maintenance. Assume you own the wrapper. Symfony/PHP major upgrades will require patching or forking — there is no evidence of a maintainer roadmap past Symfony 5. Fork-and-own is the honest posture; document it in your dependency register as an internal fork from day one.

Support. Upstream support is best-effort from a low-visibility maintainer with no dependents to pressure-test changes. Escalation path for auth outages is your own on-call. Ensure the integration is documented well enough that a second engineer can debug it without reading phpCAS internals.

Scaling. CAS ticket validation is a login-time round trip, so it does not scale with request volume — the session carries auth afterward. That is favorable. The scaling hazards are elsewhere: phpCAS session/global state will not behave under parallel or stateless workers; and if you ever enable per-request validation, you introduce a hard dependency on the IdP for every request. Keep phpCAS out of the hot path.

Failure modes to instrument explicitly:

  • IdP unreachable → total login outage for the app. Cache-validated sessions survive; new logins do not. Requires a status page entry and ideally a documented break-glass local-admin path.
  • Certificate expiry / rotation on the CAS server → silent validation failures. Monitor cert expiry externally; alert 30 days out.
  • Service URL mismatch (proxy, load balancer, APP_URL, trailing slash) → ticket validation rejects with opaque errors. Pin and test the service URL per environment; this is the classic CAS integration failure.
  • Clock skew → ticket expiry rejections. Enforce NTP on app hosts.
  • Logout propagation — CAS single logout is the weakest part of the protocol and the usual scope cut. Decide up front whether "logout of the app" only, or "logout of the SSO session," and state the limitation to security.
  • Global state leaks in long-running workers (Octane, queue) — ensure the guard is never invoked outside web requests.

Ramp-up. Low for anyone who knows CAS; moderate for the team generally, since CAS is a niche protocol relative to OAuth/OIDC and the failure signatures are unintuitive. Budget a half-day knowledge transfer plus a runbook covering the five failure modes above.

Recommendation. Score 1.47 with 0 dependents and an unresolved license is a do-not-adopt-as-dependency signal for a Laravel target. Use it as a design reference, implement the guard in-house over phpCAS, and — if the IdP has an OIDC/SAML path within 18 months — consider skipping CAS glue entirely and going straight to OIDC via a maintained provider. The engineering cost of either route is small; the ownership and protocol-direction decisions are the ones worth slowing down for.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle