PHPackages                             surfnet/yubikey-api-client-bundle - 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. surfnet/yubikey-api-client-bundle

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

surfnet/yubikey-api-client-bundle
=================================

A Symfony bundle to integrate Yubikey OTP validation service.

6.0.0(7mo ago)1114.4k↑180%1Apache-2.0PHPPHP ^8.2CI failing

Since Sep 23Pushed 7mo ago10 watchersCompare

[ Source](https://github.com/SURFnet/yubikey-api-client-bundle)[ Packagist](https://packagist.org/packages/surfnet/yubikey-api-client-bundle)[ RSS](/packages/surfnet-yubikey-api-client-bundle/feed)WikiDiscussions main Synced 3d ago

READMEChangelog (3)Dependencies (20)Versions (19)Used By (0)

Yubikey API Client Bundle
=========================

[](#yubikey-api-client-bundle)

A Symfony bundle to integrate Yubikey's OTP validation service.

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

[](#installation)

Add the bundle to your Composer file.

```
composer require 'surfnet/yubikey-api-client-bundle'
```

Add the bundle to your AppKernel.

```
public function registerBundles()
{
    $bundles[] = new Surfnet\YubikeyApiClientBundle\SurfnetYubikeyApiClientBundle;
}
```

Usage
-----

[](#usage)

```
public function fooAction()
{
    /** @var \Surfnet\YubikeyApiClientBundle\Service\VerificationService */
    $service = $this->get('surfnet_yubikey_api_client.verification_service');

    if (!\Surfnet\YubikeyApiClient\Otp::isValid('user-input-otp-here')) {
        // User-entered OTP string is not valid.
    }

    $otp = \Surfnet\YubikeyApiClient\Otp::fromString('user-input-otp-here');
    $result = $service->verify($otp);

    if ($result->isSuccessful()) {
        // Yubico verified OTP.
    }
}
```

###  Health Score

53

—

FairBetter than 96% of packages

Maintenance62

Regular maintenance activity

Popularity32

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity84

Battle-tested with a long release history

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

Recently: every ~274 days

Total

12

Last Release

230d ago

Major Versions

1.2.0 → 2.0.02016-04-29

2.0.0 → 3.0.02017-02-20

3.0.1 → 4.0.02020-11-25

4.1.1 → 5.0.0-beta12024-03-25

5.0.0 → 6.0.02025-11-17

PHP version history (4 changes)1.0.0PHP ~5.4

2.0.0PHP ^5.4|^7.0

3.0.0PHP ^5.6|^7.0

5.0.0-beta1PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/803ee614b9224b163d1bdb86e754af17eea0af3eabeda3e034ee8df1cb7b7e84?d=identicon)[pgmvdm](/maintainers/pgmvdm)

![](https://www.gravatar.com/avatar/616909370e1d434adc1088469108ed5cd32c15656d037d24d89dd9750bbbed00?d=identicon)[phavekes](/maintainers/phavekes)

---

Top Contributors

[![parijke](https://avatars.githubusercontent.com/u/7671998?v=4)](https://github.com/parijke "parijke (40 commits)")[![rjkip](https://avatars.githubusercontent.com/u/1734555?v=4)](https://github.com/rjkip "rjkip (13 commits)")[![phavekes](https://avatars.githubusercontent.com/u/3096423?v=4)](https://github.com/phavekes "phavekes (11 commits)")[![johanib](https://avatars.githubusercontent.com/u/60608181?v=4)](https://github.com/johanib "johanib (6 commits)")[![MKodde](https://avatars.githubusercontent.com/u/28252948?v=4)](https://github.com/MKodde "MKodde (5 commits)")[![mroest](https://avatars.githubusercontent.com/u/1062155?v=4)](https://github.com/mroest "mroest (4 commits)")[![DRvanR](https://avatars.githubusercontent.com/u/1422284?v=4)](https://github.com/DRvanR "DRvanR (3 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![pmeulen](https://avatars.githubusercontent.com/u/1485300?v=4)](https://github.com/pmeulen "pmeulen (2 commits)")[![thijskh](https://avatars.githubusercontent.com/u/3808792?v=4)](https://github.com/thijskh "thijskh (2 commits)")[![xabbuh](https://avatars.githubusercontent.com/u/1957048?v=4)](https://github.com/xabbuh "xabbuh (1 commits)")

---

Tags

yubikeyyubico

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/surfnet-yubikey-api-client-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/surfnet-yubikey-api-client-bundle/health.svg)](https://phpackages.com/packages/surfnet-yubikey-api-client-bundle)
```

PHPackages © 2026

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