smurfy/crowd-bundle
Symfony bundle that integrates Atlassian Crowd authentication and user/group lookup. Configure Crowd as a security provider to authenticate users via Crowd SSO and access directory data from your Symfony application.
First, a reality check that shapes everything below: smurfy/crowd-bundle is a Symfony bundle, not a Laravel package. It wires Atlassian Crowd into Symfony's Security component via a custom user provider / authentication provider. As a Laravel developer you will not composer require this into a Laravel app and expect it to work — there is no service provider, no guard, and it depends on Symfony's SecurityBundle internals. Treat it as a reference implementation for how Crowd authentication is wired up, and port the pattern into a Laravel guard.
Minimal steps if you were on the matching Symfony version:
composer require smurfy/crowd-bundle (expect it to pull Symfony 2.x-era constraints).AsaAyers\CrowdBundle\AsaAyersCrowdBundle in app/AppKernel.php.config.yml.form_login firewall at the Crowd user provider, then log in with a real Crowd username/password.Where to look first: the bundle's DependencyInjection/Configuration.php (it defines the exact config keys), the security factory that builds the provider, and the README. Those three tell you the request shape, the config contract, and the expected Symfony version.
First use case for a Laravel dev: replicate the login call. Crowd's user authentication endpoint is POST /rest/usermanagement/1/authentication?username={user} using the application name/password as HTTP Basic auth, with the user's password in a JSON body. That single call is the core of what this bundle does — everything else is Symfony plumbing around it.
What the bundle actually provides (the pattern to copy):
UserInterface.Laravel translation of each pattern:
Illuminate\Contracts\Auth\UserProvider or, more simply, a Guard that calls Crowd and then resolves/creates a local User row keyed by Crowd username. Keep Crowd as the source of truth for credentials, Laravel as the source of truth for authorization data.config/auth.php plus a crowd driver in Auth::extend().config/crowd.php with base_url, app_name, app_password, timeout, and a cache_ttl, mirrored from the bundle's Configuration.php.Recommended workflow: authenticate on login only, then issue a normal Laravel session. Do not call Crowd on every request — it becomes a hard dependency on an external SSO server for every page load. Cache the Crowd user payload (user + groups) keyed by username with a short TTL, and invalidate on logout or a password_changed webhook if you have one.
Integration tips: wrap the Crowd HTTP calls in a small dedicated client class (Laravel's Http facade is fine) so you can unit-test the guard with a fake client. Store the app password in .env, never in the committed config. If the bundle exposes a service for programmatic auth, note that pattern — in Laravel the equivalent is Auth::guard('crowd')->attempt($credentials).
curl the Crowd auth endpoint with the app credentials? (2) does the user exist in Crowd and in the correct directory? (3) is the bundle's firewall config even being loaded (check the resolved container/config dump)? Symfony security debug tooling and Crowd server logs tell you which layer broke.How can I help you explore Laravel packages today?