Trusted device bij login-systemen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

12/06/2022 17:45:03
Quote Anchor link
Ik ben bezig met een 2FA-systeem voor bij het inloggen. En nu vroeg ik mij af of iemand een goede methode of package kent om een device als veilige device te herkennen.

Facebook gebruik dit ook als je met 2FA inlogt, en je dan kan aangeven dat 'dit een veilige device is' waarbij er dan geen 2FA wordt gevraagd.
Gewijzigd op 10/08/2022 23:51:42 door - Ariën -
 
PHP hulp

PHP hulp

05/10/2022 00:39:31
 
Ozzie PHP

Ozzie PHP

13/06/2022 10:17:33
Quote Anchor link
Een 2fa melding volgt meestal nadat een OS of IP-adres is gewijzigd of als er via een andere browser wordt ingelogd. Fingerprinting wordt tegenwoordig door veel browsers tegengegaan. Of er packages voor bestaan weet ik niet (zal vast wel), maar als je zelf iets wil maken zou je kunnen controleren op min of meer vaststaande gegevens zoals IP-adres, OS, browser en taal. Als een van deze parameters dan wijzigt, zou je het apparaat als een "onveilig" apparaat kunnen beschouwen wat eerst moet worden goedgekeurd door de gebruiker alvorens deze kan inloggen. Merk wel op dat dit lastig is bij dynamische IP-adressen. Op een mobiele telefoon zou controle op IP-adres niet werken.
 
Ward van der Put
Moderator

Ward van der Put

13/06/2022 12:07:07
Quote Anchor link
De software/virtual authenticator is gekoppeld aan het device, niet aan het IP-adres van het device. Ik hoef bijvoorbeeld niet opnieuw in te loggen als ik met telefoon of laptop op pad ben (en mijn IP-adres daardoor vaak verandert), maar wél nadat ik een update heb geïnstalleerd van besturingssysteem of browser.

Waarom zou je zelf iets verzinnen als browsers daarvoor een standaard ondersteunen? ;-)

https://developer.chrome.com/blog/webauthn/
 
- Ariën  -
Beheerder

- Ariën -

05/07/2022 17:12:17
Quote Anchor link
Ik zal daar eens naar kijken, hoewel het best complex in elkaar steekt. Maar heeft iemand eventueel ervaring met library's die dit kunnen?
Gewijzigd op 05/07/2022 17:13:12 door - Ariën -
 
Ward van der Put
Moderator

Ward van der Put

05/07/2022 17:32:20
Quote Anchor link
Ik zou eens naar OAuth 2.0 kijken:

https://oauth.net/2/

Daarvoor bestaan ook goede PHP libraries:

https://oauth.net/code/php/
 
- Ariën  -
Beheerder

- Ariën -

07/07/2022 10:28:36
Quote Anchor link
Ward van der Put op 05/07/2022 17:32:20:
Ik zou eens naar OAuth 2.0 kijken:

https://oauth.net/2/

Daarvoor bestaan ook goede PHP libraries:

https://oauth.net/code/php/

Oauth is toch een complete login-flow? Het gaat mij enkel om de herkenning van 'trusted devices'.
 
- Ariën  -
Beheerder

- Ariën -

10/08/2022 23:37:57
Quote Anchor link
Toch even een schopje. Kent iemand misschien goede PHP-library's om een device als vertrouwd te kunnen laten herkennen? Ik zie dit op steeds meer sites komen. Dus ik denk dat er wel een handige library bestaat. Ik heb geen zin in om het wiel opnieuw uit te vinden. :-P

Oh ja, ik heb 2FA werkend.
Voor de liefhebbers die ook aan de slag willen met twee-traps-verificatie (2FA) en Google Authenticator op de telefoon: Daarvoor gebruik ik deze class (tevens via composer binnen te hengelen): https://github.com/PHPGangsta/GoogleAuthenticator.
De secretkey vraagt de gebruiker bij 'registratie' eenmalig op, en die kan je ook via de QR-code die het script genereert in je telefoon hengelen. Die secret gebruik je steeds bij de controle.


Edit:
Voor het gemak pas ik de titel maar even aan, omdat dit de lading beter dekt.
Gewijzigd op 10/08/2022 23:55:42 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

13/08/2022 12:11:17
Quote Anchor link
Schopje?
 
- Ariën  -
Beheerder

- Ariën -

17/08/2022 10:48:14
Quote Anchor link
Het enige wat ik kan vinden is iets voor Symphony, wat ik niet gebruik. Ik ga eens kijken of ik wat hiermee kan doen.
 
Ad Fundum

Ad Fundum

22/08/2022 09:51:14
Quote Anchor link
Ik zou wel willen reageren als ik begreep wat je precies bedoelt met 'om een device als veilige device te herkennen'.
Gaat het om het vaststellen dat een bepaalde partij het apparaat als veilig heeft bestempeld?
Of wil je een technische check doen en voor jezelf vaststellen dat het apparaat veilig is?
En veilig waarvoor?
 
- Ariën  -
Beheerder

- Ariën -

22/08/2022 09:59:17
Quote Anchor link
Laten we het maar houden op 'betrouwbare apparaten'. Die zeker weten van jezelf zijn, waardoor die vrijgesteld worden van 2FA.
 
Ozzie PHP

Ozzie PHP

22/08/2022 10:23:38
Quote Anchor link
Ad Fundum op 22/08/2022 09:51:14:
Ik zou wel willen reageren als ik begreep wat je precies bedoelt met 'om een device als veilige device te herkennen'.
Gaat het om het vaststellen dat een bepaalde partij het apparaat als veilig heeft bestempeld?
Of wil je een technische check doen en voor jezelf vaststellen dat het apparaat veilig is?
En veilig waarvoor?

Als ik het goed begrijp, bedoelt Ariën:

Een apparaat waarvan de gebruiker eerder heeft aangegeven dat het bij zijn/haar account hoort en waarbij tijdens het inloggen om die reden geen 2-factor-authentication (2FA) hoeft plaats te vinden.

(Ariën, correct me if I'm wrong.)

Een simpel voorbeeld. Ik ben ingelogd op een website waarbij normaliter 2FA plaatsvindt. Ik ga naar mijn klantenpaneel en druk op de knop "dit apparaat is veilig". De volgende keer dat ik op dat apparaat inlog, vindt er geen 2FA plaats.
 
- Ariën  -
Beheerder

- Ariën -

22/08/2022 10:50:43
Quote Anchor link
Klopt!
 
Ozzie PHP

Ozzie PHP

22/08/2022 11:03:35
Quote Anchor link
Mooi :-)

Hopelijk volgt er nu dan alsnog een mooie bijdrage van Ad Fundum :-)
 
- Ariën  -
Beheerder

- Ariën -

22/08/2022 11:18:17
Quote Anchor link
Ik ben ook benieuwd wat hiervoor de beste oplossing is.
 
Ward van der Put
Moderator

Ward van der Put

22/08/2022 13:58:46
 
- Ariën  -
Beheerder

- Ariën -

22/08/2022 14:23:48
Quote Anchor link
Maar oAuth is weer een hele standaard voor een compleet login-systeem. Die gebruik ik niet voor mijn CMS, en vind ik iets teveel moeite om in te bouwen ;-)

Ik kan eens kijken hoe die Device Authorization Grant werkt. Want het lijkt me dat zo een proces/flow ook los zou moeten werken van oAuth 2.0.
 
Ad Fundum

Ad Fundum

23/08/2022 10:23:41
Quote Anchor link
Als je het idee van een kant-en-klare package los hebt gelaten en gaat kijken naar een eigen implementatie van hoofdstuk 3 in RFC 8628, dan gaat het alleen maar over 5 pagina's in hoofdstuk 3 waarin beschreven wordt wat er precies gecommuniceerd moet worden. Er staat niet in hoe je dat precies moet implementeren, in plaats daar van is hoofdstuk 5 toegevoegd met allerlei beveiligingsadviezen.

Even hardop denken.. het authenticatieschema is verdeeld over minimaal 3 services: een authenticatieserver, een app die toegang wil, en een andere app (als een browser) waarmee de toegang voor de eerste app bevestigd moet worden. Het maakt in theorie niet uit of dat op hetzelfde apparaat is of niet, maar vaak is dat wel zo, daarom gaat communicatie over HTTPS.

Het doet mij sterk denken aan het proces van Let's Encrypt: via certbot vraag je een certificaat aan bij Let's Encrypt (authenticatieserver) en die geeft het certificaat (een soort 'token' met beperkte geldigheid) pas uit nadat een challenge (bevestiging) is gelukt. Dit challenge is dan ook het echo'en van een bepaald token.

Interessant idee om het apparaat mee te nemen in de identificatie. Ik heb zelf eerder 2FA geïmplementeerd met cryptografische sleutels. Maar dan moet je zelf bij elke inlogpoging het bestand mee sturen. Zoiets kan je dus verder automatiseren met een client certificate dat bij elke inlogpoging vanzelf wordt meegestuurd.

Als je het al via een library zou willen doen, staan er op https://oauth.net/code/php een aantal, daar zou je in moeten grasduinen om te zien of de Device Flow wordt ondersteund. Maar die kans acht ik nog niet groot gezien de 'proposed standard' status van de RFC.

Als dat zo is zit er niets anders op om het zelf te implementeren. Dan zou ik het proberen te doen via client certificates, zodat je voor tokens en validatie OpenSSL kan inzetten.
Je kunt zelf nog besluiten of je het hele protocol van de RFC overneemt, of dat je daar een eigen draai aan geeft.

Als ik ga zoeken op internet zijn er wel packages te vinden, zoals https://github.com/scheb/2fa/tree/6.x/src/trusted-device . En er zijn ook andere forum threads zoals https://gathering.tweakers.net/forum/list_messages/1745975 . Dat zou ik dan eerst doornemen om nog meer informatie/ideeen te krijgen. En de packages om te kijken hoe anderen het hebben geïmplenteerd, dat kan leerzaam zijn.
Gewijzigd op 23/08/2022 10:34:24 door Ad Fundum
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.