Autorisierung mit Permit.io einrichten
Permit.io ist eine Autorisierungsplattform, die eine feingranulare Zugangskontrolle für Anwendungen bereitstellt. Du kannst Logto zusammen mit Permit.io verwenden, um die Benutzer-Authentifizierung und -Autorisierung zu verwalten.
Um die wichtigsten Unterschiede zwischen Authentifizierung (Authentication) und Autorisierung (Authorization) zu verstehen, siehe Authentifizierung vs. Autorisierung.
Diese Anleitung zeigt dir, wie du Logto mit Permit.io verbindest, um Autorisierung in deiner Anwendung zu implementieren.
Voraussetzungen
- Ein Logto Cloud Konto oder ein selbst gehostetes Logto.
- Eine Next.js-Anwendung mit bereits eingerichteter Logto-Authentifizierung (folge unserer Next.js-Anleitung, falls noch nicht geschehen)
- Ein Permit.io Konto. Folge der offiziellen Permit.io Quickstart-Anleitung, um dein Permit.io-Projekt einzurichten, bevor du fortfährst.
Integration
Permit.io SDK installieren
Füge das Permit.io SDK zu deiner Anwendung hinzu:
npm install permitio
Ein Permit.io-Projekt erstellen
- Registriere dich für ein kostenloses Konto unter permit.io
- Erstelle ein neues Projekt und erhalte deinen API-Schlüssel
- Füge den API-Schlüssel zu deinen Umgebungsvariablen hinzu:
PERMIT_API_KEY=dein-permit-api-key
Permit.io-Client einrichten
Erstelle eine Datei, um die Permit.io-Integration zu verwalten:
// libraries/permit.js
const { Permit } = require('permitio');
// Initialisiere den Permit.io-Client
const permit = new Permit({
pdp: 'https://cloudpdp.api.permit.io',
token: 'dein-permitio-api-key',
});
// Synchronisiere einen Benutzer mit Permit.io
export const syncUserToPermit = async (userId, email, firstName, lastName, role = 'viewer') => {
// Zuerst den Benutzer synchronisieren
await permit.api.syncUser({
key: userId,
email: email || undefined,
first_name: firstName || undefined,
last_name: lastName || undefined,
});
// Dann dem Benutzer eine Rolle zuweisen
await permit.api.assignRole({
user: userId,
role: role,
tenant: 'default',
});
return true;
};
Logto Webhook für Benutzerregistrierung erstellen
Logto stellt Webhooks bereit, die deine Anwendung benachrichtigen können, wenn Ereignisse auftreten. Wir verwenden den PostRegister
-Webhook, um Benutzer zu Permit.io zu synchronisieren, wenn sie sich registrieren.
Erstelle einen Webhook-Endpunkt in deiner Anwendung:
// pages/api/webhooks/logto.js
import { syncUserToPermit } from '../../../libraries/permit';
export default async function handler(req, res) {
// Protokolliere die Webhook-Nutzlast zum Debuggen
console.log('Webhook payload:', req.body);
const { event, user } = req.body;
// Verarbeite Benutzerregistrierungs-Ereignisse
if (event === 'PostRegister') {
try {
// Bestimme die Rolle des Benutzers (du kannst hier deine eigene Logik implementieren)
let role = 'viewer'; // Standardrolle
// Synchronisiere den Benutzer mit Permit.io
await syncUserToPermit(user.id, user.primaryEmail, user.name, undefined, role);
return res.status(200).json({ success: true });
} catch (error) {
console.error('Fehler beim Synchronisieren des Benutzers:', error);
return res.status(500).json({ error: 'Benutzer konnte nicht synchronisiert werden' });
}
}
return res.status(200).json({ message: 'Ereignis ignoriert' });
}
Webhook in der Logto Console konfigurieren
- Gehe zum Bereich Webhooks in deiner Logto Console
- Klicke auf "Webhook erstellen"
- Gib deinem Webhook einen Namen
- Gib deine Endpunkt-URL ein (z. B.
https://deine-app.com/api/webhooks/logto
) - Wähle das
PostRegister
-Ereignis aus - Speichere den Webhook
Für die lokale Entwicklung kannst du Tools wie ngrok verwenden, um deinen lokalen Server im Internet verfügbar zu machen.
Benutzersynchronisierung testen
Um zu testen, ob Benutzer korrekt synchronisiert werden:
- Erstelle ein neues Benutzerkonto in deiner Anwendung
- Überprüfe im Permit.io-Dashboard unter "Directory" → "Users", ob der Benutzer synchronisiert wurde
- Überprüfe, ob dem Benutzer beim Anmelden die richtige Rolle zugewiesen wurde

Permit.io für Autorisierung verwenden
Sobald Benutzer synchronisiert sind, kannst du Permit.io verwenden, um Berechtigungen zu prüfen:
// Beispiel für das Prüfen einer Berechtigung
const isPermitted = await permit.check(userId, 'view', 'reports');
if (isPermitted) {
// Benutzer darf auf Ressourcen zugreifen
// Zeige das Ressourcen-UI an
} else {
// Benutzer darf nicht auf Ressourcen zugreifen
// Zeige eine Zugriff verweigert-Nachricht an
}
Fazit
Du hast Logto erfolgreich mit Permit.io verbunden, um Benutzer automatisch zu synchronisieren und Autorisierung in deiner Anwendung zu implementieren. Mit dieser Integration gilt:
- Benutzer authentifizieren sich über Logto
- Neue Benutzer werden automatisch per Webhook zu Permit.io synchronisiert
- Du kannst Permit.io verwenden, um Berechtigungen zu prüfen und Zugangskontrolle umzusetzen
Dieses Setup bietet eine solide Grundlage, um fortgeschrittenere Autorisierungsmuster zu implementieren, während deine Anwendung wächst.
Für weiterführende Anwendungsfälle zur Autorisierung, sieh dir die Permit.io-Dokumentation zum Erstellen von Richtlinien, Erzwingen von Berechtigungen und zur Umsetzung von rollenbasierter Zugangskontrolle (RBAC) an.