# Authentifizierung: OAuth 2.1, API-Keys, Multi-User

> ToolMesh authentifiziert KI-Clients per OAuth 2.1 PKCE, bcrypt-API-Keys oder Single-User-Passwort. Dokumentiert config/users.yaml, DCR-Limits, Identity-Flow.

Canonical: https://www.toolmesh.io/de/authentication/

ToolMesh bietet ein produktionsreifes Authentifizierungssystem mit mehreren Modi — von einfachen Single-User-Setups bis hin zu vollem Multi-User-OAuth.

## Authentifizierungsmodi

### Simple (Single-User)

Schnellstart mit Umgebungsvariablen:

```bash
TOOLMESH_AUTH_PASSWORD=changeme   # Single-User-OAuth-Passwort
TOOLMESH_API_KEY=sk-my-key        # Statischer API-Key
```

### Multi-User OAuth 2.1

Vollständiges OAuth 2.1 mit PKCE S256 für interaktiven Login:

- Benutzer in `config/users.yaml` definiert (bcrypt-gehashte Passwörter)
- Jeder Benutzer hat: Username, Company, Plan, Roles
- Dynamic Client Registration (DCR), ratenlimitiert (5/Stunde/IP)
- Redis/KeyDB für State-Persistenz (Tokens, Auth-Codes, Client-Registrierungen)

```yaml
# config/users.yaml
users:
  - username: alice
    password: "$2a$12$..."  # bcrypt-Hash
    company: acme
    plan: pro
    roles: [admin]
```

### API-Keys

Für programmatischen Zugriff:

```yaml
# config/apikeys.yaml
keys:
  - key_hash: "$2a$12$..."  # bcrypt-Hash
    username: ci-bot
    company: acme
    plan: standard
    roles: [read]
    caller_id: github-actions
```

Jeder API-Key trägt seine eigene Identität (User, Company, Plan, Roles), die durch die gesamte Pipeline fließt.

## Identitätsfluss

Die authentifizierte Identität fließt durch jeden Schritt:

```
Authentication → CallerID → OpenFGA AuthZ → Credential Store → Audit Trail
```

Das stellt volle Nachvollziehbarkeit sicher: Jeder Tool-Call wird einem bestimmten Benutzer zugeordnet, mit einem bestimmten Plan, von einem bestimmten Client.

## Migrationspfad

Starte mit `TOOLMESH_AUTH_PASSWORD` für schnelles Prototyping. Wenn mehrere Benutzer benötigt werden, wechsle zu `users.yaml` — keine Architekturänderung nötig. Die gleiche Pipeline verarbeitet beide Modi.
