sroutier/eloquent-ldap
Bring Eloquent-style syntax to LDAP in Laravel: query and authenticate against directory servers like Active Directory or OpenLDAP using familiar model methods, so user lookups feel like any other database query.
users table. This directly supports a decision to sell into enterprises without forcing a full IdP migration as a launch prerequisite.Auth::attempt() locally, then falls back to a bind against the configured directory. Expect a competent Laravel engineer to reproduce this in 1–3 days. The decision is therefore not "adopt this package" but "do we own ~150 lines of auth code, or take a dependency?"Recommendation: do not adopt as a dependency. The GPL-3.0 license is a likely blocker for any commercial or closed-source product (copyleft; Laravel's ecosystem norm is MIT), and the maintenance signals are weak — 20 stars, zero dependents, single maintainer, low opportunity score. Re-implement the fallback logic internally (clean IP, MIT-compatible) or adopt an actively maintained MIT-licensed alternative, and treat this repo as a reference implementation rather than a dependency.
Consider it (as reference code, or a dependency only in a GPL-compatible internal tool):
Look elsewhere (strongly) when:
Security questions to answer before any adoption — these are unresolved by the package and are the PM's real risk:
To executives (30 seconds): This is a small open-source connector that lets users log in with their existing corporate Windows/AD credentials instead of a new password. It would let us land enterprise accounts faster and reduce onboarding friction for employees whose company mandates a directory. However, it's a stopgap, not a platform: it's a 20-star community project maintained by one person, under a GPL-3.0 license that is incompatible with our commercial distribution model, and it solves only half the problem — login, not permissions. My recommendation is not to take it as a dependency. We can own equivalent logic in a few engineering days with no license encumbrance, and pair it with our existing auth so we retain full control. It is not a strategic investment; it is a checkbox that helps us close deals with on-prem enterprises, and we should price the effort accordingly.
To engineering (short): The behavior is: try the local guard, on failure attempt an LDAP/AD bind, then materialize/sync the user. Treat it as a design reference, not a vendor. We'll implement the fallback in our own user provider so we control (a) lockout and rate limiting across both paths, (b) a guarantee that directory-side deactivation invalidates local access, (c) explicit audit logging of which store authenticated the request, and (d) connection timeouts with circuit-breaking so an unreachable domain controller doesn't stall logins. Estimate 1–3 days for the core path, plus test coverage and a fake LDAP server for CI. If we later need group-to-role mapping, we evaluate a maintained LDAP library rather than extending this.
To sales/customer success: If a prospect asks "does it work with our Active Directory?", the answer is "yes, in a limited way — username/password against your domain controller." It does not get us SSO, MFA, or automatic deprovisioning. Don't let it be promised as enterprise SSO.
Bottom line for the roadmap: log it as a low-priority, low-effort enterprise-enablement item — not a dependency to adopt, but a pattern to implement internally when an AD-based deal makes it revenue-relevant. Revisit only if two or more signed customers require it.
How can I help you explore Laravel packages today?