Skip to content

Authentifizierungs-API

ENTWURF — Nur für interne Entwickler

Diese API-Referenz ist für interne Entwicklungsteams bestimmt.

Übersicht

Was es ist: Die Authentifizierungs-API bietet tokenbasierten Zugriff auf alle Discovery-Endpunkte. Je nach Integrationstyp stehen drei Methoden zur Verfügung.

Warum es wichtig ist: Jeder API-Aufruf erfordert ein gültiges Token. Service-zu-Service-Integrationen wie Hydden Control verwenden API-Anmeldeinformationen, während interaktive Sitzungen OTP oder OAuth nutzen können.

Endpunkte

Token-Generierung

MethodePfadBeschreibungAuthentifizierung erforderlich
POST/auth/apiAuthentifizierung mit API-AnmeldeinformationenKeine (Anmeldeinformationen im Body)
POST/auth/otpAuthentifizierung mit EinmalpasswortKeine (Anmeldeinformationen im Body)
POST/oauth/tokenOAuth 2.0-Token-EndpunktBasic-Auth-Header

Token-Verwaltung

MethodePfadBeschreibungAuthentifizierung erforderlich
GET/internal/v1/token/renewEin ablaufendes Zugriffstoken erneuernJWT-Cookie
GET/internal/v1/user/infoInformationen zum aktuell authentifizierten Benutzer abrufenJWT-Cookie
GET/internal/v1/versionAPI-Version abrufenJWT-Cookie
GET/internal/v1/featuresAktivierte Feature-Flags abrufenJWT-Cookie

OIDC-Provider-Verwaltung

MethodePfadBeschreibungAuthentifizierung erforderlich
GET/internal/v1/oidc/providersOIDC-Provider auflistenJWT-Cookie
GET/internal/v1/oidc/registrationRegistrierungsstatus abrufenJWT-Cookie
POST/internal/v1/oidc/registration/acceptOIDC-Registrierung akzeptierenJWT-Cookie
POST/internal/v1/oidc/registration/rejectOIDC-Registrierung ablehnenJWT-Cookie
GET/internal/v1/oidc/registration/joinOIDC-Registrierungs-BeitrittsablaufJWT-Cookie

Zugriffskontrolle

MethodePfadBeschreibungAuthentifizierung erforderlich
GET/internal/v1/access/roleAktuelle Benutzerrolle und Berechtigungen abrufenJWT-Cookie
GET/internal/v1/access/role/*actionBerechtigung für eine bestimmte Aktion prüfenJWT-Cookie

Nonce

MethodePfadBeschreibungAuthentifizierung erforderlich
GET/auth/nonce/:nonceEinen Nonce-Wert abrufenKeine
POST/auth/nonceEinen neuen Nonce erstellenKeine

POST /auth/api

Authentifizierung mit API-Client-Anmeldeinformationen. Dies ist die primäre Methode für die Service-zu-Service-Kommunikation.

Anfrage:

http
POST /auth/api
Content-Type: application/json

{
  "id": "your-client-id",
  "secret": "your-client-secret",
  "code": "optional-tenant-code"
}

Antwort (200):

json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIs...",
  "expiresIn": 3600,
  "tokenType": "Bearer"
}

Fehlerantworten:

CodeGrund
401Ungültige Anmeldeinformationen
403Client deaktiviert oder Mandantenkonflikt

Control-Integration

Hydden Control authentifiziert sich über diesen Endpunkt. Der HTTPClient sendet ClientID und ClientSecret aus den verschlüsselten Integrationseinstellungen:

go
// Control's authentication flow (simplified)
POST {DiscoveryBaseURL}/auth/api
Body: {"id": clientID, "secret": decryptedSecret}

// Token is cached per tenant with TTL from expiresIn
// Automatic retry with exponential backoff on 429/5xx

Control speichert Tokens pro Mandant zwischen und erneuert sie vor Ablauf. Der Token-Cache verwendet einen Lese-/Schreib-Mutex für Thread-Sicherheit.


POST /auth/otp

Authentifizierung mit einem Einmalpasswort.

Anfrage:

http
POST /auth/otp
Content-Type: application/json

{
  "id": "user-identifier",
  "secret": "otp-secret",
  "code": "one-time-code"
}

Antwort: Gleiches Format wie /auth/api.


POST /oauth/token

Standard-OAuth-2.0-Token-Endpunkt. Unterstützt Basic-Auth-Header für Client-Anmeldeinformationen.

Anfrage:

http
POST /oauth/token
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials

Antwort (200):

json
{
  "access_token": "eyJhbGciOiJSUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600
}

GET /internal/v1/token/renew

Das aktuelle Zugriffstoken vor Ablauf erneuern. Erfordert eine aktive JWT-Cookie-Sitzung.

Anfrage:

http
GET /internal/v1/token/renew
Cookie: jwt=<current-token>

Antwort (200):

json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIs...",
  "expiresIn": 3600
}

GET /internal/v1/user/info

Informationen zum aktuell authentifizierten Benutzer abrufen.

Anfrage:

http
GET /internal/v1/user/info
Authorization: Bearer <token>

Antwort (200):

json
{
  "userId": "user-uuid",
  "email": "user@example.com",
  "role": "admin",
  "tenantId": "tenant-uuid"
}

Hydden Documentation and Training Hub