PHPackages                             horde/auth - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. horde/auth

ActiveHorde-library[Authentication &amp; Authorization](/categories/authentication)

horde/auth
==========

Authentication and user management library

v3.0.0(1mo ago)14.5k—9.3%6[1 PRs](https://github.com/horde/Auth/pulls)16LGPL-2.1-onlyPHPPHP ^7.4 || ^8

Since Oct 15Pushed 1mo ago5 watchersCompare

[ Source](https://github.com/horde/Auth)[ Packagist](https://packagist.org/packages/horde/auth)[ Docs](https://www.horde.org/libraries/Horde_Auth)[ RSS](/packages/horde-auth/feed)WikiDiscussions FRAMEWORK\_6\_0 Synced 1w ago

READMEChangelog (5)Dependencies (27)Versions (32)Used By (16)

Horde Auth
==========

[](#horde-auth)

Authentication and user management library for the Horde framework.

Provides a clean, interface-based architecture for credential validation, transparent authentication, user directory queries, user lifecycle management, and password operations across multiple backends.

New in this version
-------------------

[](#new-in-this-version)

The main interface has been split into several capability oriented interface. Drivers no longer pseudo implement capabilities they don't really have but only expose those interfaces they really provide, i.e. certificate authentication does no longer provide an interface to list users or change passwords. Authentication results are now objects instead of booleans.

Installation
------------

[](#installation)

```
composer require horde/auth
```

Interfaces
----------

[](#interfaces)

InterfacePurpose`CredentialProvider`Validate credentials (username + password)`TransparentProvider`Assert identity from HTTP request context`UserDirectory`Check existence, list, and search users`UserLifecycleManager`Add, remove, rename, and update users`PasswordManager`Change and reset passwords`AccessPolicy`Pre/post-auth hooks for lockout, expiration, rate limiting`LoginAttemptTracker`Count and reset failed login attempts`LockManager`Lock/unlock user accountsAvailable drivers
-----------------

[](#available-drivers)

`Sql`, `Customsql`, `Ldap`, `Passwd`, `WritablePasswd`, `Ftp`, `Http`, `Radius`, `Pam`, `Peclsasl`, `Smb`, `Smbclient`, `Login`, `Shibboleth`, `X509`, `Ipbasic`, `Auto`, `Mock`

Quick example
-------------

[](#quick-example)

```
use Horde\Auth\AuthResultSuccess;
use Horde\Auth\Policy\CompoundPolicy;
use Horde\Auth\Policy\LockoutPolicy;
use Horde\Auth\Sql;
use Horde\Auth\Storage\InMemoryAttemptTracker;
use Horde\Auth\Storage\InMemoryLockManager;

$auth = new Sql(db: $db, encryption: 'crypt-blowfish');
$policy = new CompoundPolicy(
    new LockoutPolicy(new InMemoryAttemptTracker(), new InMemoryLockManager()),
);

$decision = $policy->preAuth('alice');
if (!$decision->isDenied()) {
    $result = $auth->validate('alice', ['password' => 'secret']);
    $decision = $policy->postAuth('alice', $result);
}
```

Documentation
-------------

[](#documentation)

- [doc/USAGE.md](doc/USAGE.md) — full usage guide with examples
- [doc/UPGRADING.md](doc/UPGRADING.md) — migration from legacy `Horde_Auth_Base`
- [doc/examples/](doc/examples/) — runnable example scripts

License
-------

[](#license)

LGPL-2.1 - see [LICENSE](LICENSE).

###  Health Score

59

—

FairBetter than 98% of packages

Maintenance90

Actively maintained with recent releases

Popularity27

Limited adoption so far

Community40

Growing community involvement

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 51.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~179 days

Recently: every ~28 days

Total

27

Last Release

48d ago

Major Versions

2.2.2 → 3.0.0alpha12021-02-24

PHP version history (6 changes)2.1.2PHP &gt;=5.3.0

2.1.4PHP &gt;=5.3.0,&lt;=6.0.0alpha1

2.1.11PHP &gt;=5.3.0,&lt;=8.0.0alpha1

2.2.2PHP ^5.3 || ^7

3.0.0alpha1PHP ^7

v3.0.0alpha6PHP ^7.4 || ^8

### Community

Maintainers

![](https://www.gravatar.com/avatar/c943a083635c28520599075eaea7ede2d743b7697b76e84d6bdc37e52cc8249b?d=identicon)[yunosh](/maintainers/yunosh)

![](https://www.gravatar.com/avatar/c931cd02664859360478593450d6c473a05bb12b209dfacfc534cd13257cc7ef?d=identicon)[ralflang](/maintainers/ralflang)

![](https://www.gravatar.com/avatar/e4f6c6771993db2ed500959b42353f6cf6a2ca0406d9617f7ae680f4504faa4a?d=identicon)[horde](/maintainers/horde)

![](https://www.gravatar.com/avatar/a7767adb66b45f2f05bcd44d49bc4e67efacd9ce05b161ce2d481d5dd6af025c?d=identicon)[mrubinsk](/maintainers/mrubinsk)

![](https://www.gravatar.com/avatar/816e2b926f25f8cd2939054c7a7173011b4303d690e25ab61bf33cf8c7cf71ae?d=identicon)[tdannhauer](/maintainers/tdannhauer)

---

Top Contributors

[![yunosh](https://avatars.githubusercontent.com/u/379318?v=4)](https://github.com/yunosh "yunosh (322 commits)")[![slusarz](https://avatars.githubusercontent.com/u/381003?v=4)](https://github.com/slusarz "slusarz (132 commits)")[![ralflang](https://avatars.githubusercontent.com/u/646976?v=4)](https://github.com/ralflang "ralflang (88 commits)")[![mrubinsk](https://avatars.githubusercontent.com/u/66822?v=4)](https://github.com/mrubinsk "mrubinsk (35 commits)")[![wrobel](https://avatars.githubusercontent.com/u/10232?v=4)](https://github.com/wrobel "wrobel (27 commits)")[![bklang](https://avatars.githubusercontent.com/u/167131?v=4)](https://github.com/bklang "bklang (5 commits)")[![atj](https://avatars.githubusercontent.com/u/59319?v=4)](https://github.com/atj "atj (4 commits)")[![renan](https://avatars.githubusercontent.com/u/28046?v=4)](https://github.com/renan "renan (2 commits)")[![lherschi](https://avatars.githubusercontent.com/u/48790465?v=4)](https://github.com/lherschi "lherschi (1 commits)")[![selsky](https://avatars.githubusercontent.com/u/380337?v=4)](https://github.com/selsky "selsky (1 commits)")[![fedemennite](https://avatars.githubusercontent.com/u/17787451?v=4)](https://github.com/fedemennite "fedemennite (1 commits)")[![amulet1](https://avatars.githubusercontent.com/u/18431541?v=4)](https://github.com/amulet1 "amulet1 (1 commits)")[![mfprimo](https://avatars.githubusercontent.com/u/1607497?v=4)](https://github.com/mfprimo "mfprimo (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/horde-auth/health.svg)

```
[![Health](https://phpackages.com/badges/horde-auth/health.svg)](https://phpackages.com/packages/horde-auth)
```

###  Alternatives

[horde/imap_client

IMAP client library

277.3k25](/packages/horde-imap-client)[horde/horde

Horde base application

593.7k80](/packages/horde-horde)[horde/kronolith

Calendar and scheduling application

101.9k6](/packages/horde-kronolith)[horde/imp

Webmail application

261.5k](/packages/horde-imp)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
