Question

Je développe une application client / serveur personnalisée qui demande au client de se connecter avec son nom d'utilisateur et son mot de passe. Les comptes d'utilisateurs ne sont en aucun cas liés aux comptes Windows / AD. Après la connexion, l'application client demandera d'autres services au système serveur.

Ma question est la suivante: quel est le meilleur moyen de mettre cela en œuvre? Quel type d'architecture conviendrait le mieux ici? J'imagine qu'une sorte de système d'authentification de ticket / jeton doit être implémenté ???

Merci

Était-ce utile?

La solution

En fait, vous souhaiterez peut-être mettre en place un système qui transmet les "tickets". entre les différentes parties (serveur de connexion, client, serveur d'applications). Ce ticket contiendra des informations de base telles que l'ID utilisateur (le nom d'utilisateur, l'ID de la ligne, etc.). Ce ticket sera soit chiffré avec une clé secrète partagée par les serveurs autorisés, soit marqué d’un hachage du contenu du ticket salé d’une clé secrète partagée par les serveurs. Le premier moyen permet uniquement aux serveurs autorisés de créer et de lire le ticket, tandis que le second permet aux serveurs autorisés de vérifier que seuls les serveurs autorisés ont pu créer le ticket, tout en permettant à quiconque de le lire. Tous les serveurs d'applications vérifieront le ticket (en tentant de le déchiffrer ou en vérifiant que le hachage correspond) avant de poursuivre les actions à protéger. S'il s'agit d'une application Web, les cookies sont un bon endroit pour stocker le ticket.

Autres conseils

Vous n’avez pas beaucoup parlé de votre architecture, mis à part qu’il s’agit de Client / Serveur, je suppose donc que vous utilisez une sorte de concepteur de formulaires comme Windows Forms dans VS. Dans ces cas, j’ai toujours utilisé une forme d’authentification de table de base de données, qui est simple, facile à installer et raisonnablement sécurisée. Vous pouvez même créer des groupes et des rôles de cette façon, sans grande difficulté.

Table:  Users
Fields: UserID   PK
        Login    Text
        Password Text
        ...

Table:  Roles
Fields: RoleID   PK
        Role     Text
        ...

Table:  UserRoles
Fields: UserID    FK
        RoleID    FK
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top