vendredi 24 juin 2011

Authentication system for Rails applications



Bonjour,


Aujourd'hui on va parler d'un problème que nous rencontrons à chaque fois que nous devons développer une application web avec un accès contrôlé.
Je veux dire par "accès contrôlé" que nous avons besoin d'être authentifié pour pouvoir effectuer certaines opérations.


Nous avons besoin de savoir qui fait quoi ! Ce qui nous pousse à protéger certaines sections de notre application supposées être réservées aux membres.


Pour réaliser une telle tâche on a souvent recours aux "solutions" prêtes. Ces solutions sont souvent des gems/plugins.
L'avantage de ces solutions c'est qu'elles ont été testées et améliorées par des milliers de programmeurs.


Leur plus grande faiblesse est que souvent elles ne sont pas faites pour vous spécialement. Ce qui rend la personnalisation de ces solutions un peu difficile. Car pour modifier le workflow défini par défaut il faut avoir une très bonne connaissance du langage Ruby pour éviter de faire du n'importe quoi et aussi savoir comment les plugins Rails sont conçus.
Nous n'allons pas entrer dans ce sujet car trop vaste et c'est un peu tôt pour nous de l'aborder.


Alors ! Et si on veut développer notre propre solution, comment faire ?


Une solution d'authentification doit être sûre, évolutive et facile à modeler. Et pour ce faire elle doit être totalement indépendante du reste de l'application.


Je vais partager avec vous ma façon de faire. Elle est très simple. Elle consiste en l'enregistrement de la signature du mot de passe et de la clé utilisée pour chiffrer. Donc les mots de passes enregistrés dans la base de données sont indéchiffrables en cas d'attaque sur votre serveur de bases de données.


The Model


Pour utiliser ce modéle dans vos applications, vous aurez juste besoin d'avoir les attributs suivants : login, hashed_password et salt qui représentent l'identifiant de l'utilisateur, le mot de passe crypté et la clé de cryptage.





Et le processus de création d'un nouveau compte reste le même !
 Utisateur.create(:attributs)

The controller


Et dans mon contrôleur j'ai mes méthodes de login et de logout.





The view


A ce stade nous avons un systéme de login/logout et création d'un nouveau compte utilisateur avec cryptage de mots de passe. Cette solution est très simple facile à embarquer dans toutes vos applications Rails.



Aucun commentaire:

Enregistrer un commentaire