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
RemoteLoginentity 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_authorizemet de sleutel ingebakken. - Op de achtergrond wordt met regelmaat (iedere paar seconden) de status van de
RemoteLoginmet 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
RemoteLoginentity wordtACTIVE, de pagina op/remote_logingeeft een laadbalkje weer op de qr code.
- (op de device) De gebruiker klikt op de ‘Autoriseer’ link
- De status van de
RemoteLoginentity wordtACCEPTED, de pagina op/remote_loginkan nu verder.
- De status van de
- De
/remote_loginpagina post naar/remote_loginpagina en als deRemoteLoginok is wordt er een sessie gemaakt - De verkregen sessie is (voor nu) een
AuthenticationMethod::temporarysessie - Het doel nu is om een oauth2 sessie te kunnen autoriseren, misschien dat op een later moment het voor andere dingen gebruikt kan worden.