From 05740f7903980924df868dd9bb92db485c05a079 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sat, 13 Oct 2012 15:41:57 +0000 Subject: [PATCH] - Fix MD5 passwords after testing - Remove unused password fallback in FormHandler --- .../i2p/router/web/ConsolePasswordManager.java | 17 +++++++++++------ .../src/net/i2p/router/web/FormHandler.java | 8 -------- .../net/i2p/router/web/RouterConsoleRunner.java | 6 +++--- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java b/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java index b428de7a49..4d475e43f2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java @@ -28,11 +28,11 @@ public class ConsolePasswordManager extends RouterPasswordManager { private static final String PROP_MIGRATED = "routerconsole.passwordManager.migrated"; // migrate these to hash private static final String PROP_CONSOLE_OLD = "consolePassword"; - public static final String PROP_CONSOLE_NEW = "routerconsole.auth"; private static final String CONSOLE_USER = "admin"; public ConsolePasswordManager(RouterContext ctx) { super(ctx); + migrateConsole(); } /** @@ -48,7 +48,7 @@ public class ConsolePasswordManager extends RouterPasswordManager { //checkCrypt(realm, user, pw) || checkMD5(realm, user, pw); } - + /** * The username is the salt * @@ -119,7 +119,8 @@ public class ConsolePasswordManager extends RouterPasswordManager { } /** - * Migrate from plaintext to salt/hash + * Migrate from plaintext to MD5 hash + * Ref: RFC 2617 * * @return success or nothing to migrate */ @@ -130,9 +131,13 @@ public class ConsolePasswordManager extends RouterPasswordManager { // consolePassword String pw = _context.getProperty(PROP_CONSOLE_OLD); if (pw != null) { - if (pw.length() > 0) - saveMD5(PROP_CONSOLE_NEW, CONSOLE_USER, pw); - return _context.router().saveConfig(PROP_CONSOLE_OLD, null); + if (pw.length() > 0) { + pw = CONSOLE_USER + ':' + RouterConsoleRunner.JETTY_REALM + ':' + pw; + saveMD5(RouterConsoleRunner.PROP_CONSOLE_PW, CONSOLE_USER, pw); + } + Map toAdd = Collections.singletonMap(PROP_MIGRATED, "true"); + List toDel = Collections.singletonList(PROP_CONSOLE_OLD); + return _context.router().saveConfig(toAdd, toDel); } return true; } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java index 2f16cd359b..6cbfd184a4 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java @@ -21,7 +21,6 @@ public class FormHandler { private String _nonce; protected String _action; protected String _method; - protected String _passphrase; private final List<String> _errors; private final List<String> _notices; private boolean _processed; @@ -52,7 +51,6 @@ public class FormHandler { public void setNonce(String val) { _nonce = val; } public void setAction(String val) { _action = val; } - public void setPassphrase(String val) { _passphrase = val; } /** * Call this to prevent changes using GET @@ -168,14 +166,8 @@ public class FormHandler { String noncePrev = nonce + PREV_SUFFIX; if ( ( (nonce == null) || (!_nonce.equals(nonce)) ) && ( (noncePrev == null) || (!_nonce.equals(noncePrev)) ) ) { - - String expected = _context.getProperty("consolePassword"); - if ( (expected != null) && (expected.trim().length() > 0) && (expected.equals(_passphrase)) ) { - // ok - } else { addFormError(_("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.")); _valid = false; - } } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index e5ffcc0aee..34c2174a9a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -80,8 +80,9 @@ public class RouterConsoleRunner implements RouterApp { // Jetty Auth private static final DigestAuthenticator authenticator = new DigestAuthenticator(); - private static final String JETTY_REALM = "i2prouter"; + public static final String JETTY_REALM = "i2prouter"; private static final String JETTY_ROLE = "routerAdmin"; + public static final String PROP_CONSOLE_PW = "routerconsole.auth." + JETTY_REALM; public static final String ROUTERCONSOLE = "routerconsole"; public static final String PREFIX = "webapps."; @@ -706,8 +707,7 @@ public class RouterConsoleRunner implements RouterApp { SecurityHandler sec = new SecurityHandler(); List<ConstraintMapping> constraints = new ArrayList(4); ConsolePasswordManager mgr = new ConsolePasswordManager(ctx); - mgr.migrateConsole(); - Map<String, String> userpw = mgr.getMD5(PasswordManager.PROP_CONSOLE_NEW); + Map<String, String> userpw = mgr.getMD5(PROP_CONSOLE_PW); if (!userpw.isEmpty()) { HashUserRealm realm = new HashUserRealm(JETTY_REALM); sec.setUserRealm(realm); -- GitLab