---
title: "Security & Authentication Proxy"
description: "Absicherung auf meinGPT-Verbindungen und sichere Weitergabe von Nutzerkontext"
canonical_url: "https://meingpt.com/docs/integrations/custom-ai-apps/security-auth-proxy"
language: de
---

# Security & Authentication Proxy

## Zielbild

Deine App akzeptiert nur Requests, die über meinGPT kommen, und nutzt meinGPT als vertrauenswürdigen Auth-Proxy.

## Quick Start

**Token empfangen** - Der JWT wird im URL-Hash übergeben:
```javascript
const token = new URLSearchParams(window.location.hash.slice(1)).get('token');
```

**Token verifizieren** - Prüfe Signatur und Claims serverseitig über den JWKS-Endpunkt.

**Ablauf beachten** - Tokens laufen nach 1 Stunde ab; Refresh erfolgt per `postMessage`.

## Pflichtchecks in deiner App

- JWT-Signatur über JWKS verifizieren
- `iss` auf meinGPT prüfen
- `aud` auf erwartete `organizationId` prüfen
- `exp`/`iat` validieren
- Requests ohne validen Token ablehnen

JWKS-Endpunkt:

`https://app.meingpt.com/api/custom-apps/v1/jwks/{organizationId}`

## Relevante JWT-Claims

| Claim | Beschreibung |
|---|---|
| `iss` | immer `https://app.meingpt.com` |
| `sub` | eindeutige Nutzer-ID |
| `aud` | Organisations-ID |
| `exp` / `iat` | Ablauf- und Ausstellungszeit |
| `email`, `username` | Nutzeridentität |
| `role`, `teams` | Rollen-/Teamkontext für Autorisierung |

Das allgemeine, produktübergreifende Muster findest Du unter [JWT Identity Forwarding](/docs/integrations/jwt-identity-forwarding).

## Nur meinGPT als Einbettungsquelle erlauben

Setze CSP für dein Frontend:

```http
Content-Security-Policy: frame-ancestors https://app.meingpt.com;
```

Optional mit weiteren erlaubten Domains (z. B. regionale Hostnamen), falls bei euch verwendet.

## Proxy-Prinzip für Dritt-APIs

- API-Keys bleiben serverseitig in deiner App
- Frontend ruft nur deine Backend-Endpunkte
- Backend setzt Berechtigungen anhand der meinGPT-JWT-Claims durch

Damit fungiert meinGPT als Identity-Quelle und dein Backend als Policy-Enforcer.

## Minimal-Middleware (Node/Express)

```javascript

const JWKS = jose.createRemoteJWKSet(
  new URL('https://app.meingpt.com/api/custom-apps/v1/jwks/<ORG_ID>')
);

export async function requireMeinGPTAuth(req, res, next) {
  try {
    const token = req.headers.authorization?.replace('Bearer ', '');
    if (!token) return res.status(401).json({ error: 'Missing token' });

const { payload } = await jose.jwtVerify(token, JWKS, {
  issuer: 'https://app.meingpt.com',
  audience: '<ORG_ID>',
});

    req.user = payload;
    next();
  } catch {
    res.status(401).json({ error: 'Invalid token' });
  }
}
```

## Verwandte Doku

- [Identity Forwarding](/docs/integrations/jwt-identity-forwarding)
