Users > /godogood-eu
zie ook https://passwords.google/ & passwords.google/intl/nl/#get-started
zie ook https://passwords.google/ & passwords.google/intl/nl/#get-started
De beste techniek is een combinatie van:
Eenmalige inloglink via e-mail;
Vertrouwd apparaat registreren;
Dagelijkse bevestiging met passkey;
Daarna automatisch toegang tot KlantKompas.
Een passkey gebruikt op het toestel:
Vingerafdruk;
Gezichtsherkenning;
Toestel-PIN;
Schermvergrendeling.
KlantKompas ontvangt nooit de vingerafdruk of toestel-PIN. Het toestel voert de controle uit en stuurt alleen een cryptografisch bewijs terug. Google legt passkeys hier uit.
Klant vult het e-mailadres in.
Klant ontvangt een eenmalige inloglink.
Klant opent de link.
KlantKompas vraagt: Dit apparaat vertrouwen?
Klant registreert een passkey.
Het apparaat wordt maximaal 30 of 90 dagen vertrouwd.
Klant opent KlantKompas.
Klant kiest Ontgrendelen.
Telefoon of computer vraagt vingerafdruk, gezichtsherkenning of PIN.
Na succesvolle controle wordt een sessie voor die dag gemaakt.
Er hoeft geen nieuwe e-mail te worden verstuurd.
We kunnen niet afdwingen dat uitsluitend de vingerafdruk wordt gebruikt. Het besturingssysteem beslist welke veilige controle beschikbaar is:
Vingerafdruk OF gezichtsherkenning OF toestel-PIN
Dat is juist wenselijk: als de vingerafdruksensor niet werkt, kan de klant nog steeds de beveiligde toestel-PIN gebruiken.
Onderdeel
Geldigheid
Inloglink
15 minuten, eenmalig
Dagelijkse sessie
24 uur
Vertrouwd apparaat
30 dagen
Maximum vertrouwd apparaat
90 dagen
Passkeycontrole
Dagelijks
Gevoelige wijziging
Altijd opnieuw controleren
Bijvoorbeeld:
const LOGIN_LINK_MINUTEN = 15;
const DAGSESSIE_UREN = 24;
const VERTROUWD_APPARAAT_DAGEN = 30;
const MAX_APPARAAT_DAGEN = 90;
Device_ID
User_ID
Credential_ID
Public_Key
Device_Naam
Aangemaakt
Laatst_Gebruikt
Verloopt_Op
Actief
Ingetrokken_Op
Challenge_ID
User_ID
Device_ID
Challenge_Hash
Aangemaakt
Verloopt_Op
Gebruikt
KlantKompas bewaart alleen de publieke sleutel en identifiers. Geen vingerafdruk, gezichtsgegevens of toestel-PIN.
Dit is technisch veel complexer dan een e-mailcode. Voor passkeys moet de server:
Een unieke challenge maken;
De publieke sleutel registreren;
WebAuthn-antwoorden uitlezen;
Digitale handtekeningen controleren;
Replay-aanvallen blokkeren;
Tellers, vervaltijden en ingetrokken apparaten beheren.
Apps Script heeft hiervoor geen eenvoudige ingebouwde passkeyfunctie.
Daar komt bij dat Apps Script-interfacepagina’s in een iframe-sandbox draaien. Als de webapp vervolgens ook in Google Sites wordt ingesloten, ontstaan extra browser- en Permissions Policy-beperkingen. Apps Script HTML-beperkingen, W3C Permissions Policy.
Daarom is passkeylogin binnen een ingesloten Google Sites-pagina niet gegarandeerd op alle browsers en telefoons.
Bouw KlantKompas in twee fasen:
E-mailinloglink;
Vertrouwd apparaattoken;
Dagelijkse zescijferige KlantKompas-PIN;
24-uurs sessie;
Apparaten intrekken;
Maximum 5 foutieve pogingen;
Tijdelijke blokkering na mislukte pogingen.
Gebruik minimaal zes cijfers, niet vier.
Loginpagina op een eigen HTTPS-domein;
WebAuthn/passkeys voor vingerafdruk, gezicht of toestel-PIN;
Apps Script en de Sheet blijven voorlopig als gegevenslaag;
Dagelijkse passkeycontrole;
Beheerpagina voor vertrouwde apparaten;
Later eventueel een sterkere database achter dezelfde interface.
Voor de eerste verkoopbare en kopieerbare Apps Script-versie adviseer ik:
Eerste login via e-maillink;
Daarna apparaat 30 dagen vertrouwen;
Dagelijks ontgrendelen met een zescijferige KlantKompas-PIN;
Opnieuw e-mailen bij nieuw apparaat, verlopen registratie of vergeten PIN;
Passkeys toevoegen zodra de login op een eigen domein staat.
Dat is aanzienlijk eenvoudiger te kopiëren per ondernemer en betrouwbaarder binnen Apps Script en Google Sites.