Helfer zur Authentifizierung fuer jdk.httpserver
ulrich
2021-06-19 235e9558ee3a8658e1394101c380debe3e4bd538
src/de/uhilger/httpserver/auth/realm/SimpleRealm.java
@@ -38,7 +38,7 @@
 * ulrich=ulrich,testRolle,andereRolle
 * 
 * Der erste Eintrag nach dem Gleichheitszeichen ist das Passwort, die restlichen 
 * Eintrage sind Rollen.
 * Eintraege sind Rollen.
 * 
 * @author Ulrich Hilger
 * @version 1, 03.06.2021
@@ -55,15 +55,27 @@
  private final Map<String, User> users;
  private final Map<String, List> userRoles;
  
  /**
   * Ein neues Objekt der Klasse SimpleRealm erzeugen
   */
  public SimpleRealm() {
    users = new HashMap<>();
    userRoles = new HashMap<>();
  }
  /**
   * Den Namen dieses Realm festlegen
   * @param name Name des Realms
   */
  public void setName(String name) {
    this.name = name;
  }
  
  /**
   * Nutzerinformationen aus einer Datei lesen
   * @param file die Datei mit Nutzerinformationen
   * @throws IOException
   */
  public void readFromFile(File file) throws IOException {
    BufferedReader r = new BufferedReader(new FileReader(file));
    String line = r.readLine();
@@ -74,6 +86,10 @@
    r.close();
  }
  
  /**
   * Eine Zeile aus der Datei mit Nutzerinformationen verarbeiten
   * @param line die Zeile, die verarbeitet werden soll
   */
  private void parse(String line) {
    if(!line.startsWith(COMMENT_INDICATOR)) {
      String[] teile = line.split(LIST_INDICATOR);
@@ -100,28 +116,46 @@
  
  /* ------------ Realm implementation -------------- */
  /**
   * Uberpruefen, ob die Benutzerkennung und das Kennwort gueltig sind.
   *
   * @param userId  der Benutzer
   * @param password das Kennwort des Benutzers
   * @return true, wenn die Angaben stimmen, false wenn nicht
   */
  @Override
  public boolean isValid(String userId, String kennwort) {
  public boolean isValid(String userId, String password) {
    Object o = users.get(userId);
    if(o instanceof User) {
      User user = (User) o;
      return user.getPassword().equals(kennwort);
      return user.getPassword().equals(password);
    } else {
      return false;
    }
  }
  /**
   * Pruefen, ob ein Benutzer eine Rolle hat
   *
   * @param userId der Benutzer
   * @param roleId die Kennung der Rolle
   * @return  true, wenn der Benutzer die Rolle hat, false wenn nicht
   */
  @Override
  public boolean hasRole(String userId, String rollenId) {
  public boolean hasRole(String userId, String roleId) {
    Object o = userRoles.get(userId);
    if(o instanceof List) {
      List roles = (List) o;
      return roles.contains(rollenId);
      return roles.contains(roleId);
    } else {
      return false;
    }
  }
  /**
   * Den Namen dieses Realms ermitteln
   * @return Name des Realms
   */
  @Override
  public String getName() {
    return name;