smurfy/atlassian-services-crowd
Laravel package for integrating Atlassian Crowd authentication and SSO into your application. Manage users and groups, authenticate against Crowd, and sync identity data seamlessly with your Laravel projects.
Architecture fit. Despite being listed as a Laravel/PHP package, this is a Composer shim around the PEAR Services_Atlassian_Crowd library, not a framework-integrated package. Expect PEAR-style underscore class names (Services_Atlassian_Crowd), no PSR-4 autoloading, no ServiceProvider, no facade, no publishable config, no use of Laravel's HTTP client, container, or exception handling. Adopting it means the team writes the integration surface itself: a service provider, a config file for the Crowd base URL and application credentials, a facade or constructor-injected client, and adapters that translate its error model into Laravel exceptions and typed results. Fit is "vendored utility inside our own wrapper," not "install and configure."
Integration feasibility. Feasible for an engineer already familiar with Crowd's REST API. The realistic spike is one to two days: install in a scratch Laravel app, run authenticate / validate-session / group-membership calls against a sandbox Crowd instance, and confirm clean execution on the target PHP runtime. Two unknowns dominate: PHP 8.2+ compatibility (PEAR-era code commonly trips on removed/deprecated syntax, dynamic properties, and old HTTP transport assumptions) and whether the transport it relies on is available and permitted in our environment.
Technical risk. High. Zero stars, zero dependents, a self-description of "copy of the pearpackage," and a composite score of 0.03 mean no community vetting, no issue activity, no security response process, and no evidence anyone runs it in production. Open supply-chain questions: who published it, whether the code is byte-identical to a known upstream PEAR release, whether releases are tagged and reproducible, and what license governs redistribution. There is also a strategic risk above the package: Crowd is a legacy IAM product with its own end-of-life trajectory, so any new dependency on the Crowd API should be raised with identity/security stakeholders before a build decision.
Key questions.
Services_Atlassian_Crowd at a known version, and under what license?Stack fit. Treat it as a protocol reference and fork source, not a dependency of record. The package knows Crowd's endpoint shapes, payloads, and error codes; that knowledge is the leverage. Wrap it in an internal crowd package (or a thin CrowdClient class) that exposes only the methods the application needs and hides PEAR conventions behind Laravel-native types.
Migration path. If we already run the PEAR library, this is a low-effort Composer-ization bridge and a reasonable interim step. If we are greenfield, the honest comparison is: vendor-and-fork this package versus write a roughly 300-line Guzzle client against Crowd's REST endpoints. The latter is usually cheaper to own and easier to test, and avoids inheriting an unmaintained codebase. The third option — bypassing Crowd's REST API in favor of an OIDC/SAML flow with a maintained library — should be evaluated first and only discarded on evidence.
Compatibility. Expect work on autoloading (PSR-4 wrapper, classmap fallback), PHP 8 fixes, and HTTP client conflicts if the code pulls its own transport with a pinned Guzzle/cURL version. Pin the fork to a specific commit in composer.json and mirror it internally rather than resolving from Packagist at build time.
Sequencing. (1) Protocol discovery spike against sandbox Crowd, one engineer, two days. (2) Decision gate: fork, rewrite, or OIDC/SAML alternative. (3) Security and license review of whatever code we keep. (4) Build the Laravel wrapper with contract tests and a fake Crowd server for CI. (5) Feature-flag rollout behind the existing auth path with a kill switch.
Maintenance. Effectively zero upstream maintenance; we own every line we adopt. Budget for a fork, a mirror, and a named internal owner. Dependency scanners will flag the package as unmaintained, and that finding will recur every quarter until it is replaced or formally accepted as an exception.
Support. No vendor, no maintainer, no CVE process, no community. Incidents are debugged from source. That is acceptable for a small, well-tested adapter and unacceptable if the package is spread across multiple services without a single owner.
Scaling. The dominant cost is per-request calls to Crowd: session validation and group lookups on every request will add latency and load Crowd directly. Plan for short-TTL caching of session validation and group membership, connection pooling via a shared Guzzle client, and explicit timeouts. Crowd's own capacity and HA posture are a separate workstream and should be sized before rollout, not after.
Failure modes. Crowd outage becomes an authentication outage for every integrated app; there is no graceful degradation unless we design one (cached sessions with bounded staleness, read-only mode, clear 503 behavior). Other likely failures: silent or weakly typed error handling typical of PEAR code, TLS verification settings that get disabled "temporarily" and never restored, credential handling for the Crowd application password, and version drift between Crowd instances in different environments. Each needs a test.
Ramp-up. Low code complexity, high archaeology cost: no documentation, unfamiliar PEAR idioms, and no tests to read. Estimate one to two days for a mid-level PHP engineer to understand the library and one to two sprints to deliver a wrapped, tested, observable integration. The wrapper — not the package — is the real deliverable, and it should be reviewed as internal production code.
How can I help you explore Laravel packages today?