Mon entreprise développe et vend une application SaaS qui compte des centaines de clients. Certains de nos clients nous ont demandé de prendre en charge l'intégration LDAP pour l'authentification des comptes utilisateurs par rapport à leurs systèmes existants au lieu d'avoir à créer un autre compte de connexion pour chacun de leurs employés. Cela ressemble à ce que l'on appelle l'authentification unique (SSO) dans de nombreux endroits? Naturellement, notre système dispose déjà d'un mécanisme pour maintenir les profils de compte d'utilisateur et authentifier ces comptes d'utilisateur à partir de notre page de connexion.
Nous ignorons un peu LDAP et sommes confus à propos de certaines choses. Veuillez excuser l'utilisation possible d'une mauvaise terminologie (rappelez-vous, nous sommes un peu ignorants à ce sujet).
Nous pensons que nous comprenons les bases de la façon dont cela pourrait fonctionner:
En supposant que les informations ci-dessus soient même semi-correctes, nous aurons toujours besoin que chaque utilisateur ait un compte dans notre système. N'aurons-nous pas besoin d'un moyen de synchroniser nos profils de compte d'utilisateur avec les profils d'utilisateur dans l'annuaire LDAP? S'agit-il simplement d'un "ID externe" qui fait référence à l'ID de l'utilisateur dans le système LDAP? Serait-il alors nécessaire que le script "d'authentification à distance" du client fournisse cet ID à notre système afin que nous sachions à quel compte utilisateur de notre système associer la connexion?
Que nous manque-t-il?
BTW, notre plate-forme est IIS, ASP.Net 2.0 et SQL Server 2005.
Il existe plusieurs options. Si vous voulez vraiment dire LDAP, par opposition à simplement Active Directory, je chercherais probablement à utiliser System.DirectoryServices.Protocols pour effectuer une liaison LDAP en utilisant les informations d'identification fournies via un canal sécurisé.
Strictement, ce n'est pas l'authentification unique. L'authentification unique signifie que vous n'avez à soumettre vos informations d'identification qu'une seule fois lors de votre première connexion. Cela réduit simplement la complexité pour les utilisateurs en n'ayant qu'un seul ID. Habituellement, pour les clients Windows dans un environnement d'entreprise avec un mélange de plates-formes et de technologies, l'authentification unique est réalisée par un client ajouté au bureau qui gère l'authentification auprès de divers systèmes. Dans un environnement MS uniquement, vous pouvez obtenir l'authentification unique si toutes vos applications Web sont sur IIS, vous utilisez IE et utilisez l'authentification Windows intégrée, l'emprunt d'identité et tout le reste).
Vous pouvez envisager d'inscrire automatiquement un utilisateur authentifié dans votre système, sauf si vous avez besoin que les données de type profil soient préconfigurées. Si vous avez besoin d'une préconfiguration d'utilisateurs, vous pouvez envisager d'importer régulièrement (tous ou un sous-ensemble filtré) des utilisateurs à partir de l'annuaire LDAP et de les avoir dans un état non configuré, de sorte que les administrateurs choisissent dans une liste existante de non utilisateurs configurés plutôt que de taper des identifiants. Sinon, vous risquez que vos administrateurs tapent le mauvais ID utilisateur et présentent des décalages.
Vous pouvez fournir une API telle que les solutions de gestion des identités et des accès (compte tenu de votre orientation Microsoft, voir ILM2 007 comme exemple) peuvent s'intégrer à votre système et effectuer toute la gestion des comptes d'utilisateurs pour vous.
Comme toujours, n'oubliez pas de valider le test d'authentification pour vous assurer que le mot de passe envoyé n'est pas vierge.
Une liaison avec un nom d'utilisateur et aucun mot de passe est considérée comme une liaison anonyme, selon la norme, et semble avoir réussi! En fait, ce n'était vraiment pas le cas.
C'est un problème que l'application doit gérer, car le serveur LDAP ne fait que suivre la norme, une norme ennuyeuse, mais néanmoins une norme.
Pensez peut-être à l'authentification et à l'autorisation
Authentification - quel utilisateur est-ce? Autorisation - qui devrait pouvoir utiliser l'application, les utilisateurs spécifiés, les groupes?
Actuellement, vous impliquez une autorisation via l'authentification, car seuls ceux qui sont enregistrés dans votre application sont autorisés à l'utiliser.
Si vous utilisez un répertoire au lieu de votre banque de données personnalisée,
Si vos utilisateurs veulent vraiment LDAP générique, alors vous voulez regarder dans (C) ldap_connect, ldap_bind_s
(C #) LDAPConnection System.DirectoryServices.Protocols
Ou encore, revenez à AD this connexion unique démystifiée .Net App pourrait aider
La façon dont cela fonctionne dans notre système:
De cette façon, l'utilisateur peut réutiliser son authentification de domaine Windows dans notre application.
Voici un logiciel utile qui permet d'accéder aux répertoires LDAP sur le Web, à l'aide de JSON-RPC: Json2Ldap
Vous devez décider comment vous envisagez de lier un utilisateur LDAP à un compte dans votre application.
Par exemple, vous pouvez exiger que le nom d'utilisateur dans le système LDAP corresponde au nom d'utilisateur dans votre application, ou vous pouvez exiger que quelqu'un spécifie explicitement un nom d'utilisateur LDAP dans chaque compte d'utilisateur de votre application.
Une fois que vous avez compris ce lien, vous pouvez simplement exécuter une liaison LDAP pour tester les informations d'identification de l'utilisateur.