Mettre en place l’autorisation avec Permit.io
Permit.io est une plateforme d’autorisation qui fournit un contrôle d’accès granulaire pour les applications. Vous pouvez utiliser Logto conjointement avec Permit.io pour gérer l’authentification et l’autorisation des utilisateurs.
Pour comprendre les différences clés entre authentification et autorisation, consultez Authentification vs. autorisation.
Ce guide vous montrera comment connecter Logto avec Permit.io pour mettre en œuvre l’autorisation dans votre application.
Prérequis
- Un compte Logto Cloud ou une instance Logto auto-hébergée.
- Une application Next.js avec l’authentification Logto déjà configurée (suivez notre guide Next.js si ce n’est pas déjà fait)
- Un compte Permit.io. Suivez le guide de démarrage rapide officiel de Permit.io pour configurer votre projet Permit.io avant de continuer.
Intégration
Installer le SDK Permit.io
Ajoutez le SDK Permit.io à votre application :
npm install permitio
Créer un projet Permit.io
- Inscrivez-vous pour un compte gratuit sur permit.io
- Créez un nouveau projet et obtenez votre clé API
- Ajoutez la clé API à vos variables d’environnement :
PERMIT_API_KEY=your-permit-api-key
Configurer le client Permit.io
Créez un fichier pour gérer l’intégration Permit.io :
// libraries/permit.js
const { Permit } = require('permitio');
// Initialisez le client Permit.io
const permit = new Permit({
pdp: 'https://cloudpdp.api.permit.io',
token: 'your-permitio-api-key',
});
// Synchronisez un utilisateur avec Permit.io
export const syncUserToPermit = async (userId, email, firstName, lastName, role = 'viewer') => {
// D’abord, synchronisez l’utilisateur
await permit.api.syncUser({
key: userId,
email: email || undefined,
first_name: firstName || undefined,
last_name: lastName || undefined,
});
// Puis assignez un rôle à l’utilisateur
await permit.api.assignRole({
user: userId,
role: role,
tenant: 'default',
});
return true;
};
Créer un webhook Logto pour l’enregistrement des utilisateurs
Logto fournit des webhooks qui peuvent notifier votre application lorsqu’un événement se produit. Nous utiliserons le webhook PostRegister
pour synchroniser les utilisateurs avec Permit.io lors de leur inscription.
Créez un endpoint webhook dans votre application :
// pages/api/webhooks/logto.js
import { syncUserToPermit } from '../../../libraries/permit';
export default async function handler(req, res) {
// Affichez la charge utile du webhook pour le débogage
console.log('Webhook payload:', req.body);
const { event, user } = req.body;
// Traitez les événements d’enregistrement utilisateur
if (event === 'PostRegister') {
try {
// Déterminez le rôle de l’utilisateur (vous pouvez implémenter votre propre logique ici)
let role = 'viewer'; // Rôle par défaut
// Synchronisez l’utilisateur avec Permit.io
await syncUserToPermit(user.id, user.primaryEmail, user.name, undefined, role);
return res.status(200).json({ success: true });
} catch (error) {
console.error('Erreur lors de la synchronisation de l’utilisateur :', error);
return res.status(500).json({ error: 'Échec de la synchronisation de l’utilisateur' });
}
}
return res.status(200).json({ message: 'Événement ignoré' });
}
Configurer le webhook dans la Console Logto
- Accédez à la section Webhooks dans votre Console Logto
- Cliquez sur "Créer un webhook"
- Donnez un nom à votre webhook
- Saisissez l’URL de votre endpoint (par exemple,
https://your-app.com/api/webhooks/logto
) - Sélectionnez l’événement
PostRegister
- Enregistrez le webhook
Pour le développement local, vous pouvez utiliser des outils comme ngrok pour exposer votre serveur local à Internet.
Tester la synchronisation des utilisateurs
Pour tester que les utilisateurs sont correctement synchronisés :
- Créez un nouveau compte utilisateur dans votre application
- Vérifiez dans le tableau de bord Permit.io sous "Directory" → "Users" que l’utilisateur a bien été synchronisé
- Vérifiez que le bon rôle a été attribué à l’utilisateur lors de l’inscription

Utiliser Permit.io pour l’autorisation
Une fois les utilisateurs synchronisés, vous pouvez utiliser Permit.io pour vérifier les permissions :
// Exemple de vérification d’une permission
const isPermitted = await permit.check(userId, 'view', 'reports');
if (isPermitted) {
// L’utilisateur est autorisé à voir les ressources
// Affichez l’interface des ressources
} else {
// L’utilisateur n’est pas autorisé à voir les ressources
// Affichez un message d’accès refusé
}
Conclusion
Vous avez connecté Logto avec Permit.io pour synchroniser automatiquement les utilisateurs et mettre en place l’autorisation dans votre application. Avec cette intégration :
- Les utilisateurs s’authentifient via Logto
- Les nouveaux utilisateurs sont automatiquement synchronisés avec Permit.io via les webhooks
- Vous pouvez utiliser Permit.io pour vérifier les permissions et mettre en œuvre le contrôle d’accès
Cette configuration offre une base solide pour la mise en place de modèles d’autorisation plus avancés à mesure que votre application évolue.
Pour des cas d’usage d’autorisation plus avancés, explorez la documentation de Permit.io sur la création de politiques, l’application des permissions et la mise en œuvre du contrôle d’accès basé sur les rôles.