← FAQ
FAQ

Pc-inlogprotocol en offline-beleid

FAQ › Profielserver › Pc-login · English

Wat is het?

Hoe een EUZOS-pc een ondertekend profiel en een pc-token van de profielserver krijgt. Er zijn drie manieren om online in te loggen, die alle drie eindigen in hetzelfde ondertekende profiel:

  1. QR-code: de pc toont een QR-code; de gebruiker bevestigt op de telefoon met Face ID / vingerafdruk (methode telefoon, of web via de webpagina als terugval);
  2. e-mailadres en wachtwoord op de pc zelf (methode=wachtwoord);
  3. Microsoft-werkaccount (Entra ID, device code flow; methode=microsoft).

Na inloggen met een wachtwoord kan het profiel ook een offline-token bevatten, zodat de pc later een beperkt aantal dagen offline kan inloggen; weer online maakt hij opnieuw verbinding (methode offline). Met het pc-token haalt de pc daarna zijn bestandenlijst op, vraagt hij zijn status (afmelden op afstand), schrijft hij instellingen terug en gebruikt hij de kluis. Het protocol tussen pc en server is platte tekst (text/plain, regels sleutel=waarde), geen JSON.

Hoe doe ik…?

Hoe werkt inloggen met de QR-code, stap voor stap?

  1. De pc maakt een sessie-id S (32 hex, in de QR-code) en een pc-geheim G (32 hex, alleen in het RAM).
  2. Hij vraagt elke 2 s GET /api/session/S?pc=G[&voorkeur=zakelijk|prive]; de eerste vraag maakt de sessie, gebonden aan het IP van de pc en SHA-256(G). Het antwoord is wacht + code=<koppelcode>.
  3. De QR-code is https://<domein>/l/<S>; de telefoon-app (of de webpagina) haalt hem op; de vraag zegt dan ook gezien=1 en de pc toont "Bevestig op je telefoon…".
  4. De telefoon bevestigt (Telefoon-app); de volgende vraag krijgt ok + het ondertekende profiel, één keer.

Waarom verandert de QR-code elke 30 seconden?

Zodat een foto van het inlogscherm na 30 s niets meer waard is. Zolang geen telefoon de code heeft opgehaald, maakt de pc elke 30 s een nieuwe sessie en trekt hij de oude in met &intrekken=1; de server laat een niet-opgehaalde sessie ook vervallen na qr_duration (30 s). Eenmaal opgehaald blijft de sessie confirm_duration (120 s) geldig.

Hoe werkt inloggen met een wachtwoord op de pc?

POST /api/pc/login met email=, wachtwoord=, sessie=, pc=, pc-id= (+ voorkeur=). Het wachtwoord komt nooit in een URL. Antwoord: ok + het ondertekende profiel met methode=wachtwoord. Alleen bevestigde (actief) accounts. Er wordt afgeremd per account, per pc, per netwerk en per IPv6-/48, met oplopende wachttijden en een tijdelijke blokkade (429 met wacht=<seconden>). Uitzetten met pc_password = no (dan 404).

Hoe werkt "Inloggen met Microsoft"?

De pc doorloopt de device code flow bij Microsoft en stuurt alleen het ID-token: POST /api/pc/entra (id_token=, sessie=, pc=, pc-id=, taal= [, nonce=]). De server controleert het token met de sleutels van Microsoft en met de tenant en domeinen van de organisatie, koppelt of maakt het account, en antwoordt zoals bij een wachtwoord met methode=microsoft en altijd soort=zakelijk. Details in Organisaties.

Hoe wordt een pc op afstand afgemeld?

De pc vraagt GET /api/status?token=<pc-token> (ongeveer elke 30 s). Na afmelden op afstand (app: pc-sessions/<ref>/logout), blokkeren, een nieuw wachtwoord of Entra-offboarding is het antwoord afgemeld en gaat de pc terug naar het inlogscherm. Krijgt de pc 15 minuten lang geen geldig antwoord, dan meldt hij zichzelf af; hij meldt zich ook af na 12 uur ingelogd (monotone klok).

Hoe meld ik af vanaf de pc?

De pc roept GET /api/logout?token=<pc-token> aan (altijd ok), nadat hij eerst de wachtende instellingen heeft verstuurd.

Hoe blijven mijn instellingen bewaard tussen pc's?

De pc schrijft wijzigingen terug met POST /api/profile/settings?token=<pc-token> (alleen de gewijzigde sleutels, uit een vaste lijst). Het volgende ondertekende profiel bevat ze. Per gebruiker en per soort profiel (Werk of school / Privé).

Hoe wordt offline inloggen toegestaan, en hoe lang?

Het offline-beleid van de server: offline-policy '*' <dagen> voor deze omgeving of offline-policy @domein <dagen> voor een organisatie (domein van het e-mailadres; het domein gaat voor). 0 = niet toegestaan; zonder regel 14 dagen; hoogstens 30. Alleen inloggen met een wachtwoord geeft een offline-token. Zie docs/OFFLINE-LOGIN.md voor het kluisje op de pc.

Hoe neem ik offline-toegang weer af?

offline-revoke <email> (alle offline-tokens van het account), afmelden op afstand in de app (de ref van die pc), het account blokkeren of wissen, of het beleid op 0. De pc merkt het bij zijn volgende herverbinding (403) en wist zijn kluisje; zonder internet pas op de vervaldatum.

Wat zit er in de kluis?

Kleine geheimen per account en profiel, versleuteld op de server: de opslagsleutel van de versleutelde profielmap (opslag-sleutel), Microsoft-refreshtokens (ms-refresh:<32 hex>) en generaties van de profielmap (opslag-versie:<32 hex>). Alleen met een pc-token; de inhoud nooit in logboeken of in het ondertekende profiel. Beheerder: vault <email> (toont nooit de inhoud), vault-delete <email>.

Details

Pc-token: 64 hex, geldig token_duration (standaard 12 uur); de server bewaart alleen SHA-256 en de method. Niet gebonden aan het IP van de pc (CGNAT, van wifi naar kabel); de inlogsessie zelf is wel aan het IP gebonden.

Wat de pc in het profiel controleert (in deze volgorde; bij één fout weigert hij alles): eerste regel ok en versie=2; handtekening= is de laatste regel met 128 hex; de Ed25519-handtekening met de sleutel uit \EOS\FW\PROFILE.TXT (of de ingebouwde productiesleutel); omgeving= en server= kloppen; sessie= is de eigen sessie en pc= is SHA-256(eigen G); verloopt ligt in de toekomst als de klok betrouwbaar is.

Beheerbeleid in het profiel: de beheerder kan beheer=<console,sshd,log,profiel | geen> toevoegen (admin-policy <email> …); dat bepaalt welke beheeropdrachten een productie-pc toestaat. De pc kan het niet terugschrijven.

Offline-tokens: na POST /api/pc/login bevat het profiel (vóór token=) offline-dagen=<1..30>, offline-token=<64 hex> en account=<id>. De server bewaart alleen de SHA-256 met account, soort profiel, de ref van het pc-token en de vervaldatum (tabel offline_tokens). Herverbinden geeft een nieuw profiel met een nieuw herverbindtoken; het oude vervalt. Herverbinden wordt afgeremd per netwerk (120/min) en per token (10/min).

Versleuteling van de kluis: ChaCha20-Poly1305 onder de serversleutel uit vault_key_file; de bijbehorende gegevens binden een rij aan gebruiker, profiel, soort en sleutel-id. Hoogstens 9 geheimen per profiel; generaties tellen apart (16, de oudste gaat eruit). Zonder vault_key_file geven alle kluispaden 404.

Naslag

CLI-opdrachten

OpdrachtArgumentenWat het doet
pc-sessions—ingelogde pc's
admin-policy<email> [<console,sshd,log,profiel> | geen | --delete]het beheerbeleid in het ondertekende profiel tonen/zetten/verwijderen; meldt de pc's van het account af
offline-policy[<*|@domein> <0..30>]het offline-beleid tonen of zetten
offline-policy-delete<*|@domein>een regel verwijderen
offline-revoke<email>alle offline-tokens van het account intrekken
offline-tokens—geldige offline-tokens (account, ref, profiel)
vault<email>wat het account in de kluis heeft, en het kluislogboek (nooit de inhoud)
vault-delete<email>de hele kluis van het account wissen

Oude namen: pc-sessies, beheer, offline-beleid, offline-beleid-wis, offline-intrek, kluis, kluis-wis.

Functies en modules

Functie / moduleRol
euzos_profileserver::pc::sessionGET /api/session/<S>: maakt, beantwoordt, trekt in, levert het profiel
euzos_profileserver::pc::files, status, logout, settingsde eindpunten met pc-token
euzos_profileserver::pc_login::logininloggen met wachtwoord op de pc (afremmen, blokkade)
euzos_profileserver::entra::logininloggen met een Microsoft-ID-token
euzos_profileserver::offlineoffline-beleid, offline-tokens, reconnect, de CLI offline-*
euzos_profileserver::vault::set, fetch, delete_secret, listde kluiseindpunten; Key::encrypt/decrypt
euzos_profileserver::settingslijst en controle van het terugschrijven van instellingen
euzos_profileserver::pairing_code, valid_session_idkoppelcode en controle van de sessie-id
euzos_profileserver::webde webpagina /l/<S> als terugval
Kernel: kernel/src/profile.rs, libs/profilede kant van de pc (vragen, controleren, terugschrijven)

Configuratiebestanden

Serverconfiguratie (profiel.conf):

SleutelStandaardBetekenis
qr_duration (oud qr_duur)30 seen niet-opgehaalde inlogsessie
confirm_duration (oud bevestig_duur)120 seen opgehaalde sessie zonder goedkeuring
token_duration (oud token_duur)43 200 s (12 uur)het pc-token
web_duration (oud web_duur)3 600 seen aanmelding op de webpagina
pc_password (oud pc_wachtwoord)yesinloggen met wachtwoord op de pc
web_fallback (oud web_terugval)yesde webpagina /l/<S> zonder de app
allow_v1 (oud sta_v1_toe)lokaal yes, anders novragen zonder pc-geheim (het oude formaat van 8.5)
vault_key_file (oud kluis_sleutel_bestand)—bestand met de kluissleutel; zonder staat de kluis uit
entra_client_id, entra_check_s (oud entra_controle_s, standaard 900)—inloggen met Microsoft en de offboarding-controle

Op de pc: \EOS\FW\PROFILE.TXT (oude naam PROFIEL.TXT) met server=, environment=, key= (publieke sleutel), optioneel key-id=, language= en private=off (de oude Nederlandse sleutels omgeving=, sleutel=, sleutel-id=, taal=, prive=uit worden nog gelezen; euzos-profielserver key toont nog die Nederlandse vorm). Een productiebuild gebruikt zijn ingebouwde server en sleutel en leest alleen private= en language=.

Configuratiesleutels op schijf en getypte bevestigingswoorden zijn sinds 27-10-2026 Engels (bijvoorbeeld WIS-… → WIPE-…, omgeving= → environment=; docs/ENGLISH.md); de Nederlandse namen blijven geaccepteerd. De draadformaten van de profielserver (pc-regelprotocol, ondertekend profiel, ondertekende telefoonberichten, instellingssleutels) blijven Nederlands.

API-eindpunten

MethodePadOud Nederlands padDoel
GET/api/session/<S>?pc=<G>[&voorkeur=][&intrekken=1]/api/sessie/<S>QR-inlogsessie (vragen)
POST/api/pc/login/api/pc/inloggeninloggen met wachtwoord
POST/api/pc/entra—inloggen met Microsoft
POST/api/pc/reconnect/api/pc/herverbindvan offline naar online
GET/api/files?token=/api/bestandenitem=-regels van het profiel
GET/api/status?token=—ok + verloopt=, of afgemeld + reden=
GET/api/logout?token=/api/afmeldenhet pc-token afmelden
POST/api/profile/settings?token=/api/profiel/instellingeninstellingen terugschrijven
GET/api/vault?token=/api/kluiseigen soorten tonen (zonder inhoud)
PUT, GET, DELETE/api/vault/<soort>?token=/api/kluis/<soort>een geheim opslaan, ophalen, wissen
GET/l/<S>; POST /l/<S>/aanmelden, /l/<S>/bevestig; POST /uit— (zichtbare paden)webpagina als terugval
GET/api/preference/<S>/api/voorkeur/<S>de voorkeur van de pc voor de webpagina

De inhoud van verzoek en antwoord is byte voor byte gelijk op de Engelse en de oude routes.

Protocolberichten en formaten

Antwoorden op GET /api/session/<S>:

wacht            + code=<6 cijfers> [+ gezien=1]
verlopen         + reden=tijd|geweigerd|ingetrokken|gebruikt|niet opgehaald|geen profiel
ok               + het ondertekende profiel (één keer)

Het ondertekende profiel (statuswoorden en sleutels zijn Nederlandse waarden op de lijn):

ok
versie=2
omgeving=sandbox
server=<internal-host>
sessie=<S>
pc=<SHA-256(G), 64 hex>
soort=zakelijk|prive
naam=<e-mailadres>
weergavenaam=<weergavenaam>
kleur=<6 hex>
taal=<taal>
<instellingsregels: balk=, thema=, recent=, browser-favoriet=, …>
item=<…>                        (0 tot 64)
beheer=<beleid>                 (alleen als ingesteld)
offline-dagen= / offline-token= / account=   (alleen na inloggen met wachtwoord, als toegestaan)
methode=wachtwoord|microsoft|offline         (niet bij een QR-login)
token=<64 hex>
uitgegeven=<Unix-tijd>
verloopt=<Unix-tijd>
sleutel-id=<16 hex>
handtekening=<128 hex>

Handtekening: Ed25519 over "EUZOS-profiel-v2\0" || alle bytes vanaf ok tot en met de \n vóór handtekening=.

Inloggen met wachtwoord (POST /api/pc/login, hoogstens 2 KiB): 200 ok + profiel; 400 reden=ongeldig; 401 reden=onjuist; 403 reden=account + status=…; 404 (uit); 413 te_groot; 429 reden=te_vaak + wacht=; 503 reden=druk|database.

Inloggen met Microsoft (POST /api/pc/entra): fouten 400 ongeldig, 401 token/verlopen, 403 tenant/domein/account, 429 te_vaak, 503 sleutels|database|druk, 404 zonder entra_client_id.

Status (GET /api/status): ok + verloopt=, of afgemeld + reden=afgemeld|verlopen|onbekend; een databasefout is 503, nooit afgemeld.

Herverbinden (POST /api/pc/reconnect, inhoud offline-token=, sessie=, pc=): 200 + nieuw profiel, of 403 reden=ingetrokken|verlopen|geblokkeerd|gewist|uit|onbekend; verder 400 ongeldig, 413 te_groot, 429 te_vaak, 503 database.

Sleutels die de pc mag terugschrijven: balk, balk-verbergen, taskbar-hide-maximized (on|off; eerst de server uitrollen, dan de kernels die hem sturen), welkom, schermtoetsenbord, toetsenbord, toetsenbord-tik, thema, touchpad-natuurlijk, touchpad-tikken, touchpad-rechtsklik, touchpad-snelheid, touchpad-aanwijzer, muis-snelheid, muis-omwisselen, muis-wiel-omkeren, pointer-size, pointer-hide, aanraak-vegen, aanraak-doorrollen, aanraak-lang-drukken, screensaver, screensaver-wachttijd, screensaver-animatie, vergrendelen, recent, taal, kleur, browser-zoekmachine, browser-favoriet, browser-engine, browser-site, mail-account (settings::KEYS). screensaver-animatie neemt logo|aurora|stars|clock; de oude waarden sterren|klok worden nog geaccepteerd. Een kernel vanaf 27-10-2026 schrijft stars/clock, dus de profielserver moet eerst uitgerold zijn (een oudere server weigert die waarden). Hoogstens 48 KiB (settings::MAX_REQUEST = 49 152 bytes) en 104 regels (settings::MAX_LINES); een ongeldige regel geeft 400 en dan verandert er niets.

Soorten in de kluis: opslag-sleutel (gemaakt door de server bij de eerste GET; PUT geeft 403; DELETE = crypto-shredding), ms-refresh:<32 hex>, opslag-versie:<32 hex> (alleen omhoog: lager geeft 409 lager). Geheimen hoogstens 8 KiB.

Zie ook

  • docs/PROFILE-PROTOCOL.md, "Logging in on a PC", "The format for EUZOS", "The vault", "Tokens and expiry", "Rate limiting"
  • docs/OFFLINE-LOGIN.md
  • docs/WORK-LOGIN.md
  • docs/ENVIRONMENTS.md
  • Telefoon-app · Organisaties · API · CLI