Récupérer l'utilisateur Windows courant dans l'application Web Java EE à des fins de connexion unique
Je suis en train de faire une Java EE web application qui nécessite une connexion Unique avec Active Directory.
L'application ne sera plus prompt pour un nom d'utilisateur et mot de passe. Le processus d'authentification nécessiterait de récupération de Windows en cours de l'utilisateur connecté. Une fois que j'ai de l'utilisateur, j'ai besoin d'interroger Active Directory pour obtenir les rôles de l'utilisateur connecté. Je suis conscient que cela va exclure les non-utilisateurs de Windows, mais ce est une application interne et de tous les clients à l'aide de Windows.
- Je mettre en place l'authentification unique dans les 2 Java EE et web applications. 1 l'application est runnning sur GlassFish v2.1.1 (JDK 1.6) et l'autre est en cours d'exécution sur Tomcat (JDK 1.5).
Fondamentalement, mon principal problème est de savoir comment récupérer les Fenêtres de l'utilisateur connecté.
J'ai déjà trouver JAAS et Kerberos. Veuillez me corriger si je me trompe. Ma compréhension est que ce sont des protocole d'authentification et ils n'ont pas la fonction pour récupérer le windows actuel de l'utilisateur connecté.
J'ai déjà essayé ce qui suit, mais je suis toujours null
ou du Serveur nom d'utilisateur.
System.getProperty("user.name");
new com.sun.security.auth.module.NTSystem().getName();
request.getUserPrincipal().getName();
System.getenv("USERNAME");
- JCIF NTLM l'Authentification HTTP de Tomcat
- LoginContext
Je suis ouvert à toutes les suggestions.
source d'informationauteur Amy
Vous devez vous connecter pour publier un commentaire.
GAUFRE est une excellente solution pour cela. Il n'a pas besoin de configuration Kerberos.
SPNEGO est un projet open source qui fournit un filtre de servlet qui dispose d'Authentification Windows Intégrée.
Il a des instructions pour la configuration à la fois Tomcat et Glassfish.
Cela peut être utile:
http://webmoli.com/2009/08/29/single-sign-on-in-java-platform/
http://appliedcrypto.com/
JCIFS NTLM est n'est plus pris en charge (bien qu'il va travailler avec NTLMv1). Dans mon projet actuel, nous avons utilisé SPNEGO comme previosuly recommandé.
Les Options 1, 2 & 3 va essayer de vous obtenir le serveur de l'utilisateur, vous pourriez être réfléchir à l'endroit où ce code est en cours d'exécution & comment il pourrait interagir avec la machine client (indice: il ne peut pas)