2009-06-16 21 views
0

現在ログインしているユーザをJBoss上で実行されているJavaアプリケーションから取得する最も良い方法は何ですか? JBossがサービスとして実行されているため、システム環境変数System.getProperty( "user.name")は機能しません。Javaシステム環境変数現在のユーザ

アプリケーションは、Windows XPを実行しているラップトップで実行されています。アプリケーションはWebベースで、Internet Explorerを使用して特定のWindowsユーザーでログインします。一度に1人のWindowsユーザーしかログインできません。アプリケーションは、ロールベースのメニューとセキュリティ機能を実行するためにどのユーザーがログインしているかを知る必要があります。したがって、クライアント(Internet Explorer)とサーバー(JBoss)は同じラップトップで実行されています。現在、tasklist/vを使用してログインしているユーザーを特定し、特定のプロセスとそれらを実行しているユーザーを探すために出力を解析します。しかし、ログインしたWindowsユーザーを取得するためのクリーンな方法があるかどうかを知る必要があります。

+0

あなたは多分、あなたのWebアプリにログインしているユーザーの名前を検索しますか?たぶん、HttpServletRequest.getRemoteUser()はあなたが探しているものですか? –

答えて

3

質問は本当に意味をなさないと思います。 ユーザーがのホストにログオンしていないか、複数のユーザーがいる可能性があります。

私は、とにかくこれを知りたかったデザインには少し気をつけます。ウェブアプリケーションは、そんなことに本当に興味を持ってはいけません。あなたは何をしようとしているのですか?

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

はその後を反復:

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

それとも、環境変数の完全なセットをしたい場合は、:

+0

アプリケーションは、Windows XPを実行しているラップトップで実行されています。アプリケーションはWebベースで、Internet Explorerを使用して特定のWindowsユーザーでログインします。一度に1人のWindowsユーザーしかログインできません。アプリケーションは、ロールベースのメニューとセキュリティ機能を実行するためにどのユーザーがログインしているかを知る必要があります。したがって、クライアント(Internet Explorer)とサーバー(JBoss)は同じラップトップで実行されています。現在、tasklist/vを使用してログインしているユーザーを特定し、特定のプロセスとそれらを実行しているユーザーを探すために出力を解析します。 –

+4

それは、サービスとして実行するのが最善ではなく、「通常の」アプリケーションとして開始されるように思えます。その時点で、関連するユーザーはアプリケーションが実行されるユーザーです。 –

0

これは、ユーザーがログインしたときにUSERNAMEという名前の環境変数を格納していることを想定していあなたがユーザー名を格納している環境変数を取得するためのマップ。

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

JAAS認証を使用します。 Windows上でNTLMを使用できるようにする必要がありますので、ユーザーは追加作業を行う必要はありません。次に、サーバー上でセキュリティコンテキストを使用して呼び出し元プリンシパルを取得できます。

関連する問題