2010-06-30 7 views
1

J'ai une application de bureau et je peux obtenir le nom d'utilisateur de domaine avec authentication.getPrincipal(). ToString() ligne de code.Si le nom de domaine et l'entrée de l'utilisateur correspond exactement j'ai accordé tous les accès à l'utilisateur. D'un autre côté, lorsque l'utilisateur tape un autre nom d'utilisateur (qui ne correspond pas au nom d'utilisateur du domaine), le programme vérifie le mot de passe dans la base de données. Le problème est que je veux vérifier le mot de passe avec les mots de passe de domaine Windows pas avec DB.Lorsque l'utilisateur écrit le nom d'utilisateur, le programme devrait rechercher le mot de passe de domaine de Windows pour ce nom d'utilisateur.J'essaie LDAP mais je ne pouvais pas obtenir le mot de passe de domaine avec LDAP.Windows mot de passe Authentification avec LDAP

Existe-t-il un moyen de vérifier les utilisateurs avec des mots de passe de domaine? En d'autres termes, existe-t-il un moyen possible de rechercher le mot de passe qui appartient à l'utilisateur?

+1

Je viens d'apprendre cette propriété pour le moment, désolé :) Je l'ai fait. –

Répondre

3

Il devrait être impossible de récupérer les mots de passe (personne ne devrait pouvoir obtenir le mot de passe d'un autre utilisateur). Cependant, s'ils accèdent alors que vous êtes connecté en tant que compte, vous n'avez pas besoin de vérifier le mot de passe. Le fait que vous pouvez aller authentification.getPrincipal montre qu'ils sont connecté en tant que cet utilisateur - vous n'avez plus besoin de demander un mot de passe. Sinon, s'ils accèdent en utilisant un nom d'utilisateur et un mot de passe Windows auth authentifié alors qu'ils ne sont pas connectés en tant qu'utilisateur, il peut y avoir un moyen de voir si leur mot de passe est valide mais j'en doute car l'appel booléen IsValid() laissez-vous savoir que le mot de passe que vous venez de remettre était valide et en tant que tel, Windows a divulgué son mot de passe.

Edit:

Java LDAP code d'authentification (source: http://java.sun.com/products/jndi/tutorial/ldap/security/ldap.html)

// Set up the environment for creating the initial context 
Hashtable env = new Hashtable(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, 
    "com.sun.jndi.ldap.LdapCtxFactory"); 
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial"); 

// Authenticate 
env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
env.put(Context.SECURITY_PRINCIPAL, authentication.getPrincipal().toString()); 
env.put(Context.SECURITY_CREDENTIALS, "PASSWORD"); 

// Create the initial context 
DirContext ctx = new InitialDirContext(env); 
+1

Le problème est que quand l'utilisateur essaye de se connecter avec un autre ordinateur, je veux faire un contrôle de mot de passe parce qu'il essaye de se connecter un autre ordinateur qui a différent domaine de son domaine. Donc c'est impossible avec LDAP? –

+0

Réponse mise à jour avec le code –

Questions connexes