IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

SSO NTLMv2 et Active directory


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    716
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 716
    Points : 112
    Points
    112
    Par défaut SSO NTLMv2 et Active directory
    Bonjour,

    Je souhaite faire une authentification "automatique" avec mon application web tournant sous JBoss.

    J'ai déjà mis en place l'authentification avec Active Directory grâce à la librairie jldap : l'utilisateur s'authentifie, on va ensuite vérifier que les login/mot de passe concordent avec ceux dans Active directory avant d'authentifier l'utilisateur.

    Il me manque donc la partie SSO sur lequel je ne sais pas trop comment faire, ni quel librairie utiliser.
    Le principe est d'utiliser l'utilisateur authentifier dans Windows.
    Ce que j'ai pu voir sur internet, c'est qu'il y a des librairies permettant de vérifier que l'utilisateur est authentifié via des filtres mis en place avec des fichiers XML si j'ai bien compris.
    Mais a aucun moment, je ne vois comment récupérer les identifiants de l'utilisateur pour ensuite les vérifier dans Active Directory.

    Merci pour votre aide.

  2. #2
    Membre averti Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 441
    Points
    441
    Par défaut
    Salut.

    Il y a des API telles que celle-ci.

    AMHA, c'est le filtre déclaré dans le web.xml qui s'occupe de faire le travail.
    Dans l'exemple, dans index.jsp, on voit simplement un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRemoteUser()
    Après il faut voir ce que le filtre positionne comme informations, et ce qui est exploitable

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    716
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 716
    Points : 112
    Points
    112
    Par défaut
    Bonjour,

    J’ai en effettrouvé principalement 2 librairies en java supportant NTLMv2 et SSO :
    - http://ntlmv2auth.sourceforge.net/integration.html
    - http://www.ioplex.com/

    La seconde est payante si l’on dépasse plus de 25 utilisateurs.

    Je me suis donc tourné vers ntlmv2auth.
    J'ai lancé l'application démo et cela me demande mon Login/Mot de passe, je ne suis pas loggé automatiquement.

    Le second problème c'est que dans le fichier web.xml, je vois de déclaré le login et le mot de passe de l'ordinateur.
    Je ne comprends pas pourquoi il y a ça, le but du SSO est de récupérer celui du PC Windows qui est loggé.

    Je n'ai pas trouvé de tutorial/documentation concrète sur cette librairie.

    Merci pour votre aide.

  4. #4
    Membre averti Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 441
    Points
    441
    Par défaut
    Dans le fichier WEB.XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            <init-param>
                <!-- Computer account for connection to DC -->
                <param-name>ntlm-account</param-name>
                <param-value>TECHUSER$@ACME.CORP</param-value>
            </init-param>
            <init-param>
                <!-- Password of computer account -->
                <param-name>ntlm-password</param-name>
                <param-value>test1234</param-value>
            </init-param>
    Il s'agit de la configuration de l'utilisateur générique permettant d'accéder au NTLM. Il faut bien qu'il soit authentifié pour pouvoir accéder aux données et transmettre celles récupérées du PC utilisateur.

    S'il te demande tes identifiants/MDP, c'est, je pense, parce que les informations sont erronées sur la configuration.

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    716
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 716
    Points : 112
    Points
    112
    Par défaut
    Bonjour,

    J'ai essayé de configurer le fichier web.xml comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <?xml version="1.0" encoding="utf-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
     
    	<filter>
           	<filter-name>ntlmv2-auth</filter-name>
           	<filter-class>org.ntlmv2.filter.NtlmFilter</filter-class>
    		<init-param>
    			<!-- Windows domain name -->
    			<param-name>ntlm-domain</param-name>
    			<param-value>JAA</param-value>
    		</init-param>
    		<init-param>
    			<!-- IP-address of domain controller -->
    			<param-name>ntlm-dc</param-name>
    			<param-value>172.16.15.104</param-value>
    		</init-param>
    		<init-param>
    			<!-- Simple (non-FQDN) hostname of DC host -->
    			<param-name>ntlm-dc-name</param-name>
    			<param-value>NOK59439</param-value>
    		</init-param>
    		<init-param>
    			<!-- Computer account for connection to DC -->
    			<param-name>ntlm-account</param-name>
    			<param-value>Administrateur</param-value>
    		</init-param>
    		<init-param>
    			<!-- Password of computer account -->
    			<param-name>ntlm-password</param-name>
    			<param-value>motdepasseadmin</param-value>
    		</init-param>
    	</filter>
     
    	<filter-mapping>
    		<filter-name>ntlmv2-auth</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
     
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    	</welcome-file-list>
    </web-app>
    J'ai mis ces valeurs :
    ntlm-domain : Groupe de travail windows
    ntlm-dc : adresse IP de mon PC
    ntlm-dc-name : nom de mon PC
    ntlm-account : login
    ntlm-password : mot de passe
    Dans les logs du serveur au démarrage j'ai cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Filter - Initializing NTLMv2 filter...
    2014-04-02 10:59:14,078 ERROR [STDERR] 20 [main] INFO org.ntlmv2.filter.NtlmFilter - Windows domain: JAA
    2014-04-02 10:59:14,078 ERROR [STDERR] 20 [main] INFO org.ntlmv2.filter.NtlmFilter - Domain controller IP address: 172.16.15.104
    2014-04-02 10:59:14,078 ERROR [STDERR] 20 [main] INFO org.ntlmv2.filter.NtlmFilter - Domain controller hostname: NOK59439
    2014-04-02 10:59:14,078 ERROR [STDERR] 20 [main] INFO org.ntlmv2.filter.NtlmFilter - Computer account name: Administrateur
    2014-04-02 10:59:14,078 ERROR [STDERR] 20 [main] INFO org.ntlmv2.filter.NtlmFilter - Computer account password: hello
    2014-04-02 10:59:14,080 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/ntlmv2-demoapp-1.0.5]] Exception au démarrage du filtre ntlmv2-auth
    javax.servlet.ServletException: NTLM filter initialization failed. Reason: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    Sans modifier le fichier web.xml, j'avais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    2014-04-02 11:03:49,399 INFO  [org.apache.catalina.loader.WebappClassLoader] validateJarFile(C:\Unify\NXJWork\jboss\server\default\tmp\deploy\tmp3478474003222340808ntlmv2-demoapp-1.0.5-exp.war\WEB-INF\lib\servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    2014-04-02 11:03:49,439 ERROR [STDERR] 1 [ScannerThread] INFO org.ntlmv2.filter.NtlmFilter - Initializing NTLMv2 filter...
    2014-04-02 11:03:49,455 ERROR [STDERR] 17 [ScannerThread] INFO org.ntlmv2.filter.NtlmFilter - Windows domain: ACME.CORP
    2014-04-02 11:03:49,455 ERROR [STDERR] 17 [ScannerThread] INFO org.ntlmv2.filter.NtlmFilter - Domain controller IP address: dcone.acme.com
    2014-04-02 11:03:49,455 ERROR [STDERR] 17 [ScannerThread] INFO org.ntlmv2.filter.NtlmFilter - Domain controller hostname: dcone
    2014-04-02 11:03:49,456 ERROR [STDERR] 18 [ScannerThread] INFO org.ntlmv2.filter.NtlmFilter - Computer account name: TECHUSER$@ACME.CORP
    2014-04-02 11:03:49,456 ERROR [STDERR] 18 [ScannerThread] INFO org.ntlmv2.filter.NtlmFilter - Computer account password: test1234
    2014-04-02 11:03:49,457 ERROR [STDERR] 19 [ScannerThread] INFO org.ntlmv2.liferay.NtlmServiceAccount - --> account: TECHUSER$@ACME.CORP
    2014-04-02 11:03:49,457 ERROR [STDERR] 19 [ScannerThread] INFO org.ntlmv2.liferay.NtlmServiceAccount - --> accountName: TECHUSER$
    2014-04-02 11:03:49,458 ERROR [STDERR] 20 [ScannerThread] INFO org.ntlmv2.liferay.NtlmServiceAccount - --> computerName: TECHUSER
    2014-04-02 11:03:49,466 ERROR [STDERR] 28 [ScannerThread] INFO org.ntlmv2.filter.NtlmFilter - NTLMv2 filter initialized.
    J'ai peut être mal configurer le fichier web.xml ?
    Merci pour votre aide.

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    716
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 716
    Points : 112
    Points
    112
    Par défaut
    Bonjour,

    J'ai trouvé pourquoi l'erreur se produisait : il faut que dans le compte utilisateur il y ait $@ mais je ne comprends pas pourquoi.

    Dans le log il affiche cela :
    2014-06-12 11:16:48,474 ERROR [STDERR] 31 [ScannerThread] INFO org.ntlmv2.liferay.NtlmServiceAccount - --> account: TECHUSER$@ACME.CORP
    2014-06-12 11:16:48,474 ERROR [STDERR] 31 [ScannerThread] INFO org.ntlmv2.liferay.NtlmServiceAccount - --> accountName: TECHUSER$
    2014-06-12 11:16:48,474 ERROR [STDERR] 31 [ScannerThread] INFO org.ntlmv2.liferay.NtlmServiceAccount - --> computerName: TECHUSER

    Cela veut il dire que le nom de l'ordinateur doit être TECHUSER, le nom du compte sur l'ordinateur TECHUSER$ ?

    Je n'arrive pas à comprendre comment mettre cela en place.

    Merci pour votre aide.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2013
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Salut,

    Si tu cherche a récupérer le login windows, j'ai donné une solution dans ce sujet. C'est ce que j'utilise pour le SSO et il fonctionne très bien.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/01/2013, 17h05
  2. SSO apache / active directory
    Par benkunz dans le forum Apache
    Réponses: 2
    Dernier message: 29/03/2012, 15h08
  3. Oracle Active Directory SSO
    Par villegente dans le forum Outils
    Réponses: 5
    Dernier message: 01/03/2012, 23h02
  4. Réponses: 0
    Dernier message: 12/08/2010, 11h27
  5. Réponses: 2
    Dernier message: 06/02/2006, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo