| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.logging.Level; |
| | | import java.util.logging.Logger; |
| | | |
| | | /** |
| | | * Eine einfache Implementierung der Schnittstelle Realm, die |
| | |
| | | * 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 |
| | | */ |
| | | public class SimpleRealm implements Realm { |
| | | |
| | | private static final Logger logger = Logger.getLogger(SimpleRealm.class.getName()); |
| | | |
| | | public static final String LIST_INDICATOR = "="; |
| | | public static final String ROLE_SEPARATOR = ","; |
| | |
| | | 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(); |
| | |
| | | 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); |
| | |
| | | try { |
| | | Encoder encoder = new Encoder(); |
| | | String hex = encoder.bytesToHex(encoder.encode(rollen[0])); |
| | | logger.fine(hex); |
| | | //logger.fine(hex); |
| | | } catch (NoSuchAlgorithmException ex) { |
| | | logger.log(Level.SEVERE, null, ex); |
| | | //logger.log(Level.SEVERE, null, ex); |
| | | } |
| | | ArrayList rollenListe = new ArrayList(); |
| | | for(int i = 1; i < rollen.length; i++) { |
| | |
| | | |
| | | /* ------------ 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; |