Helfer zur Authentifizierung fuer jdk.httpserver
ulrich
2021-06-15 9aedc9c0c54b7f3971ff025fcd9160b2a22909ee
Kommentare ergaenzt
3 files modified
79 ■■■■ changed files
src/de/uhilger/httpserver/auth/realm/Encoder.java 6 ●●●●● patch | view | raw | blame | history
src/de/uhilger/httpserver/auth/realm/SimpleRealm.java 44 ●●●● patch | view | raw | blame | history
src/de/uhilger/httpserver/auth/realm/User.java 29 ●●●●● patch | view | raw | blame | history
src/de/uhilger/httpserver/auth/realm/Encoder.java
@@ -22,8 +22,10 @@
import java.security.NoSuchAlgorithmException;
/**
 *
 * @author ulrich
 * Encoder zur Kennwort-Verschluesselung
 *
 * @author Ulrich Hilger
 * @version 1, 08.06.2021
 */
public class Encoder {
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;
src/de/uhilger/httpserver/auth/realm/User.java
@@ -18,7 +18,8 @@
package de.uhilger.httpserver.auth.realm;
/**
 *
 * Ein Nutzer im Kontext dieser Package
 *
 * @author Ulrich Hilger
 * @version 1, 22.05.2021
 */
@@ -26,28 +27,52 @@
  private String name;
  private String password;
  
  /**
   * Den Namen des Nutzers ermitteln
   * @return Name des Nutzers
   */
  public String getName() {
    return name;
  }
  /**
   * Den Namen des Nutzers setzen
   * @param name Name des Nutzers
   */
  public void setName(String name) {
    this.name = name;
  }
  /**
   * Das Kennwort des Nutzers ermitteln
   * @return Kennwort des Nutzers
   */
  public String getPassword() {
    return password;
  }
  /**
   * Das Kennwort des Nutzers setzen
   * @param password das Kennwort des Nutzers
   */
  public void setPassword(String password) {
    this.password = password;
  }
  
  /**
   * Den Hashcode dieses Objekts ermitteln
   * @return den Hashcode
   */
  @Override
  public int hashCode() {
    return this.getName().hashCode();
  }
  /**
   * Dieses Objekt mit einem anderen Objekt vergleichen
   * @param obj  das Objekt, mit dem dieses Objekt verglichen werden soll
   * @return true, wenn die Objekte gleich sind, false, wenn nicht
   */
  @Override
  public boolean equals(Object obj) {
    if(obj instanceof User) {