import type { Algorithm } from 'jsonwebtoken'; export interface JwtPruefOptionen { issuer: string; /** Client-ID dieser Anwendung; ohne sie wird `aud` nicht geprüft. */ audience?: string; algorithms: Algorithm[]; jwksUri: string; } /** * Prüfoptionen für Access-Tokens von Authentik. Ohne Audience-Prüfung würde * jedes Token desselben Issuers akzeptiert – also auch eines, das Authentik * für eine andere Anwendung mit demselben Provider ausgestellt hat. */ export function jwtPruefOptionen( issuer: string, clientId: string | undefined, ): JwtPruefOptionen { const basis = issuer.endsWith('/') ? issuer.slice(0, -1) : issuer; return { issuer, ...(clientId ? { audience: clientId } : {}), algorithms: ['RS256'], jwksUri: `${basis}/jwks/`, }; }