# Webhook Authorization Header - Anleitung

Der Webhook unterstützt **zwei Authentifizierungsmethoden**:

1. **Signature-Verification** (Standard, von Gitea)
2. **Authorization Header** (Optional, zusätzliche Sicherheit)

## Option 1: Nur Signature (Standard)

Das ist die Standard-Methode, die Gitea automatisch verwendet:

### Konfiguration

In `server/.env`:
```bash
GITEA_WEBHOOK_SECRET=dein_secret_hier
```

### In Gitea

- **Secret:** Trage das gleiche Secret ein
- **Authorization Header:** Nicht nötig

Gitea sendet automatisch den `X-Gitea-Signature` Header.

## Option 2: Authorization Header (Zusätzliche Sicherheit)

Falls du zusätzliche Sicherheit möchtest oder den Webhook manuell aufrufst:

### Schritt 1: Token generieren

```bash
node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
```

### Schritt 2: Server konfigurieren

In `server/.env`:
```bash
GITEA_WEBHOOK_SECRET=dein_secret_hier
GITEA_WEBHOOK_AUTH_TOKEN=dein_auth_token_hier
```

### Schritt 3: In Gitea konfigurieren

Gitea unterstützt **keine** Authorization Header direkt, aber du kannst:

#### Option A: Nur Signature verwenden (empfohlen)
- Lass `GITEA_WEBHOOK_AUTH_TOKEN` leer
- Nur `GITEA_WEBHOOK_SECRET` verwenden

#### Option B: Manuelle Webhook-Aufrufe
Wenn du den Webhook manuell aufrufst (z.B. via curl), verwende:

```bash
curl -X POST https://emailsorter.webklar.com/api/webhook/gitea \
  -H "Content-Type: application/json" \
  -H "X-Gitea-Signature: sha256=..." \
  -H "Authorization: Bearer dein_auth_token_hier" \
  -d '{"ref":"refs/heads/main",...}'
```

## Option 3: Beide Methoden kombinieren

Für maximale Sicherheit kannst du beide verwenden:

```bash
# In server/.env
GITEA_WEBHOOK_SECRET=secret_fuer_signature
GITEA_WEBHOOK_AUTH_TOKEN=token_fuer_auth_header
```

**Verhalten:**
- Wenn beide gesetzt sind, müssen **beide** passen
- Wenn nur eine gesetzt ist, reicht diese

## Empfehlung

**Für Gitea-Webhooks:** Verwende nur `GITEA_WEBHOOK_SECRET` (Signature)

**Für manuelle Aufrufe:** Verwende `GITEA_WEBHOOK_AUTH_TOKEN` (Authorization Header)

**Für maximale Sicherheit:** Verwende beide
