pismile

Intégrer pismile en PHP

Connexion OIDC en PHP natif avec jumbojett/openid-connect-php, session et déconnexion.

1 min de lecture · Mis à jour le · API v1

Connectez-vous pour voir vos propres identifiants sandbox dans les exemples.

Ce guide convient à tout site PHP sans framework. Il utilise la bibliothèque openid-connect-php, qui valide pour vous la signature du jeton d'identité. Durée : 10 minutes.

  1. Installez la bibliothèque

    Terminal
    composer require jumbojett/openid-connect-php
  2. Centralisez la configuration

    config.php
    <?php
    require __DIR__ . '/vendor/autoload.php';
    
    use Jumbojett\OpenIDConnectClient;
    
    session_start();
    
    function pismile(): OpenIDConnectClient
    {
        $oidc = new OpenIDConnectClient('https://pismile.com', 'VOTRE_CLIENT_ID', getenv('PISMILE_CLIENT_SECRET'));
        $oidc->setRedirectURL('http://localhost:8000/login.php');
        $oidc->addScope(['openid', 'profile']);
        $oidc->setCodeChallengeMethod('S256');
        return $oidc;
    }
  3. Gérez la connexion

    Le même script envoie l'utilisateur vers pismile, puis traite son retour.

    login.php
    <?php
    require __DIR__ . '/config.php';
    
    $oidc = pismile();
    $oidc->authenticate();
    
    session_regenerate_id(true);
    $_SESSION['user'] = [
        'sub'      => $oidc->getVerifiedClaims('sub'),
        'name'     => $oidc->getVerifiedClaims('name'),
        'country'  => $oidc->getVerifiedClaims('pismile_country'),
        'category' => $oidc->getVerifiedClaims('pismile_category'),
    ];
    $_SESSION['id_token'] = $oidc->getIdToken();
    
    // Enregistrez ou mettez à jour l'utilisateur dans votre base, avec sub comme clé :
    // INSERT ... ON CONFLICT (pismile_sub) DO UPDATE SET name = ..., country = ...
    
    header('Location: /');
    exit;
  4. Affichez l'utilisateur

    index.php
    <?php
    require __DIR__ . '/config.php';
    $user = $_SESSION['user'] ?? null;
    ?>
    <?php if ($user): ?>
        <h1>Bonjour <?= htmlspecialchars($user['name']) ?></h1>
        <p>Pays : <?= htmlspecialchars((string) $user['country']) ?> · Catégorie : <?= htmlspecialchars((string) $user['category']) ?></p>
        <a href="/logout.php">Se déconnecter</a>
    <?php else: ?>
        <a href="/login.php">Se connecter avec pismile</a>
    <?php endif; ?>
  5. Gérez la déconnexion

    Déconnecte votre site, puis pismile, et revient sur votre page d'accueil.

    logout.php
    <?php
    require __DIR__ . '/config.php';
    
    $idToken = $_SESSION['id_token'] ?? null;
    $_SESSION = [];
    session_destroy();
    
    if ($idToken) {
        pismile()->signOut($idToken, 'http://localhost:8000/');
    }
    header('Location: /');
  6. Testez

    Terminal
    PISMILE_CLIENT_SECRET=votre_secret php -S localhost:8000

    Ouvrez http://localhost:8000, connectez-vous avec un alias de test du sandbox BCEAO et confirmez la demande dans le playground.

Cette page vous a-t-elle aidé ?