This is an automated email from the ASF dual-hosted git repository. lgoldstein pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit c56ac6b324e6a10abb6aaec7715ff278a858286e Author: Lyor Goldstein <[email protected]> AuthorDate: Mon Feb 11 08:55:00 2019 +0200 Declare KeyboardInteractiveAuthenticator#generateChallenge as throws Exception --- .../DefaultKeyboardInteractiveAuthenticator.java | 14 ++++++++------ .../auth/keyboard/KeyboardInteractiveAuthenticator.java | 17 +++++++++++++---- .../auth/keyboard/UserAuthKeyboardInteractive.java | 4 ++-- .../org/apache/sshd/common/auth/AuthenticationTest.java | 15 +++++++++++---- .../test/java/org/apache/sshd/server/ServerTest.java | 6 ++++-- 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/DefaultKeyboardInteractiveAuthenticator.java b/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/DefaultKeyboardInteractiveAuthenticator.java index 32bfeac..70156e9 100644 --- a/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/DefaultKeyboardInteractiveAuthenticator.java +++ b/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/DefaultKeyboardInteractiveAuthenticator.java @@ -56,11 +56,13 @@ public class DefaultKeyboardInteractiveAuthenticator } @Override - public InteractiveChallenge generateChallenge(ServerSession session, String username, String lang, String subMethods) { + public InteractiveChallenge generateChallenge( + ServerSession session, String username, String lang, String subMethods) + throws Exception { PasswordAuthenticator auth = session.getPasswordAuthenticator(); if (auth == null) { if (log.isDebugEnabled()) { - log.debug("generateChallenge({}) no password authenticator", session); + log.debug("generateChallenge({})[{}] no password authenticator", session, username); } return null; } @@ -78,7 +80,7 @@ public class DefaultKeyboardInteractiveAuthenticator PasswordAuthenticator auth = session.getPasswordAuthenticator(); if (auth == null) { if (log.isDebugEnabled()) { - log.debug("authenticate({}) no password authenticator", session); + log.debug("authenticate({})[{}] no password authenticator", session, username); } return false; } @@ -91,10 +93,10 @@ public class DefaultKeyboardInteractiveAuthenticator try { return auth.authenticate(username, responses.get(0), session); } catch (Error e) { - log.warn("authenticate({}) failed ({}) to consult password authenticator: {}", - session, e.getClass().getSimpleName(), e.getMessage()); + log.warn("authenticate({})[{}] failed ({}) to consult password authenticator: {}", + session, username, e.getClass().getSimpleName(), e.getMessage()); if (log.isDebugEnabled()) { - log.debug("authenticate(" + session + ") authenticator failure details", e); + log.debug("authenticate(" + session + ")[" + username + "] authenticator failure details", e); } throw new RuntimeSshException(e); diff --git a/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/KeyboardInteractiveAuthenticator.java b/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/KeyboardInteractiveAuthenticator.java index cdf2928..5b78ead 100644 --- a/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/KeyboardInteractiveAuthenticator.java +++ b/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/KeyboardInteractiveAuthenticator.java @@ -35,12 +35,16 @@ public interface KeyboardInteractiveAuthenticator { */ KeyboardInteractiveAuthenticator NONE = new KeyboardInteractiveAuthenticator() { @Override - public InteractiveChallenge generateChallenge(ServerSession session, String username, String lang, String subMethods) { + public InteractiveChallenge generateChallenge( + ServerSession session, String username, String lang, String subMethods) + throws Exception { return null; } @Override - public boolean authenticate(ServerSession session, String username, List<String> responses) throws Exception { + public boolean authenticate( + ServerSession session, String username, List<String> responses) + throws Exception { return false; } @@ -59,8 +63,11 @@ public interface KeyboardInteractiveAuthenticator { * @param subMethods Sub-methods hints sent by the client * @return The {@link InteractiveChallenge} - if {@code null} then authentication * attempt via "keyboard-interactive" method is rejected + * @throws Exception If unable to generate the challenge */ - InteractiveChallenge generateChallenge(ServerSession session, String username, String lang, String subMethods); + InteractiveChallenge generateChallenge( + ServerSession session, String username, String lang, String subMethods) + throws Exception; /** * Called to authenticate the response to the challenge(s) sent previously @@ -74,5 +81,7 @@ public interface KeyboardInteractiveAuthenticator { * @return {@code true} if responses have been validated * @throws Exception if bad responses and server should terminate the connection */ - boolean authenticate(ServerSession session, String username, List<String> responses) throws Exception; + boolean authenticate( + ServerSession session, String username, List<String> responses) + throws Exception; } diff --git a/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/UserAuthKeyboardInteractive.java b/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/UserAuthKeyboardInteractive.java index e7b9b63..e032473 100644 --- a/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/UserAuthKeyboardInteractive.java +++ b/sshd-core/src/main/java/org/apache/sshd/server/auth/keyboard/UserAuthKeyboardInteractive.java @@ -63,7 +63,7 @@ public class UserAuthKeyboardInteractive extends AbstractUserAuth { if (auth == null) { if (debugEnabled) { log.debug("doAuth({}@{})[methods={}, lang={}] - no interactive authenticator to generate challenge", - username, session, subMethods, lang); + username, session, subMethods, lang); } return false; } @@ -83,7 +83,7 @@ public class UserAuthKeyboardInteractive extends AbstractUserAuth { if (challenge == null) { if (debugEnabled) { log.debug("doAuth({}@{})[methods={}, lang={}] - no interactive challenge generated", - username, session, subMethods, lang); + username, session, subMethods, lang); } return false; } diff --git a/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java b/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java index 466afd7..d1992d5 100644 --- a/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/common/auth/AuthenticationTest.java @@ -343,7 +343,9 @@ public class AuthenticationTest extends BaseTestSupport { sshd.setPublickeyAuthenticator(RejectAllPublickeyAuthenticator.INSTANCE); sshd.setKeyboardInteractiveAuthenticator(new DefaultKeyboardInteractiveAuthenticator() { @Override - public InteractiveChallenge generateChallenge(ServerSession session, String username, String lang, String subMethods) { + public InteractiveChallenge generateChallenge( + ServerSession session, String username, String lang, String subMethods) + throws Exception { assertEquals("Mismatched user language", PropertyResolverUtils.getStringProperty( client, @@ -373,7 +375,9 @@ public class AuthenticationTest extends BaseTestSupport { } @Override - public boolean authenticate(ServerSession session, String username, List<String> responses) throws Exception { + public boolean authenticate( + ServerSession session, String username, List<String> responses) + throws Exception { return super.authenticate(session, username, responses); } @@ -434,13 +438,16 @@ public class AuthenticationTest extends BaseTestSupport { sshd.setKeyboardInteractiveAuthenticator(new KeyboardInteractiveAuthenticator() { @Override public InteractiveChallenge generateChallenge( - ServerSession session, String username, String lang, String subMethods) { + ServerSession session, String username, String lang, String subMethods) + throws Exception { assertEquals("Unexpected challenge call", 1, genCount.incrementAndGet()); return challenge; } @Override - public boolean authenticate(ServerSession session, String username, List<String> responses) throws Exception { + public boolean authenticate( + ServerSession session, String username, List<String> responses) + throws Exception { assertEquals("Unexpected authenticate call", 1, authCount.incrementAndGet()); assertEquals("Mismatched number of responses", GenericUtils.size(rspMap), GenericUtils.size(responses)); diff --git a/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java b/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java index fefd7b1..224bfa2 100644 --- a/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java @@ -771,7 +771,8 @@ public class ServerTest extends BaseTestSupport { sshd.setKeyboardInteractiveAuthenticator(new KeyboardInteractiveAuthenticator() { @Override public InteractiveChallenge generateChallenge( - ServerSession session, String username, String lang, String subMethods) { + ServerSession session, String username, String lang, String subMethods) + throws Exception { challengeCount.incrementAndGet(); outputDebugMessage("generateChallenge(%s@%s) count=%s", username, session, challengeCount); return null; @@ -819,7 +820,8 @@ public class ServerTest extends BaseTestSupport { sshd.setKeyboardInteractiveAuthenticator(new KeyboardInteractiveAuthenticator() { @Override public InteractiveChallenge generateChallenge( - ServerSession session, String username, String lang, String subMethods) { + ServerSession session, String username, String lang, String subMethods) + throws Exception { return challenge; }
