Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ description: Entdecke, wie Logto dir helfen kann, sichere, KI-gestützte Erfahru
---

import Catalog from './fragments/_catalog.mdx';
import ExploreAiSolutions from './fragments/_explore-ai-solutions.mdx';

# KI-Integrationsanwendungsfälle mit Logto

<ExploreAiSolutions />

<Catalog />
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,26 @@ sidebar_position: 4
sidebar_label: Verbinde deinen Agenten mit Drittanbieter-APIs
---

import ExploreAiSolutions from './fragments/_explore-ai-solutions.mdx';

# Verbinde deinen KI-Agenten mit Drittanbieter-APIs

Diese Anleitung führt dich durch die Aktivierung deines KI-Agenten, damit er im Namen der Benutzer auf Drittanbieter-APIs (z. B. Google Kalender, GitHub usw.) zugreifen kann. Durch die Nutzung von Logtos Social Connectors und dem Secret Vault kannst du Zugangstokens sicher speichern und verwalten, sodass dein Agent automatisierte Aufgaben ausführen kann, ohne die Benutzer wiederholt zur erneuten Authentifizierung aufzufordern.
<ExploreAiSolutions />

Diese Anleitung führt dich durch die Aktivierung des Zugriffs deines KI-Agenten auf Drittanbieter-APIs (z. B. Google Kalender, GitHub usw.) im Namen der Benutzer. Durch die Nutzung von Logtos Social Connectors und dem Secret Vault kannst du Zugangstokens sicher speichern und verwalten, sodass dein Agent automatisierte Aufgaben ausführen kann, ohne die Benutzer wiederholt zur erneuten Authentifizierung aufzufordern.

Du lernst, wie du:

- Social Connectors mit Drittanbieter-Token-Speicherung konfigurierst.
- Minimale Berechtigungen während der ersten Anmeldung anforderst.
- Schrittweise zusätzliche Berechtigungen bei Bedarf anforderst.
- Schrittweise zusätzliche Berechtigungen nach Bedarf anforderst.
- Gespeicherte Tokens abrufst und verwendest, um auf Drittanbieter-APIs zuzugreifen.

## Warum dein KI-Agent Zugriff auf Drittanbieter-APIs benötigt \{#why-your-ai-agent-needs-third-party-api-access}

KI-Agenten werden zunehmend eingesetzt, um Aufgaben zu automatisieren, die eine Interaktion mit externen Diensten erfordern. Zum Beispiel:

- **📅 Kalenderverwaltung**: Dein KI-Agent kann automatisch Meetings planen, Termine hinzufügen oder Termine im Google Kalender anpassen.
- **📅 Kalenderverwaltung**: Dein KI-Agent kann automatisch Meetings planen, Ereignisse hinzufügen oder Termine im Google Kalender anpassen.
- **📧 E-Mail-Automatisierung**: Folge-E-Mails senden, Posteingänge organisieren oder Antworten mit Gmail-APIs entwerfen.
- **💻 Codeverwaltung**: GitHub-Issues erstellen, Pull Requests prüfen oder Repositories verwalten.
- **📁 Dateiverwaltung**: Dateien auf Google Drive oder Dropbox hochladen, organisieren oder teilen.
Expand All @@ -40,14 +44,14 @@ sequenceDiagram
Note over User, Google: Benutzer erteilt Berechtigungen an Drittanbieter
User->>Agent: "Füge morgen um 15 Uhr ein Meeting zu meinem Kalender hinzu"
Agent->>User: Benötigt Zugriff auf Google Kalender, bitte autorisieren
User->>Agent: Google-Autorisierung starten
Agent->>Logto: Soziale Verifizierung starten
User->>Agent: Starte Google-Autorisierung
Agent->>Logto: Starte soziale Verifizierung
Logto->>Google: Weiterleitung zu Google
User->>Google: Authentifizieren und Berechtigungen erteilen
Google->>Logto: Autorisierungscode zurückgeben
Logto->>Google: Code gegen Tokens tauschen
Google->>Logto: Rückgabe des Autorisierungscodes
Logto->>Google: Tausche Code gegen Tokens
Logto->>Logto: Tokens im Secret Vault speichern
Logto->>Agent: Verifizierungsergebnis zurückgeben
Logto->>Agent: Rückgabe des Verifizierungsergebnisses
end

rect rgba(200, 200, 230, 0.5)
Expand All @@ -73,7 +77,7 @@ Bevor du beginnst, stelle sicher, dass du Folgendes hast:

- Einen [Logto Cloud](https://cloud.logto.io) (oder selbst gehosteten Logto v1.31+) Mandanten
- Ein Drittanbieter-Konto mit API-Zugriff (z. B. [Google Cloud Console](https://console.cloud.google.com))
- Eine KI-Agenten-Anwendung, die mit dem Logto SDK integriert ist (Benutzer können sich bei deinem KI-Agenten anmelden)
- Eine KI-Agenten-Anwendung, die mit Logto SDK integriert ist (Benutzer können sich bei deinem KI-Agenten anmelden)

## Social Connector mit Token-Speicherung einrichten \{#set-up-social-connector-with-token-storage}

Expand All @@ -91,7 +95,7 @@ Nehmen wir Google als Beispiel:
5. Speichere deine Änderungen.

:::info
Du musst diesen Connector nicht zu deiner Anmeldeerfahrung hinzufügen. Der Connector wird für bedarfsorientierte Autorisierung verwendet, wenn dein KI-Agent auf Drittanbieter-APIs zugreifen muss, nicht für die Benutzeranmeldung.
Du musst diesen Connector nicht zu deiner Anmeldeerfahrung hinzufügen. Der Connector wird für die bedarfsorientierte Autorisierung verwendet, wenn dein KI-Agent auf Drittanbieter-APIs zugreifen muss, nicht für die Benutzeranmeldung.
:::

## Autorisierung anfordern und auf Drittanbieter-APIs zugreifen \{#request-authorization-and-access-third-party-apis}
Expand Down Expand Up @@ -123,15 +127,15 @@ async function getGoogleAccessToken(userAccessToken: string) {

### Schritt 2: Autorisierung anfordern, falls erforderlich \{#step-2-request-authorization-if-needed}

Wenn kein Token existiert, das Token abgelaufen ist oder du den Geltungsbereich des Zugangstokens erweitern musst, verwende Logtos [Social Verification API](/secret-vault/federated-token-set#reauthentication-and-token-renewal), um den Autorisierungsablauf zu starten:
Wenn kein Token existiert, das Token abgelaufen ist oder du den Scope des Zugangstokens erweitern musst, verwende Logtos [Social Verification API](/secret-vault/federated-token-set#reauthentication-and-token-renewal), um den Autorisierungsablauf zu starten:

```tsx
async function requestGoogleAuthorization(userAccessToken: string, scopes: string) {
// Generiere einen zufälligen State zum CSRF-Schutz
const state = crypto.randomUUID();
sessionStorage.setItem('oauth_state', state);

// Soziale Verifizierung starten
// Starte soziale Verifizierung
const response = await fetch('https://[tenant-id].logto.app/api/verification/social', {
method: 'POST',
headers: {
Expand All @@ -148,15 +152,15 @@ async function requestGoogleAuthorization(userAccessToken: string, scopes: strin

const { verificationRecordId, authorizationUri } = await response.json();

// verificationRecordId für später speichern
// Speichere verificationRecordId für die spätere Verwendung
sessionStorage.setItem('verificationRecordId', verificationRecordId);

// Benutzer zur Google-Autorisierung weiterleiten
// Leite Benutzer zu Google zur Autorisierung weiter
window.location.href = authorizationUri;
}
```

### Schritt 3: Den Autorisierungs-Callback behandeln \{#step-3-handle-the-authorization-callback}
### Schritt 3: Den Autorisierungs-Callback verarbeiten \{#step-3-handle-the-authorization-callback}

Nachdem der Benutzer Berechtigungen erteilt hat, leitet Google zurück zu deiner App. Schließe die Verifizierung ab und speichere die Tokens:

Expand All @@ -170,7 +174,7 @@ async function handleAuthorizationCallback(
const code = callbackParams.get('code');
const state = callbackParams.get('state');

// State validieren, um CSRF-Angriffe zu verhindern
// Überprüfe den State zum Schutz vor CSRF-Angriffen
if (state !== storedState) {
throw new Error('Ungültiger State-Parameter');
}
Expand Down Expand Up @@ -220,15 +224,15 @@ async function addCalendarEvent(userAccessToken: string, eventDetails: EventDeta
const tokenData = await getGoogleAccessToken(userAccessToken);

if (!tokenData) {
// Benutzer hat nicht autorisiert, Autorisierung mit Kalender-Berechtigung anfordern
// Benutzer hat nicht autorisiert, fordere Autorisierung mit Kalender-Scope an
await requestGoogleAuthorization(
userAccessToken,
'https://www.googleapis.com/auth/calendar.events'
);
return; // Wird nach der Weiterleitung fortgesetzt
}

// Die Google Kalender API aufrufen
// Google Kalender API aufrufen
const response = await fetch('https://www.googleapis.com/calendar/v3/calendars/primary/events', {
method: 'POST',
headers: {
Expand All @@ -242,26 +246,26 @@ async function addCalendarEvent(userAccessToken: string, eventDetails: EventDeta
}
```

Logto übernimmt die Token-Erneuerung automatisch. Wenn das Zugangstoken abgelaufen ist, aber ein Auffrischungstoken existiert, wird Logto beim nächsten Abruf automatisch ein neues Zugangstoken erhalten.
Logto übernimmt die Token-Aktualisierung automatisch. Wenn das Zugangstoken abgelaufen ist, aber ein Auffrischungstoken existiert, erhält Logto beim nächsten Abrufaufruf transparent ein neues Zugangstoken.

## Zusätzliche Berechtigungen anfordern \{#request-additional-permissions}

Wenn dein KI-Agent mehr Aufgaben übernimmt, musst du möglicherweise zusätzliche Berechtigungen anfordern. Wenn der Benutzer beispielsweise zunächst nur Lesezugriff auf den Kalender autorisiert hat, jetzt aber Termine erstellen möchte, benötigst du Schreibberechtigungen.
Wenn dein KI-Agent mehr Aufgaben übernimmt, musst du möglicherweise zusätzliche Berechtigungen anfordern. Wenn der Benutzer beispielsweise zunächst nur Lesezugriff auf den Kalender autorisiert hat, jetzt aber Ereignisse erstellen möchte, benötigst du Schreibberechtigungen.

### Warum inkrementelle Autorisierung? \{#why-incremental-authorization}

- **Bessere Benutzererfahrung**: Benutzer sind eher bereit, Berechtigungen zu erteilen, wenn sie verstehen, warum sie im Kontext benötigt werden.
- **Höhere Konversionsraten**: Weniger Berechtigungen zu Beginn bedeuten weniger Reibung.
- **Vertrauensaufbau**: Benutzer vertrauen Anwendungen, die nur das anfordern, was sie wirklich benötigen.
- **Bessere Benutzererfahrung**: Benutzer erteilen Berechtigungen eher, wenn sie verstehen, warum sie im Kontext benötigt werden.
- **Höhere Konversionsraten**: Weniger Berechtigungen im Voraus bedeuten weniger Reibung.
- **Vertrauensaufbau**: Benutzer vertrauen Anwendungen, die nur das anfordern, was sie wirklich brauchen.

### Beispiel: Von Lese- zu Schreibzugriff wechseln \{#example-upgrading-from-read-to-write-access}
### Beispiel: Von Lese- auf Schreibzugriff upgraden \{#example-upgrading-from-read-to-write-access}

```tsx
async function createCalendarEvent(userAccessToken: string, eventDetails: EventDetails) {
const tokenData = await getGoogleAccessToken(userAccessToken);

if (!tokenData) {
// Noch keine Autorisierung, Kalender-Schreibberechtigung direkt anfordern
// Noch keine Autorisierung, fordere direkt Kalender-Schreibberechtigung an
await requestGoogleAuthorization(userAccessToken, 'https://www.googleapis.com/auth/calendar');
return;
}
Expand All @@ -277,10 +281,10 @@ async function createCalendarEvent(userAccessToken: string, eventDetails: EventD
});

if (response.status === 403) {
// Unzureichende Berechtigungen, zusätzlichen Geltungsbereich anfordern
// Unzureichende Berechtigungen, fordere zusätzlichen Scope an
await requestGoogleAuthorization(
userAccessToken,
'https://www.googleapis.com/auth/calendar' // Vollständiger Kalenderzugriff
'https://www.googleapis.com/auth/calendar' // Voller Kalenderzugriff
);
return;
}
Expand All @@ -290,17 +294,17 @@ async function createCalendarEvent(userAccessToken: string, eventDetails: EventD
```

:::tip
Wenn zusätzliche Geltungsbereiche angefordert werden, sieht der Benutzer einen Zustimmungsbildschirm (Consent screen), auf dem nur die neuen Berechtigungen angezeigt werden. Bestehende Berechtigungen bleiben erhalten.
Wenn zusätzliche Scopes angefordert werden, sieht der Benutzer einen Zustimmungsbildschirm (Consent screen), auf dem nur die neuen Berechtigungen angezeigt werden. Bestehende Berechtigungen bleiben erhalten.
:::

## Tokenstatus verwalten \{#manage-token-status}
## Token-Status verwalten \{#manage-token-status}

Die Logto-Konsole bietet Einblick in den Tokenstatus für jeden Benutzer:
Die Logto-Konsole bietet Einblick in den Token-Status für jeden Benutzer:

1. Navigiere zu <CloudLink to="/users">Konsole > Benutzerverwaltung</CloudLink>.
2. Klicke auf einen Benutzer, um dessen Details anzuzeigen.
3. Scrolle zum Abschnitt **Verbindungen**, um alle verknüpften Social Accounts zu sehen.
4. Jede Verbindung zeigt den Tokenstatus an:
4. Jede Verbindung zeigt den Token-Status an:
- **Aktiv**: Das Zugangstoken ist gültig und einsatzbereit.
- **Abgelaufen**: Das Zugangstoken ist abgelaufen. Wenn ein Auffrischungstoken existiert, wird es beim nächsten Abruf automatisch erneuert.
- **Inaktiv**: Für diese Verbindung sind keine Tokens gespeichert.
Expand All @@ -309,11 +313,11 @@ Die Logto-Konsole bietet Einblick in den Tokenstatus für jeden Benutzer:

Wenn du KI-Agenten entwickelst, die auf Drittanbieter-APIs zugreifen, beachte diese Sicherheitspraktiken:

- **Fordere minimale Geltungsbereiche an**: Fordere nur die Berechtigungen an, die dein Agent tatsächlich benötigt.
- **Nutze inkrementelle Autorisierung**: Fordere zusätzliche Berechtigungen im Kontext an, nicht alle auf einmal.
- **Fordere minimale Scopes an**: Fordere nur die Berechtigungen an, die dein Agent tatsächlich benötigt.
- **Verwende inkrementelle Autorisierung**: Fordere zusätzliche Berechtigungen im Kontext an, nicht alle auf einmal.
- **Gehe mit Token-Ablauf elegant um**: Behandle immer Fälle, in denen Tokens abgelaufen oder widerrufen sein könnten.
- **Schütze Benutzer-Zugangstokens**: Das Logto-Zugangstoken des Benutzers ist der Schlüssel zum Abruf von Drittanbieter-Tokens. Schütze es entsprechend.
- **API-Zugriffe protokollieren**: Protokolliere, wann dein KI-Agent auf Drittanbieter-APIs zugreift, zur Fehlerbehebung und für Compliance-Zwecke.
- **Sichere Benutzer-Zugangstokens**: Das Logto-Zugangstoken des Benutzers ist der Schlüssel zum Abruf von Drittanbieter-Tokens. Schütze es entsprechend.
- **API-Zugriffe auditieren**: Protokolliere, wann dein KI-Agent auf Drittanbieter-APIs zugreift, für Fehlerbehebung und Compliance.

## Verwandte Ressourcen \{#related-resources}

Expand Down
Loading
Loading