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

📄 simpleloginmodule.java

📁 java安全性编程实例电子版书附源码,是网络安全编程者不可多得的好书
💻 JAVA
字号:
import java.io.*;
import java.util.*;
import java.security.Principal;
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.spi.LoginModule;

public class SimpleLoginModule implements
                                     LoginModule {
  private static final int NOT_AUTHENTICATED = 0;
  private static final int AUTHENTICATED = 1;
  private static final int
                        AUTHENTICATE_COMMITTED = 2;

  private int state;
  private SimplePrincipal sp;
  private Subject sub;

  public boolean abort() {
    if ((sub != null) && (sp  != null)) {
      Set prins = sub.getPrincipals();
      if (prins.contains(sp)) {
        prins.remove(sp);
      }
    }
    sub = null;
    sp = null;
    state = NOT_AUTHENTICATED;
    return true;
  }
  
  public boolean commit() {
    if (state < AUTHENTICATED) {
      return false;
    }
    if (sub == null) {
      return false;
    }
    Set prins = sub.getPrincipals();
    if (!prins.contains(sp)) {
      prins.add(sp);
    }
    state = AUTHENTICATE_COMMITTED;
    return true;
  }
  
  public void initialize(Subject s, CallbackHandler ch,  Map shared, Map options) {
    state = NOT_AUTHENTICATED;
    sp = null;
    sub = s;
  }
  
  public boolean login() {
    BufferedReader br = new BufferedReader(
                  new InputStreamReader(System.in));
    System.err.println("What can Jack Burton see? ");
    try {
      String resp = br.readLine();
      if (!resp.equalsIgnoreCase("things  no one else can see")) {
        return false;
      }
    }
    catch (IOException ioe) {
      return false;
    }
    sp = new SimplePrincipal("Jack");
    state = AUTHENTICATED;
    return true;
  }
  
  public boolean logout() {
    state = NOT_AUTHENTICATED;
    sp = null;
    sub = null;
    return true;
  }
}

⌨️ 快捷键说明

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