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(3d ago)14.0k—7.7%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 today

READMEChangelog (4)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

54

—

FairBetter than 96% of packages

Maintenance89

Actively maintained with recent releases

Popularity27

Limited adoption so far

Community39

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 52.1% 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

3d 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 (86 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/horde

Horde base application

583.0k70](/packages/horde-horde)[horde/imap_client

IMAP client library

275.5k19](/packages/horde-imap-client)[horde/kronolith

Calendar and scheduling application

101.5k4](/packages/horde-kronolith)[horde/imp

Webmail application

261.3k](/packages/horde-imp)

PHPackages © 2026

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