/* java -Djava.security.auth.login.config=NP.config * Readclient np * H:\nsf>java -Djava.security.auth.login.config=NP.config * -Djava.security.policy=NPpolicy.txt * -Djava.security.manager * Readclient np */ /* Authenticates and authorizes a user to read a file */ import java.util.Set; import java.security.Principal; import java.security.PrivilegedAction; import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; import com.sun.security.auth.NTUserPrincipal; import javax.security.auth.login.FailedLoginException; public class Readclient { public static void main(String[] args) { LoginContext context = null; try { context = new LoginContext("NP", new NPCallbackHandler()); context.login(); Subject subject = context.getSubject(); System.out.println(subject); Set principals = subject.getPrincipals(NamePrincipal.class); Object[] p = principals.toArray(); boolean found = false; for (int i = 0; i < p.length; i++) if( ((Principal)p[i]).getName().equals(args[0])) found = true; if(found) System.out.println("login succeeded"); else throw new FailedLoginException("Login failed"); PrivilegedAction action = new ReadFile(); Subject.doAsPrivileged(subject, action, null); context.logout(); }catch(Exception e) { e.printStackTrace(); } } }