トップ 一覧 置換 検索 ヘルプ 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で動作するようにするにはリフレクションを使う。

!!!サンプル
{{code Java,
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 null;
    return "";
  }
}
}}

{{category2 プログラミング言語,Java}}