symfonycorp/connect-bundle
A Symfony bundle for authenticating users with SymfonyConnect via OAuth. It integrates the Connect login flow with Symfony Security, including user provider and firewall configuration, so your app can offer Symfony account sign-in.
Architecture fit. This is a Symfony bundle, not a Laravel package — it ships a Symfony Bundle class, DI extension, service definitions in XML/YAML, and depends on Symfony's security/firewall and event system. Laravel's service container, HTTP kernel, and auth guards (Illuminate\Auth) share no contracts with it, so there is no drop-in path. Even inside a Symfony application the fit is narrow: the bundle exists solely to authenticate users against Symfony Connect (connect.symfony.com), a niche OAuth2 identity provider for the Symfony developer ecosystem. It provides no general-purpose OAuth/SSO capability that a TPM could repurpose for enterprise SSO (Okta, Azure AD, Google Workspace).
Integration feasibility. Low for Laravel. To use it you would need to either (a) run a Symfony sidecar or microservice purely for this auth flow, adding a second framework runtime to the estate for one login provider, or (b) port the provider logic into a Laravel Socialite custom driver — which means re-implementing the package rather than consuming it. Neither is attractive. Option (a) is the only way to use the package as-shipped, and it imports Symfony LTS version constraints from the 2018–2019 era alongside the bundle.
Technical risk. High and largely non-mitigable:
Key questions for the requester.
Recommendation: do not adopt as a dependency. Treat the repository as a reference implementation for the Symfony Connect OAuth2 endpoints, if and only if that specific IdP is a confirmed requirement.
Stack fit. Poor for a Laravel codebase. The idiomatic Laravel answer is Socialite with a custom driver (Socialite::extend) or league/oauth2-client with a hand-written provider implementing getDefaultScopes, getAuthorizationUrl, getAccessToken, getResourceOwnerDetails, and getResourceOwner. That is a small, well-understood, actively maintained surface, and it lives in our own repository where we control patching. The bundle would only fit a Symfony 3.4/4.x/5.x application — and even there, we would be pinning an abandoned bundle into a modernized app.
Migration path. If a prototype already uses the bundle:
league/oauth2-client provider) behind our existing auth abstraction.composer.json so it cannot re-enter via transitive resolution.Compatibility. Expect PHP 7.x-era code. Verify before any spike: PHP version constraints, symfony/* constraints, PSR/HTTP message implementation versions, and whether the OAuth2 client dependency is itself archived. Assume two of those four will conflict with a current Laravel 10/11 stack and require --ignore-platform-reqs hacks that we should refuse to ship.
Sequencing. Do the requirement validation first (is Symfony Connect even wanted?), then a one-day spike to confirm that a Socialite custom driver can complete the flow against a test account. Only if the IdP requirement is firm and the spike fails should we consider a sidecar — and that decision should be escalated, because it adds a permanent second runtime to the platform for a single login method. Budget the spike at 2–3 engineer-days, including a security review of the token handling and state/PKCE usage, which the 2019 package almost certainly does not implement to current expectations.
Maintenance. Total cost of ownership is effectively "we now own this code." With an archived package and no upstream, every dependency bump, PHP upgrade, and CVE triage is ours. In a Laravel context this is worse than usual because the package is not even in its native framework, so nothing about it will be exercised by framework upgrades or covered by existing test suites. Estimate the ongoing burden as a low-grade but permanent tax on the platform team, plus an unplanned fork-and-patch event roughly whenever a transitive dependency publishes a security advisory.
Support. None. No vendor, no maintainer, no active issue tracker. Internal support means reverse-engineering a 2019 codebase from source at incident time — the worst possible moment. Contrast with Socialite, which has active maintainers, documented upgrade paths, and a large corpus of operational knowledge.
Scaling. The auth flow itself is not the scaling constraint; a redirect-based OAuth2 dance is cheap and stateless. The scaling problem is organizational: one more bespoke auth path to reason about during incidents, one more provider to include in every security review, and a second framework runtime if the sidecar route is taken. Session and token handling also drift from our standard patterns, complicating centralized audit logging, rate limiting, and revocation.
Failure modes.
Ramp-up. Deceptively easy to start and hard to finish. A capable engineer can get a demo login working in a day, which creates false confidence; the real cost appears at the first security review, the first PHP upgrade, and the first incident. Allocate onboarding time for the team to learn generic OAuth2/Socialite patterns rather than this package specifically — that knowledge is reusable and this package's knowledge is not.
How can I help you explore Laravel packages today?