Obtenez de l'identifiant de client qui s'est connecté au serveur web
Voici le scénario. Je suis du code s'exécutant sur un serveur web dans un domaine AD. Certains client s'est connecté pour moi. Comment puis-je obtenir que le nom d'utilisateur du client, sans avoir le client de remplir un formulaire dans un navigateur? Doit utiliser les technologies Java sur le web côté serveur.
edit:
J'ai fini par utiliser le Printemps de Sécurité Négocier Filtre comme décrit dans le lien ci-dessous. Il y a un tutoriel disponible. À l'aide de demande.getPrincipal().getName() de l'intérieur d'une servlet donne le nom d'utilisateur.
btw, la raison en est que je suis en utilisant tomcat et le printemps.
Il n'y a pas de nom d'utilisateur. Votre demande est intrinsèquement pas de sens, sauf si vous êtes dans un domaine AD.
Je suis dans un domaine AD. Désolé de ne pas compris que l'essentiel de l'info.
Vous devez configurer l'authentification NTLM. Je n'ai aucune idée de comment faire cela dans Tomcat.
la question est marqué 'printemps-sécurité". êtes-vous de l'utiliser pour s'authentifier?
Il n'y a pas de nom d'utilisateur. Votre demande est intrinsèquement pas de sens, sauf si vous êtes dans un domaine AD.
Je suis dans un domaine AD. Désolé de ne pas compris que l'essentiel de l'info.
Vous devez configurer l'authentification NTLM. Je n'ai aucune idée de comment faire cela dans Tomcat.
la question est marqué 'printemps-sécurité". êtes-vous de l'utiliser pour s'authentifier?
OriginalL'auteur KyleM | 2011-04-28
Vous devez vous connecter pour publier un commentaire.
Vous devez configurer le Printemps de Sécurité Kerberos extension - c'est la seule sortie de la boîte moyen de faire ce que vous décrivez au Printemps de Sécurité 3. Cela prend en charge SPNEGO de négociation, mais nécessite une certaine quantité de configuration sur le serveur (et de la connaissance de la façon dont SPNEGO et Kerberos fonctionne).
Il n'y a pas beaucoup de documentation - mais Mike exemples d'applications qu'il est livré avec 1.0M2 sont grands, et couvrent la plupart des scénarios les plus courants, y compris automatisé de l'authentification SPNEGO.
La clé pour SPNEGO est de mettre en place une coutume
AuthenticationEntryPoint
- vous aurez besoin de faire cela avec une coutume printemps bean comme suit:... il y a plus de haricots qui va être nécessaire en plus de ces (encore une fois, reportez-vous à la échantillons w/Kerberos extension). Poste précédent si vous obtenez plus loin avec Ressort de Sécurité ou si vous voulez des détails précis (comme il y a un certain nombre de haricots /config bits impliqués, une certaine connaissance de votre configuration serait utile, par exemple si vous utilisez le
<http>
espace de noms de style ou pas).Autre que cette option, vous devez définir un type similaire de SPNEGO auth (comme l'utilisation de GAUFRE, comme vous le suggérez) - les autres AINSI en question couvrir ce assez bien.
Enfin, vous pourriez peut-être avant Tomcat avec un autre serveur web qui prend en charge SPNEGO ou NTLM mieux, comme Microsoft IIS ou Apache Web Server avec mod_spnego.
Nous espérons que l'une de ces idées serait travailler pour vous!
Juste pour préciser - si vous êtes sur un domaine AD comme vous le décrivez, vous êtes probablement déjà en cours d'exécution Kerberos - W2K3 et ont généralement activé par défaut.
OriginalL'auteur Peter Mularien
Ce navigateur sont vos utilisateurs à l'aide? Si IE; il y a une solution simple:
J'ai imaginé dans un environnement contrôlé, vous n'auriez pas motivé utilisateurs, de toute façon, merci pour le upvote.
Vous avez raison, mais j'en doute un utilisateur dans mon environnement de tenter (ou même de savoir comment), mais je suis très prudent, et il ne fait pas de mal pour l'amour de l'apprentissage.
Je vois. Merci de ne poster votre solution finale ici, je serais extrêmement curieux - pour l'amour de l'apprentissage.
Vos commentaires m'ont fait rire. Il m'a rappelé de la cubique de ferme en SQ3.
OriginalL'auteur abalogh
Le dernier moyen pour Windows est SPNEGO. Pour le faire fonctionner pleinement, vous devez vous serveur pour avoir un compte dans l'AD, et de communiquer avec Kerberos. Puis le Printemps de Sécurité, on m'a dit, prend en charge cette.
Maintenant, pas toujours, vous devez autoriser les utilisateurs. Parfois (par exemple, pour les stats raisons), il suffit d'obtenir l'id de l'ANNONCE de l'utilisateur. Quand je jouais avec SPNEGO, les données binaires qui a été adoptée par navigateur dont l'id utilisateur en texte clair. Il peut être extrait à partir de là, mais ne peut pas faire confiance, bien sûr.
NTLM est obsolète, considéré comme moins sûr, et largement déployé à partir de l'environnement.
OriginalL'auteur Vladimir Dyuzhev
Si vous utilisez Tomcat, puis utilisez GAUFRE.
OriginalL'auteur Alex
Je parie que vous pouvez mettre serveur web Apache en front de apache tomcat, ce qui peut s'authentifier à l'aide de NTLM ou Kerberos. Ensuite, vous pouvez utiliser des règles de réécriture pour envoyé des demandes de tomcat avec le nom d'utilisateur dans la plaine. C'est juste une idée, je n'ai pas mis en œuvre moi-même. Cependant, nous sommes à l'aide d'Apache l'authentification Kerberos dans notre intranet. Ma suggestion est de ne pas utiliser NTLM, c'est obsolète et squameuse.
OriginalL'auteur Mike Starov