Getting the Login Name of the Currently Logged-In User

This example retrieves the login name of the user that is running the application.
try {
    String loginAppName = "GetLoginNameUnix";

    // If the application is run on NT rather than Unix, use this name
    loginAppName = "GetLoginNameNT";

    // Create login context
    LoginContext lc = new LoginContext(loginAppName,

    // Retrieve the information on the logged-in user

    // Get the authenticated subject
    Subject subject = lc.getSubject();

    // Get the subject principals
    Principal principals[] = (Principal[])subject.getPrincipals().toArray(new Principal[0]);
    for (int i=0; i<principals.length; i++) {
        if (principals[i] instanceof
              || principals[i] instanceof {
            String loggedInUserName = principals[i].getName();
} catch (LoginException e) {
    // Login failed
The example requires a login configuration file that specifies the login modules to execute when using a particular login-app name. This configuration file specifies two login-app names:
GetLoginNameNT { required;

GetLoginNameUnix { required;
The login configuration file is specified at the command line:
> java MyApp