[php][laravel] Two-Factor auth; in auth of nieuwe middleware

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 09-09 12:00
Voor een nieuwe website, waarop gebruikers inloggen, wil ik graag Two-Factor Authentication gebruiken. Nu vroeg ik me zo even af wat een gewenste werkwijze zou zijn. In dit geval wil ik een code toesturen via SMS.

Procedure
1. Gebruiker vult gegevens in en klikt op inloggen.
2. Gegevens zijn juist, maar gebruiker nog niet inloggen.
3. Token genereren en opslaan in user table en versturen via SMS.
4. Gebruiker redirecten naar invoerscherm voor token.
5. Gebruiker voert token (uit smsje) in en klikt op verifiëren.
6. Ingevulde token verifiëren met token uit database.
7. Token is juist, dus gebruiker inloggen, done!

Probleem
Vanaf punt 4 is de gebruiker nog niet ingelogd, maar weten we dat email en wachtwoord kloppen en sturen we dan pas een token via sms. Maar als hij het token dan invult, wil je niet nogmaals vragen om een email en wachtwoord.

Mogelijke oplossingen
- Aparte middleware van maken, die na inloggen ook een geverifieerd token wil hebben.
- Email en wachtwoord onthouden (oid.) als gebruiker token invult en op verifiëren klikt.

Die laatste heeft natuurlijk m'n voorkeur, omdat je anders die extra middleware overal moet toevoegen. Maar wat is nu best practice?

Ik heb al heel wat pakketten bekeken voor 2FA, maar die laten integratie allemaal achterwege in de documentatie.

Acties:
  • 0 Henk 'm!

  • Matthijz98
  • Registratie: Januari 2013
  • Laatst online: 03-07 13:18
Snap het probleem niet helemaal. Je kan de gebruikersnaam toch gewoon opslaan in een sessie en die dan later weer gebruiken om in te loggen inc de token.

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 09-09 12:00
Ja dat kan inderdaad en dat heb ik nu eerst gedaan, maar dat levert toch weer wat problemen op. Het opslaan van de credentials in een sessie lijkt me niet heel erg netjes namelijk. Daarnaast wil je het 2FA formulier eigenlijk alleen laten zien als vervolg op het inloggen.

... wat me dan eigenlijk toch weer brengt op een middleware oplossing. Misschien wil je niet elke keer bij het inloggen vragen om 2FA, maar bijv. elke 30 dagen. Dan is zoiets makkelijker, zo van check of 2FA aan de beurt is en zo ja, bij inloggen 2FA scherm laten zien. Dat moet dus alleen gebeuren als je ingelogd bent; middleware voor middleware dus :+

Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 11:53
Na stap 2 kun je toch als je sessie aanmaken .. enige is dat de rest van je code niet alleen moet verfieren of er ook een sessie bestaat voor deze user, maar ook of deze al de 2e factor auth succesvol heeft doorlopen.

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 09-09 12:00
gekkie schreef op maandag 15 juni 2015 @ 23:31:
Na stap 2 kun je toch als je sessie aanmaken .. enige is dat de rest van je code niet alleen moet verfieren of er ook een sessie bestaat voor deze user, maar ook of deze al de 2e factor auth succesvol heeft doorlopen.
Ja precies, dus komt er eigenlijk een 2e middleware bij kijken, die checked (na auth) of de gebruiker het 2FA token moet invoeren.

Acties:
  • 0 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 11:53
(2e?) / aparte middleware klinkt alsof het allemaal (ver) buiten je webapplicatie zelf moet gebeuren, ik zie daar dus niet direct de noodzaak voor.

Acties:
  • 0 Henk 'm!

  • Matthijz98
  • Registratie: Januari 2013
  • Laatst online: 03-07 13:18
Als je graag een middleware wilt gaan gebruiken moet je aan Authy of Goole Authenticator hier is heel veel sample code voor te vinden.

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 09-09 12:00
gekkie schreef op dinsdag 16 juni 2015 @ 18:45:
(2e?) / aparte middleware klinkt alsof het allemaal (ver) buiten je webapplicatie zelf moet gebeuren, ik zie daar dus niet direct de noodzaak voor.
Volgens mij moet ik er vanavond maar eens goed voor gaan zitten :+ Het idee is me zo wel even duidelijk denk ik. Inderdaad, middleware moet niet nodig zijn. Door gewoon bij het inloggen te checken of 2FA noodzakelijk is moet je een heel eind komen.
Matthijz98 schreef op dinsdag 16 juni 2015 @ 21:54:
Als je graag een middleware wilt gaan gebruiken moet je aan Authy of Goole Authenticator hier is heel veel sample code voor te vinden.
Klopt, daar heb ik in eerste instantie al naar gekeken. Maar die hebben vaak meer aan boord dan ik nodig heb. Gezien de situatie is de code verzenden via SMS, of eventueel mail, een prima oplossing. Meer dan een code generen met een geldigheid van 2 minuten is het niet.

Ik probeer alleen de best-practice te vinden om het te integreren.
Pagina: 1