Digester auf die Nutzung der 'matches'-Methode umgestellt
| | |
| | | * @return der verschlüsselte Ausdruck |
| | | */ |
| | | String digest(String text, String algorithm, String encoding); |
| | | |
| | | /** |
| | | * Einen Klartext-Ausdruck mit seiner verschluesselten Fassung vergleichen |
| | | * @param inputCredentials der Klartext-Ausdruck fuer den festgestellt werden soll, |
| | | * ob er zum gespeicherten Ausdruck passt |
| | | * @param storedCredentials der gespeicherte (verschluesselte) Ausdruck, fuer den |
| | | * festgestellt werden soll, ob er zum Klartext-Ausdruck passt |
| | | * @param algorithm der Verschluesselungs-Algorithmus |
| | | * @param encoding das Encoding |
| | | * @return wahr, wenn der Klartext-Ausdruck dem hinterlegten verschluesselten Ausdruck |
| | | * entspricht, falsch, wenn nicht |
| | | */ |
| | | boolean matches(String inputCredentials, String storedCredentials, String algorithm, String encoding); |
| | | } |
| | |
| | | mh.setEncoding(encoding); |
| | | return mh.mutate(text); |
| | | } |
| | | |
| | | @Override |
| | | public boolean matches(String inputCredentials, String storedCredentials, String algorithm, String encoding) { |
| | | MessageDigestCredentialHandler mh = new MessageDigestCredentialHandler(); |
| | | try { |
| | | mh.setAlgorithm(algorithm); |
| | | } catch (NoSuchAlgorithmException ex) { |
| | | Logger.getLogger(TomcatDigester.class.getName()).log(Level.SEVERE, null, ex); |
| | | } |
| | | mh.setEncoding(encoding); |
| | | return mh.matches(inputCredentials, storedCredentials); |
| | | } |
| | | |
| | | } |
| | |
| | | */ |
| | | return text; |
| | | } |
| | | |
| | | @Override |
| | | public boolean matches(String inputCredentials, String storedCredentials, String algorithm, String encoding) { |
| | | return true; |
| | | } |
| | | |
| | | } |
| | |
| | |
|
| | | String digesterClassName = getServletContext().getInitParameter(P_DIGESTER);
|
| | | Digester digester = (Digester) Class.forName(digesterClassName).newInstance();
|
| | | /*
|
| | | MD5 geht nicht mehr,
|
| | | vgl. http://stackoverflow.com/questions/39967289/how-to-use-digest-authentication-in-tomcat-8-5
|
| | | */
|
| | | String digestedCurrentPw = digester.digest(currentPw, Digester.SHA256, null);
|
| | | PersistenceManager pm = getDb();
|
| | | logger.fine(getSql(SQL_GET_USER));
|
| | | List list = pm.select(getSql(SQL_GET_USER), getMapper(MP_USER), Record.WITHOUT_BLOBS, userId);
|
| | |
| | | Object o = list.get(0);
|
| | | if(o instanceof User) {
|
| | | User u = (User) o;
|
| | | if(u.getPw().equals(digestedCurrentPw)) {
|
| | | if(digester.matches(currentPw, u.getPw(), Digester.SHA256, null)) {
|
| | | String digestedNewPw = digester.digest(newPw, Digester.SHA256, null);
|
| | | u.setPw(digestedNewPw);
|
| | | pm.update(u, getMapper(MP_USER));
|