2009-06-16 5 views
0

Quelle est la meilleure façon d'obtenir l'utilisateur connecté via l'application Java s'exécutant sur JBoss. La variable d'environnement système System.getProperty ("user.name") ne fonctionne pas lorsque JBoss s'exécute en tant que service.Environnement système Java Variable Utilisateur actuel

L'application fonctionne sur un ordinateur portable exécutant Windows XP. L'application est basée sur le Web et accessible via Internet Explorer par un utilisateur Windows connecté. Un seul utilisateur Windows peut être connecté à la fois. L'application doit savoir quel utilisateur s'est connecté pour effectuer un menu basé sur des rôles et des fonctions de sécurité. Ainsi, le client (Internet Explorer) et le serveur (JBoss) s'exécutent sur le même ordinateur portable. Actuellement, nous déterminons l'utilisateur connecté à l'aide de tasklist/v, puis analysons la sortie pour rechercher certains processus et l'utilisateur qui les exécute. Cependant, besoin de savoir s'il existe un moyen plus simple d'obtenir l'utilisateur Windows connecté.

+0

Voulez-vous trouver le nom de l'utilisateur connecté à votre application web, peut-être? Peut-être que HttpServletRequest.getRemoteUser() est ce que vous cherchez? –

Répondre

3

Je ne pense pas que la question ait vraiment beaucoup de sens. Il peut y avoir aucun utilisateur connecté sur l'hôte - ou il peut y avoir plusieurs utilisateurs. Je serais un peu méfiant d'un design qui voulait vraiment le savoir de toute façon - les applications web ne devraient pas vraiment être intéressés par ce genre de chose, IMO. Qu'essayez-vous de faire?

+0

L'application s'exécute sur un ordinateur portable exécutant Windows XP. L'application est basée sur le Web et accessible via Internet Explorer par un utilisateur Windows connecté. Un seul utilisateur Windows peut être connecté à la fois. L'application doit savoir quel utilisateur s'est connecté pour effectuer un menu basé sur des rôles et des fonctions de sécurité. Ainsi, le client (Internet Explorer) et le serveur (JBoss) s'exécutent sur le même ordinateur portable. Actuellement, nous déterminons l'utilisateur connecté à l'aide de tasklist/v, puis analysons la sortie pour rechercher certains processus et l'utilisateur qui les exécute. –

+4

Il me semble que ce serait mieux de ne pas fonctionner en tant que service, mais d'être démarré en tant qu'application "régulière" - à ce stade, l'utilisateur concerné est celui que l'application devrait exécuter. –

0

Cela suppose que vous avez enregistré une variable d'environnement USERNAME lorsque l'utilisateur connecté:

String username = System.getenv("USERNAME"); 

Ou, si vous voulez l'ensemble des variables d'environnement:

Map<String, String> envMap = System.getenv(); 

ensuite itérer la map pour obtenir une variable d'environnement dans laquelle vous stockez un nom d'utilisateur.

Map<String, String> envMap = System.getenv(); 
int mapsize = envMap.size(); 
Iterator i = envMap.entrySet().iterator(); 
for (int j = 0; j < mapsize; j++) { 
    Map.Entry entry = (Map.Entry) i.next(); 
    Object key = entry.getKey(); 
    Object value = entry.getValue(); 
} 
0

Utilisez l'authentification JAAS. Vous devriez être capable d'utiliser NTLM sur Windows, donc l'utilisateur n'aura pas à faire de travail supplémentaire. Ensuite, sur le serveur, vous pouvez utiliser le contexte de sécurité pour obtenir le principal appelant.

Questions connexes