Remote Login
Werk in uitvoering, kan veranderen
Hier wordt ingelogd in de stek zonder dat er een wachtwoord of gebruikersnaam wordt ingevuld. Met behulp van een qr code wordt op een ander apparaat ingelogd door de gebruiker. Dit wordt gebruikt om gebruikers (tijdelijke) toegang te geven op gedeelde computers.
Technische werking
class RemoteLogin {
id: number // In de sessie
expires: DateTime // Enkele minuten in de toekomst, wordt gereset als de status naar voren gaat
key: string // Om deze RemoteLogin op te halen
status: PENDING|ACTIVE|ACCEPTED|REJECTED|EXPIRED
}
Status flow
PENDING --> ACTIVE --> ACCEPTED
| |
v v
EXPIRED REJECTED
(delete)
- Gebruiker navigeert naar
/remote_login
- Er wordt een nieuwe
RemoteLogin
entity gemaakt in de database met een specifieke sleutel. Deze entity is een paar minuten houdbaar. De status isPENDING
. De sleutel van deze entity wordt in de sessie opgeslagen. - Er wordt een qr code gegenereerd naar
/remote_login_authorize
met de sleutel ingebakken. - Op de achtergrond wordt met regelmaat (iedere paar seconden) de status van de
RemoteLogin
met de sleutel geladen.
- Er wordt een nieuwe
- (op de device) De gebruiker scant de qr code en gaat op zijn (misschien ingelogd) apparaat naar
/remote_login_authorize
- Als de gebruiker op dit device ook niet is ingelogd kan er eerst normaal met gebruikersnaam en wachtwoord worden ingelogd
- De status van de
RemoteLogin
entity wordtACTIVE
, de pagina op/remote_login
geeft een laadbalkje weer op de qr code.
- (op de device) De gebruiker klikt op de ‘Autoriseer’ link
- De status van de
RemoteLogin
entity wordtACCEPTED
, de pagina op/remote_login
kan nu verder.
- De status van de
- De
/remote_login
pagina post naar/remote_login
pagina en als deRemoteLogin
ok is wordt er een sessie gemaakt - De verkregen sessie is (voor nu) een
AuthenticationMethod::temporary
sessie - Het doel nu is om een oauth2 sessie te kunnen autoriseren, misschien dat op een later moment het voor andere dingen gebruikt kan worden.