2010-01-05 7 views
4

Je déteste réinventer la roue alors je cherche une solution existante pour créer un système d'authentification simple pour mon application. J'ai expérimenté pendant un certain temps en utilisant CardSpace ou OpenID dans l'application mais je ne peux pas convaincre la direction que ces solutions fonctionneraient. Bien sûr, je pourrais simplement construire une boîte de dialogue de connexion simple où le nom d'utilisateur, le domaine et le mot de passe (hashed) sont stockés dans une table de base de données et j'ai déjà fait une telle chose plusieurs fois. Je déteste cette solution car je pense que c'est juste une option faible. Et je ne veux pas passer trop de temps à essayer de rendre le système d'ouverture de session aussi sécurisé que possible, d'autant plus que je pense qu'il devrait exister des solutions pour cela. Donc, à côté de OpenID/OpenAuth et CardSpace, existe-t-il d'autres solutions d'authentification pouvant être utilisées à partir d'une application Delphi/WIN32? Suggestions pour un système d'authentification utilisateur pratique?


En ce moment, l'application sera utilisée par de nombreux clients. La plupart sont des environnements mono-utilisateur, bien qu'il soit probable que certains d'entre eux commencent à avoir deux à cinq utilisateurs une fois ce système d'authentification ajouté. Mais nous voulons soutenir un client qui doit autoriser environ 500 utilisateurs différents sur la même application. Ceux-ci sont répartis dans environ 100 bureaux, mais ils se connectent tous à la même base de données SQL Server. (MS Access en ce moment, mais nous permettons à cet utilisateur d'utiliser SQL Server à la place.) Pour rendre les choses encore plus intéressantes, le client utilise Citrix pour centraliser les systèmes utilisateur et l'application a un accès direct à la base de données SQL Server . Ce n'est pas une configuration idéale mais là encore, le client ne paie pas vraiment pour cela. Nous sommes en train de configurer un environnement de test. Une preuve de concept que le client va tester pour nous. Les défauts seront résolus plus tard. Mais en ce moment j'ai besoin de solutions rapides et l'un d'entre eux est un système d'authentification pratique où je n'ai pas besoin d'écrire beaucoup de code.

+0

Quels sont les problèmes que votre gestion a avec Cardspace/OpenID? Ceci pourrait aider à identifier une solution, ou peut-être à nous aider à fournir des contre-arguments. Quelles sont les exigences de votre solution d'authentification? –

+0

Cardspace s'est avéré être un peu peu fiable. Sur mon système, la base de données de Cardspace est devenue corrompue et j'ai perdu un compte. Un autre développeur a apparemment désactivé la fonction Cardspace sur son système, de sorte qu'il n'apparaît même pas. Et un manager est devenu complètement confus sur la façon dont il devait créer sa propre carte juste pour se connecter. Il lui manquait le nom d'utilisateur/mot de passe habituel. Il est difficile de convaincre les gens d'utiliser une interface de connexion complètement différente de celle à laquelle ils sont habitués. –

+0

Avec OpenID, nous avons tendance à avoir un problème avec les fournisseurs d'identification qui doivent être accessibles sur Internet. Certains utilisateurs ont bloqué toutes les demandes réseau Int * ER * sortantes, de sorte qu'ils auraient besoin d'un mécanisme de fournisseur OpenID interne accessible par leur réseau Intr * A * net. Mais le grand client n'est pas content non plus d'installer un serveur web/service interne. –

Répondre

1

Avez-vous envisagé d'utiliser l'authentification SQL Server et de ne pas autoriser l'authentification pour ceux qui utilisent une base de données Access? Si vous utilisez le nouveau SQL Server Native Client et SQL Server 2005, vous pouvez avoir des mots de passe qui expirent et les modifier à partir de votre application cliente. Tous les outils permettant de créer et de gérer les comptes d'utilisateurs sont intégrés à SQL Server Management Studio. Et si vous décidez ultérieurement de prendre en charge l'authentification Windows, vous devez simplement modifier votre chaîne de connexion.

Nous avons un système où les utilisateurs du réseau utilisent l'authentification Windows pour ne pas avoir à se soucier d'un autre nom d'utilisateur et mot de passe. Pour les utilisateurs qui accèdent au système via un VPN et des machines non liées au domaine, ils utilisent l'authentification SQL.

Voici la page MSDN qui parle de traiter passwords programmatically in SQL Server 2005

Vous ne devez vous assurer que SQL Server Native Client is installed, mais est simple par rapport au reste de l'ADO.

1

Je suggère alors

  1. Delphi - depuis que vous utilisez Delphi :)
  2. open source - puisque vous devez être en mesure de comprendre ce qui est faux s'il y a un problème, vous voulez probablement c'est bon marché.

Alors, voici quelques solutions:

http://www.torry.net/pages.php?id=313

CoWindowsAccount v.1.0 
SSecurity v.1.2.1.3 

http://free-password-manager-plus.software.informer.com/1.6/

+1

Il ne doit pas être bon marché, tant qu'il peut être utilisé pour créer une démo. Mais SSecurity semble le plus prometteur. –

+0

+1 merci pour les commentaires Alex –

+0

Basé sur cette question, j'ai essayé SSecurity. Pas de documentation et il semble que l'auteur ne le développe plus activement, mais la source est là et ça semble bien. –

1

Il pourrait fonctionner à vos besoins, mais pourquoi ne pas demander de Windows pour le domaine actuel et le nom d'utilisateur, et les utiliser comme ID uniques. Windows a déjà effectué l'authentification, et il enregistre les utilisateurs qui créent de nouveaux mots de passe ou quoi que ce soit. Je l'ai utilisé à bon escient. J'ai également fait en option d'inclure le nom de la machine dans l'ID, de sorte que le même utilisateur sur différents ordinateurs serait également unique.

+0

Tous les utilisateurs n'ont pas de jeton d'authentification Windows unique. Environ 10% de tous les utilisateurs partagent le même compte Windows d'une manière ou d'une autre. Ils utilisent une sorte d'application de bureau à distance qu'ils peuvent utiliser depuis n'importe quel navigateur Web. Mais le logiciel côté serveur n'utilise qu'un seul compte Windows, pas un compte par utilisateur. –

Questions connexes