winter/wn-sso-plugin
Add single sign-on to Winter CMS with this plugin, letting users authenticate through an external identity provider instead of local credentials. Configure your provider and streamline secure access to the backend.
Architecture fit
winter/wn-sso-plugin is a Winter CMS plugin (winter-plugin Composer type) that layers OAuth 2.0 / OIDC authentication onto the backend (admin) login flow using Laravel Socialite as the protocol client. Architecturally it is a login-time identity broker, not an identity management layer: it intercepts the backend auth handshake, exchanges the IdP code for a Socialite user object, resolves or creates a matching Backend\Models\User, and hands control back to Winter's BackendAuth guard. That is a small, well-understood surface area and fits Winter's plugin model without forking core.
The fit is good if and only if scope is explicitly bounded to "authenticate existing admins against our IdP." It does not provide SCIM provisioning, group sync, deprovisioning, or IdP-initiated flows unless the code adds them — none of which should be assumed from the description.
Integration feasibility
Low-to-moderate effort: composer require winter/wn-sso-plugin, IdP app registration, client ID/secret in .env, redirect URI alignment, and a test matrix. The real work is not installation but policy design — who is allowed to become a backend user, and what role they land in. Budget the majority of effort there, not in the Composer step.
Technical risk
is_activated checks. Confirm whether the IdP's MFA is a hard requirement and whether the plugin honors deactivated users.Key questions
is_activated flag?composer.json?Stack fit
Assumes a standard Winter CMS deployment (Laravel + MySQL/Postgres, Composer-managed plugins, .env-driven config). Socialite is already the conventional Laravel answer for OAuth, so the dependency is idiomatic rather than exotic. No new runtime services are introduced — the only new external dependency is the IdP itself. This is a low-surface integration that fits a conventional LAMP/LEMP Winter stack without architectural change.
Migration path Run hybrid authentication rather than a cutover:
Compatibility Pin the plugin version and record the exact Winter/Laravel/Socialite/PHP matrix it was validated against. Add a CI or manual gate that re-runs the login test matrix on every Winter minor upgrade. Because the plugin touches the login surface, treat Winter upgrades as auth-affecting changes, not routine maintenance.
Sequencing
IdP app registration → secret custody in .env/secret manager → staging install (hybrid mode) → test matrix → role/permission mapping review → internal cohort → general admin rollout → documentation and runbook → optional SSO-only enforcement. Do not parallelize secret provisioning with code deployment; a mis-sequenced secret rotation is the most common cause of a production lockout.
Maintenance Expect to own this. With 8 stars and 0 dependents, the realistic posture is "internal fork on standby": review the source, keep an MIT-licensed fork in your org, and budget roughly 2–5 engineer-days per year for Winter-upgrade re-validation plus security review. Secret rotation is a recurring calendar item, not a one-off.
Support No vendor, no SLA. Issues surface via the repository and Winter community channels. Mitigate with a written runbook covering: IdP outage procedure, break-glass login, secret rotation, adding/removing an admin, and rollback to local auth (which should be a one-line config change, tested before you need it).
Scaling Negligible performance impact — OAuth negotiation occurs once per login, and admin login volume is trivially small. Session handling remains Winter's. The scaling concern is not throughput but administrator count and role complexity: as the admin population grows, so does the cost of manual deprovisioning, which this plugin does not solve.
Failure modes
Ramp-up Low. A Laravel-fluent engineer can read the plugin end-to-end in a few hours; the IdP configuration is standard OIDC work. The ramp-up cost sits with administrators and security reviewers, who need a one-page runbook explaining the new login flow, what to do when SSO fails, and why the break-glass account exists.
Recommendation Viable and low-effort for the narrow goal of SSO into the Winter backend, provided you (a) restrict the IdP application and pre-provision users rather than trusting auto-creation, (b) retain break-glass local auth, (c) accept ownership of an effectively unmaintained MIT plugin, and (d) close the deprovisioning gap outside the plugin. If the requirement includes automated lifecycle management, role sync, or enforced MFA guarantees, this package covers only the first mile and should be treated as a component of a larger identity program rather than the solution.
How can I help you explore Laravel packages today?