⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logindoas.java

📁 java安全性编程实例电子版书附源码,是网络安全编程者不可多得的好书
💻 JAVA
字号:
import com.sun.security.auth.callback.TextCallbackHandler;
import javax.security.auth.*;
import javax.security.auth.login.*;
import java.security.*;
import java.util.*;
// import  sample.principal.SamplePrincipal;
public class LoginDoAs{
   public static void main(String[] args) {
       LoginContext c=null;
        //登录
       TextCallbackHandler handler=new TextCallbackHandler( );
       try {
	      c = new LoginContext("simp",handler);
 	      c.login();
       } 
	catch (LoginException le) {
             System.out.println("Authentication failed!");
             System.exit(1);
       } 
       Subject subj = c.getSubject();
       Myaction myact=new Myaction( );
	try {
		Subject.doAs(subj, myact);
	} catch (AccessControlException e) {
		System.out.println(e);
	} 

     }
}



class Myaction implements PrivilegedAction {
	public Object run() {
		AccessControlContext context = AccessController.getContext();
		Subject subject = Subject.getSubject(context );
		if (subject == null ) {
			throw new AccessControlException("Denied");
		}
		Set principals = subject.getPrincipals();
		Iterator iterator = principals.iterator();
		String name="CN=Webmaster,OU=NC,O=Shanghai University,L=ZB,ST=Shanghai,C=CN";
//		String name="testUser";
		while (iterator.hasNext()) {
			Principal principal = (Principal)iterator.next();
			if (principal.getName().equals( name )) {
				System.out.println("Now run code permitted by "+name );
				return new Integer(0);
			}
		}
		throw new AccessControlException("Denied");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -