トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Javaで認証情報、ユーザ情報を取得する

OSのユーザを取得する

System.getProperty("user.name");

で取得できるが、

java -Duser.name=hoge test

等でプロパティを指定することで変更可能。

ログインユーザ、ドメインの取得する

com.sun.security.auth.module.NTSystem NTSystem = new com.sun.security.auth.module.NTSystem();
System.out.println(NTSystem.getName());
System.out.println(NTSystem.getDomain());

でログインしているユーザ名とドメインを取得できる。
AD等にログインしていない場合は、マシン名がドメイン名として取得する。
ただし、NTSystem(Windows等)しか使えないので注意。

UNIXの場合は

com.sun.security.auth.module.UnixSystem us = new com.sun.security.auth.module.UnixSystem();
System.out.println(us.getUsername());

各OSで動作するようにするにはリフレクションを使う。

サンプル

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.lang.reflect.*;

public class test {
  
  public static void main(String[] args) {
    System.out.println(invoke("com.sun.security.auth.module.NTSystem", "getName").toString());
    System.out.println(invoke("com.sun.security.auth.module.NTSystem", "getDomain").toString());
    System.out.println(invoke("com.sun.security.auth.module.UnixSystem", "getUsername").toString());
  }
  
  public static Object invoke(String className, String methodName) {
    try {
      Class<?> c = Class.forName(className);
      Object instance = c.newInstance();
      Method method = c.getMethod(methodName);
      return method.invoke(instance);
    } catch (Exception e){
      e.printStackTrace();
    }
    return "";
  }
}

[カテゴリ: プログラミング言語 > Java]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2016年11月13日 10時48分34秒