Question

Quel est le meilleur moyen d'obtenir l'utilisateur actuellement connecté via l'application Java s'exécutant sur JBoss. La variable d’environnement système System.getProperty (" user.name ") ne fonctionne pas car JBoss s’exécute en tant que service.

L'application s'exécute sur un ordinateur portable sous Windows XP. L'application est basée sur le Web et est accessible à l'aide d'Internet Explorer par un utilisateur Windows particulièrement connecté. Un seul utilisateur Windows peut être connecté à la fois. L'application a besoin de savoir quel utilisateur s'est connecté pour créer un menu basé sur les rôles et des fonctionnalités de sécurité. Le client (Internet Explorer) et le serveur (JBoss) s'exécutent donc 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. Toutefois, vous devez savoir s’il existe un moyen plus simple d’obtenir l’utilisateur Windows connecté.

Était-ce utile?

La solution

Je ne pense pas que la question ait vraiment de sens. Il peut y avoir aucun utilisateur connecté sur l'hôte ou plusieurs utilisateurs.

Je me méfierais un peu du design qui voulait vraiment savoir cela: les applications Web ne devraient pas vraiment s’intéresser à ce genre de chose, IMO. Qu'essayez-vous de faire?

Autres conseils

Cela suppose que vous avez stocké une variable d'environnement nommée USERNAME lorsque l'utilisateur s'est connecté:

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

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

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

Parcourez ensuite la carte 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();
}

Utilisez l'authentification JAAS. Vous devriez pouvoir utiliser NTLM sur Windows pour que l'utilisateur n'ait pas à faire de travail supplémentaire. Ensuite, sur le serveur, vous pouvez utiliser le contexte de sécurité pour obtenir le principal de l'appelant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top