2010-11-09 2 views
2

Je dois autoriser les utilisateurs à utiliser son compte Windows dans une application Web. J'utilise LDAP pour valider avec Active Directory si l'utilisateur/pwd dans un domaine spécifique est correct, mais j'ai besoin d'une liste des domaines disponibles car les utilisateurs peuvent provenir de différents domaines. J'essaie une requête DNS SRV pour lister les serveurs ldap (_ldap._tcp) mais je n'obtiens pas les serveurs Active Directory ssl ldap. L'application hôte est dans une machine Unix, pas Windows.Comment lister les domaines Windows disponibles à partir d'une application Java?

+0

Authorizate? Tu veux dire Autoriser sûrement? –

+0

@Gary Rowe: Oui, autoriser. Désolé mon pauvre anglais – MegaTux

+0

Mieux que mon espagnol! ;-) –

Répondre

1

Je ne peux pas être sûr que cela ne fonctionnera que je n'ai pas accès aux bibliothèques nécessaires, mais il semble que vous aurez besoin de faire quelque chose comme ceci:

Procurez-vous des ADSI JARs . C'est le bit vraiment difficile. Perhaps this article can help avec la configuration initiale ou vous can go with J++ here, ou peut-être this one from Isocra consulting. Si vous hébergez votre application sous Linux et appelez un serveur AD Windows, reportez-vous à la section 3 du premier article. En substance, vous allez créer des proxies Java sur l'objet COM ADSI, puis les appeler via un serveur AD distant.

Une fois qui est configuré, cela pourrait tout simplement faire

public class Main { 

    public static void main(String args[]) throws Exception { 
     // The key is not to include any domain in your call apparently 
     Set domains = (Set) ADsGetObject("WinNT:", IADs.iid); 
     for (PropertyCache domain: domains) { 
     System.out.println(domain.getName()); 
     } 
    } 

    /** 
    * @dll.import("activeds", ole) 
    */ 
    private static native IUnknown ADsGetObject(String path, _Guid riid); 

} 

Plutôt que d'être une réponse complète, cela peut simplement vous aider à démarrer dans la bonne direction. Cependant, il semble que cela pourrait être très difficile de travailler.

This SO answer may also help (it's in C#)

+0

Cette solution semble utiliser les API Windows avec JNI. L'application est hébergée sur une machine Unix. – MegaTux

+0

@MegaTux J'ai modifié la réponse pour répondre à votre commentaire. –

+0

merci. Il est similaire à ce lien: http://itchanged.com/FindingAllDomainsInAnActiveDirectoryForest.html dans Visual .net mais ne peut toujours pas le faire avec java & mon env. installation encore. – MegaTux

Questions connexes