asit-asso / extract

EXTRACT makes it easy to extract and deliver of your geodata
GNU General Public License v3.0
9 stars 4 forks source link

Implémenter la double authentification #255

Closed rogermaurer closed 5 months ago

rogermaurer commented 2 years ago

La sécurité d’Extract parait lacunaire au niveau de l'accès et l' implémentation d’une double authentification s'avère urgent.

Nous souhaitons donc implémenter un système de double authentification OPENSOURCE, par exemple Google Authenticator.

Mots clés : TFA / MFA / TOTP

guillaumestark commented 1 year ago

Objectif

Renforcer la sécurité de l'application Extract en implémentant un système d'authentification à deux facteurs.

Configuration / Maquettes

Télécharger toutes les maquettes

Aperçu

Création d'un nouvel utilisateur

Lors de la création d'un nouvel utilisateur, un toggle permet d'imposer l'utilisation de l'authentification à deux facteurs.

Cela signifie qu'après leur prochaine connexion, les utilisateurs devront obligatoirement configurer le 2FA.

Création d'un opérateur

https://xd.adobe.com/view/fd7f0c68-8d03-4e45-8442-b3d473e2c219-a82c/

Création d'un administrateur

https://xd.adobe.com/view/506bb4a6-c829-41f2-9598-e4abfdcd4565-0538/

Édition d'un autre utilisateur

Un administrateur qui édite un autre utilisateur peut effectuer les actions suivantes :

Administrateur édite un opérateur

https://xd.adobe.com/view/3610329d-f5a0-4688-ae3e-39a3e502ed69-6343/

Administrateur édite un administrateur

https://xd.adobe.com/view/af2ef184-3e79-4b8f-a473-30255f9016bd-fa7d/

Édition de son propre compte

Un utilisateur qui édite son compte peut effectuer les actions suivantes :

Administrateur édite son compte

https://xd.adobe.com/view/aef5ad25-259e-43fc-b1e6-9735cc449c23-fba6/

Opérateur édite son compte

https://xd.adobe.com/view/9ef4117a-bb6b-4d95-90e4-7d04bcba57d2-cba7/

Wizard de configuration 2FA

  1. L'utilisateur scanne le code QR avec son application Google Authenticator, créant ainsi un nouveau profil dans l'application.
  2. L'utilisateur saisit le code de vérification indiqué dans Google Authenticator et clic sur continuer
  3. Le serveur marque l'activation du 2FA dans le profil de l'utilisateur et la configuration est terminée
  4. Confirmation d'activation du 2FA – Possibilité de téléchargement / impression des codes de récupération

Notes :

Wizard de configuration – 2FA Imposé

https://xd.adobe.com/view/fadaf000-0802-4ae1-b183-856f980b62b8-af89/

Wizard de configuration – 2FA Non imposé

https://xd.adobe.com/view/050efcf2-f530-4aad-bd6e-4240e532d393-505d/

Vérification du code 2FA

  1. L'utilisateur saisit son code d'authentification. Il a aussi la possibilité de faire confiance à son appareil pendant 30 jours, pour lui éviter de devoir revérifier son code d'authentification à chaque connexion.
  2. L'utilisateur peut aussi utiliser un code de récupération récupéré au préalable pour vérifier sa connexion
  3. Une fois la vérification effectuée, l'utilisateur accède à la page Extract demandée.

Vérification du code 2FA

https://xd.adobe.com/view/388b1b7f-0e22-450a-871d-840aecd82d82-6dd8/

Liste des utilisateurs

Une nouvelle colonne est disponible dans la liste des utilisateurs pour mentionner le statut d'activation du 2FA.

https://xd.adobe.com/view/0c1bb0f7-6fc8-48b2-9801-fced2813542b-5948/

Flux utilisateur – Connexion à Extract

flux

Actions et changements de statut 2FA

Modification de son propre compte

modification_propre

Modification d'un utilisateur par un administrateur

modification_autre_compte

Quand le statut 2FA est en attente, cela signifie que l'utilisateur devra configurer le 2FA à sa prochaine connexion.

Critères d'acceptation

Identifiant Description
255-1 Le 2FA doit être implémenté avec Google Authenticator.
255-2 Tous les utilisateurs peuvent activer/réinitialiser le 2FA.
255-3 En tout temps, un administrateur peut activer / réinitialiser / désactiver le 2FA pour un autre utilisateur.
255-4 Les administrateurs peuvent toujours désactiver le 2FA pour leur propre compte une fois mis en place, même si le 2FA leur a été imposé.
255-5 Les opérateurs peuvent désactiver le 2FA seulement s'il n'est pas imposé pour eux.
255-6 Une fois que la configuration du 2FA est terminée, il est obligatoire de se connecter avec.
255-7 Les codes de récupération peuvent uniquement être téléchargés pendant le processus d'activation du 2FA
255-8 Lors de la vérification du code d'authentification après un login, l'utilisateur a la possibilité de faire confiance à son appareil pendant 30 jours.
rbovard commented 1 year ago
  1. Ne faudrait-il pas imposer le 2FA aux administrateurs ?
  2. En cas de 2FA non imposé, est-ce que l'utilisateur est sollicité à chaque connexion ou uniquement à un certain intervalle de temps ?
  3. Veut-on vraiment imposer Google Authenticator ? Ne serait-il pas plus judicieux de parler d'application de double authentification (ou autre terme), tout en mentionnant Google Authenticator comme exemple ?
guillaumestark commented 1 year ago

Hello, merci pour tes retours!

  1. Je me suis aussi posé la question initialement, mais je pense que si l'on impose le 2FA aux administrateurs, cela pourrait engendrer certains conflits. Par exemple, nous n'avons pas de rôle "super-admin", donc n'importe quel administrateur aura dans tous les cas la possibilité de désactiver le 2FA dans les réglages de manière globale ou pour un autre utilisateur. Donc en quelques sortes l'administrateur aura toujours moyen d'opt-out s'il le souhaite. Tu pensais à ce point au niveau sécurité?
  2. C'est un bon point que je vais préciser. L'utilisateur est sollicité si quelqu'un active le 2FA pour lui, mais si il ne souhaite pas l'activer et quitte le wizard de configuration, son statut doit passer de "En attente" à "Inactif" et il ne sera plus sollicité à l'avenir.
  3. Je pense que Google Authenticator est un choix pertinent, car c'est une application très répandue qui répond à nos besoins et j'imagine que certains des utilisateurs l'ont déjà installées pour d'autres services sur leur téléphone.
yblatti commented 1 year ago

Je me permets d'ajouter une remarque sur le point 3 : Google Authenticator est souvent utilisé comme terme générique pour "Application d'authentification à deux facteur TOTP (Time-based One-Time Passwords) selon la RFC 6238". C'est plus court :)

Mais cela signifie que toute application qui suit la RFC sera compatible, par exemple : Microsoft Authenticator, Authy, Duo Mobile (avec third-party passcode), LastPass Authenticator, Step Two, etc.

rbovard commented 1 year ago
  1. Oui, étant donné que c'est un utilisateur critique, l'idée était de sécuriser au maximum ce compte. Après s'il peut sciemment désactiver le 2FA pour lui c'est autre chose, mais au moins par défaut c'est une configuration sécurisée qui est proposée.
  2. Ok, parfait
  3. Oui, l'idée était de ne pas "obliger" une certaine application, ce que des personnes novices pourraient comprendre en lisant les textes actuels.
rogermaurer commented 1 year ago

Je suis entièrement d'accord avec les remarques de Rémi. De plus, pourrait-on avoir une option permettant de forcer l'activation du 2ème facteur pour tous les utilisateurs par défaut? Cela éviterait de le faire manuellement sur chaque compte et servirait d'option par défaut pour tous les nouveaux comptes.

guillaumestark commented 1 year ago

Merci à vous deux pour vos remarques pertinentes. Je discuterai de l'implémentation de celles-ci avec ArxIT la semaine prochaine et vous ferai un retour ici.

yblatti commented 1 year ago

Suite aux discussion avec ArxIT nous proposons de séparer le statut (dans le formulaire), de l'action (activation, réinitialisation, suppression) dans la barre d'action afin d'éviter la confusion.

1

2

N.B. Nous pensons aussi qu'un nouveau travail sur l'ergonomie du compte et de l’édition des utilisateurs sera à prévoir dans le futur.