PHPackages                             oat-sa/generis-auth-keyvalue - 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. oat-sa/generis-auth-keyvalue

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

oat-sa/generis-auth-keyvalue
============================

Generis key value authentication

v2.3.3(2y ago)211.7k↑33.3%2[1 PRs](https://github.com/oat-sa/generis-auth-keyvalue/pulls)GPL-2.0PHP

Since Jun 16Pushed 2y ago48 watchersCompare

[ Source](https://github.com/oat-sa/generis-auth-keyvalue)[ Packagist](https://packagist.org/packages/oat-sa/generis-auth-keyvalue)[ Docs](http://www.taotesting.com)[ RSS](/packages/oat-sa-generis-auth-keyvalue/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (1)Versions (22)Used By (0)

keyvalue-authentication
=======================

[](#keyvalue-authentication)

A key-value implementation of the Tao 3.0 user authentication

Requirement
===========

[](#requirement)

You need to have a redis server installed. You will need to enable redis in the phpconfig, and perhaps to add redis.so library to your system if not already installed

Installation
============

[](#installation)

This system can be added to a projet as a library. You need to add this parameter to your **composer.json**

```
"minimum-stability" : "dev",
"require": {
    "oat-sa/generis-auth-keyvalue": "dev-master"
},

```

Once it's done, run a composer update.

---

Be sure to have a key value persistence registered that will be used for caching. The default persistence identifier is `authKeyValue`, but you will be able to configure which one will be used. Here is an example of registered redis persistence in **config/generis/persistences.conf.php**:

```
'authKeyValue' => array(
    'driver' => 'phpredis',
    'host' => '127.0.0.1',
    'port' => 6379
)

```

---

To enable the authentication cache you have to run an install script:

```
php index.php 'oat\authKeyValue\action\ActivateKeyValueAuthentication' --persistence authKeyValue

```

Then the login will try to use this library.

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community27

Small or concentrated contributor base

Maturity72

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~238 days

Recently: every ~7 days

Total

13

Last Release

817d ago

Major Versions

v1.4.0 → v2.0.02020-09-29

### Community

Maintainers

![](https://www.gravatar.com/avatar/98ddc6f1b615b1fac2d59f1e72d5dc6056cf6650414271da90cb3f0e203516fe?d=identicon)[bugalood](/maintainers/bugalood)

![](https://www.gravatar.com/avatar/c0ec704e0a8abaf0c27b227ad05d7aca23bc8f83d195229d94d4508cddc0fd24?d=identicon)[oat-lionel](/maintainers/oat-lionel)

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

![](https://www.gravatar.com/avatar/348b2cf6408227372fbb22c6e8b0832e1c8c98c5d6b0c88bb220dbdfbcd21a39?d=identicon)[krampstudio](/maintainers/krampstudio)

---

Top Contributors

[![jbout](https://avatars.githubusercontent.com/u/5815304?v=4)](https://github.com/jbout "jbout (28 commits)")[![augustas](https://avatars.githubusercontent.com/u/2705327?v=4)](https://github.com/augustas "augustas (24 commits)")[![tikhanovichA](https://avatars.githubusercontent.com/u/1053022?v=4)](https://github.com/tikhanovichA "tikhanovichA (16 commits)")[![llecaque](https://avatars.githubusercontent.com/u/5645487?v=4)](https://github.com/llecaque "llecaque (13 commits)")[![ionutpad](https://avatars.githubusercontent.com/u/31656944?v=4)](https://github.com/ionutpad "ionutpad (5 commits)")[![edwin-focaloid](https://avatars.githubusercontent.com/u/126317720?v=4)](https://github.com/edwin-focaloid "edwin-focaloid (3 commits)")[![siwane](https://avatars.githubusercontent.com/u/8009602?v=4)](https://github.com/siwane "siwane (2 commits)")[![ks16](https://avatars.githubusercontent.com/u/42937157?v=4)](https://github.com/ks16 "ks16 (2 commits)")[![bugalot](https://avatars.githubusercontent.com/u/4217431?v=4)](https://github.com/bugalot "bugalot (2 commits)")[![uncleempty](https://avatars.githubusercontent.com/u/32706312?v=4)](https://github.com/uncleempty "uncleempty (2 commits)")[![zagovorichev](https://avatars.githubusercontent.com/u/1445911?v=4)](https://github.com/zagovorichev "zagovorichev (1 commits)")[![shpran](https://avatars.githubusercontent.com/u/59471572?v=4)](https://github.com/shpran "shpran (1 commits)")[![antoinerobin](https://avatars.githubusercontent.com/u/5881795?v=4)](https://github.com/antoinerobin "antoinerobin (1 commits)")

---

Tags

AuthenticationTAOcomputer-based-assessmentOAT

### Embed Badge

![Health badge](/badges/oat-sa-generis-auth-keyvalue/health.svg)

```
[![Health](https://phpackages.com/badges/oat-sa-generis-auth-keyvalue/health.svg)](https://phpackages.com/packages/oat-sa-generis-auth-keyvalue)
```

###  Alternatives

[qtism/qtism

OAT QTI-SDK

86193.8k7](/packages/qtism-qtism)[oat-sa/tao-core

TAO core extension

66136.7k74](/packages/oat-sa-tao-core)[oat-sa/generis

TAO generis library

11140.3k76](/packages/oat-sa-generis)

PHPackages © 2026

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