---
title: "sdk/php"
description: "SDK serveur PHP 8.1+ pour la vérification JWT sans réseau,l'authentification des requêtes PSR-7 et la validation des signatureswebhook."
locale: "fr"
---

> Documentation Index
> Fetch the relevant documentation index at: https://vonvon.id/fr/sdks/llms.txt
> Use this file to discover all available pages before exploring further.

# sdk/php

## Statut

Implémenté et vérifié localement. La vérification aller-retour avec unvrai IdP (récupération JWKS, signature/vérification de jeton contre uneinstance Vonvon active) n'a pas encore été effectuée et doit être complétéeavant toute utilisation en production.

Statut du registre : UNPUBLISHED. Installez ce SDK uniquement depuis un checkout du code source du dépôt ; n'utilisez pas de registre de paquets externe.

L'authentification des requêtes accepte uniquement Bearer par défaut. Un cookie JWT détenu par l'application n'est lu que lorsque son nom exact est configuré. Le cookie Core opaque \_\_Host-vonvon.rt.\* n'est jamais recherché ni vérifié localement ; échangez-le en transférant le header Cookie complet vers le POST /v1/sessions/token de même origine exacte, avec les redirections désactivées, et n'acceptez qu'une réponse contenant uniquement le champ token.

## Installer

PHP 8.1+ requis. Les dépendances principales sont récupéréesautomatiquement par Composer.

```shell
{
  "repositories": [
{ "type": "path", "url": "../vonvon/sdk/php" }
  ],
  "require": {
"vonvon/vonvon": "dev-main"
  }
}

# composer update vonvon/vonvon
```

## Démarrage rapide

```php
use Vonvon\VonvonClient;
use Vonvon\Exception\TokenException;
use Vonvon\Exception\JwksException;

$vonvon = new VonvonClient([
'issuer'   => 'https://vonvon.id',
'audience' => 'your-client-id',
'cache'    => $psrSimpleCacheImpl, // PSR-16; null disables JWKS cache
]);

try {
$claims = $vonvon->verifyToken($jwtString);
echo $claims->sub();    // user ID
echo $claims->scope();  // "openid profile email"
echo implode(',', $claims->amr()); // "phr" / "otp"
} catch (TokenException $e) {
http_response_code(401);
} catch (JwksException $e) {
http_response_code(503);
}
```

## Authentifier une requête PSR-7

```php
$result = $vonvon->authenticateRequest($psrRequest);

if ($result->isAuthenticated()) {
$userId = $result->claims()->sub();
} else {
// $result->reason() for server-side logs only
http_response_code(401);
}

$token = $vonvon->exchangeSessionToken(
'https://app.example.com/account',
$psrRequest->getHeaderLine('Cookie'),
$sessionTokenTransport,
);
```

## Vérifier le webhook

```php
use Vonvon\Exception\WebhookException;

try {
$payload = $vonvon->verifyWebhook($psrRequest, 'whsec_...');
$type = $payload->type();  // "user.created"
$data = $payload->data();
} catch (WebhookException $e) {
http_response_code(400);
}
```

## Options VonvonClient

| Clé | Défaut | Description |
| --- | --- | --- |
| `issuer` | requis | URI d'émetteur Vonvon |
| `audience` | `null` | Audience attendue ; null ignore la validation |
| `cache` | `null` | CacheInterface PSR-16 pour la mise en cache JWKS |
| `jwks_ttl` | `3600` | TTL du cache JWKS en secondes |
| `clock_leeway` | `0` | Tolérance au décalage d'horloge JWT en secondes |
| `cookie_name` | `disabled` | Nom du cookie JWT détenu par l'application ; désactivé sauf configuration explicite |

## Méthodes VonvonClient

| Méthode | Retourne | Description |
| --- | --- | --- |
| `verifyToken(string $token)` | `Claims` | Vérifier la chaîne JWT ; lève une exception en cas d'échec |
| `authenticateRequest(ServerRequestInterface $request)` | `AuthResult` | Authentifier une requête PSR-7 ; ne lève pas d'exception |
| `verifyWebhook(ServerRequestInterface $request, string $secret)` | `WebhookPayload` | Valider la signature webhook ; lève une exception en cas d'échec |
| `refreshJwks()` | `void` | Forcer le rafraîchissement du cache JWKS |

## Notes de plateforme

- Utilise `firebase/php-jwt` pour la vérification ES256/RS256. Lesalgorithmes HS256 et `none` sont rejetés.
- Nécessite un objet de requête PSR-7 pour `authenticateRequest` et`verifyWebhook`. Convertissez les requêtes natives du framework avecun pont PSR-7 si nécessaire.
- Hiérarchie d'exceptions : `VonvonException` -&gt; `TokenException`,`JwksException`, `WebhookException`.

Source: https://vonvon.id/fr/sdks/php/index.mdx
