Zum Hauptinhalt springen

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.

tipp:

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

Integration

Permit.io SDK installieren

Füge das Permit.io SDK zu deiner Anwendung hinzu:

npm install permitio

Ein Permit.io-Projekt erstellen

  1. Registriere dich für ein kostenloses Konto unter permit.io
  2. Erstelle ein neues Projekt und erhalte deinen API-Schlüssel
  3. 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

  1. Gehe zum Bereich Webhooks in deiner Logto Console
  2. Klicke auf "Webhook erstellen"
  3. Gib deinem Webhook einen Namen
  4. Gib deine Endpunkt-URL ein (z. B. https://deine-app.com/api/webhooks/logto)
  5. Wähle das PostRegister-Ereignis aus
  6. Speichere den Webhook
hinweis:

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:

  1. Erstelle ein neues Benutzerkonto in deiner Anwendung
  2. Überprüfe im Permit.io-Dashboard unter "Directory" → "Users", ob der Benutzer synchronisiert wurde
  3. Überprüfe, ob dem Benutzer beim Anmelden die richtige Rolle zugewiesen wurde
Logto-Benutzer, die mit Permit.io und Rollenzuweisungen synchronisiert wurden

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:

  1. Benutzer authentifizieren sich über Logto
  2. Neue Benutzer werden automatisch per Webhook zu Permit.io synchronisiert
  3. 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.