function deriveFromBaseUrl() { const base = process.env.NUXT_PUBLIC_BASE_URL || 'http://localhost:3100' try { const u = new URL(base) // Für HTTPS (Port 443) den Port IMMER weglassen, da er standardmäßig ist // Für HTTP in Production sollte auch Port 80 weggelassen werden // Nur für Development (localhost mit Port) den Port beibehalten let origin if (u.protocol === 'https:') { // HTTPS: Port immer weglassen (443 ist Standard) origin = `https://${u.hostname}` } else if (u.protocol === 'http:' && u.hostname === 'localhost') { // Development: Port beibehalten origin = `${u.protocol}//${u.host}` } else { // HTTP Production: Port 80 weglassen origin = u.port === '80' ? `http://${u.hostname}` : `${u.protocol}//${u.host}` } return { origin, rpId: u.hostname } } catch { return { origin: 'http://localhost:3100', rpId: 'localhost' } } } export function getWebAuthnConfig() { const derived = deriveFromBaseUrl() const rpId = process.env.WEBAUTHN_RP_ID || derived.rpId const rpName = process.env.WEBAUTHN_RP_NAME || 'Harheimer TC' // WEBAUTHN_ORIGIN hat Priorität, sonst von BASE_URL ableiten let origin = process.env.WEBAUTHN_ORIGIN || derived.origin // Sicherstellen, dass HTTPS-Origins KEINEN Port haben (auch wenn in ENV gesetzt) if (origin.startsWith('https://')) { try { const u = new URL(origin) // Port 443 oder kein Port = Standard, also Port weglassen if (u.port === '443' || !u.port) { origin = `https://${u.hostname}` } else { // Auch andere Ports bei HTTPS entfernen (nicht Standard für WebAuthn) origin = `https://${u.hostname}` } } catch { // Ignore } } const requireUV = (process.env.WEBAUTHN_REQUIRE_UV || '').toLowerCase() === 'true' console.log('[DEBUG] WebAuthn Config', { rpId, rpName, origin, requireUV, webauthnOriginEnv: process.env.WEBAUTHN_ORIGIN, baseUrlEnv: process.env.NUXT_PUBLIC_BASE_URL, derivedOrigin: derived.origin }) return { rpId, rpName, origin, requireUV } }