From f6196b803b7351da29f5d24958abbedf0df41a05 Mon Sep 17 00:00:00 2001 From: David Ostrovsky <david@ostrovsky.org> Date: Fri, 26 Sep 2014 04:52:15 -0400 Subject: [PATCH] Extract authenticate method from CachingPublicKeyAuthenticator --- src/main/java/com/gitblit/transport/ssh/FileBasedPubKeyAuth.java | 41 +++-------------------------------------- 1 files changed, 3 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/gitblit/transport/ssh/CachingPublicKeyAuthenticator.java b/src/main/java/com/gitblit/transport/ssh/FileBasedPubKeyAuth.java similarity index 63% rename from src/main/java/com/gitblit/transport/ssh/CachingPublicKeyAuthenticator.java rename to src/main/java/com/gitblit/transport/ssh/FileBasedPubKeyAuth.java index e804a0d..b6a52f9 100644 --- a/src/main/java/com/gitblit/transport/ssh/CachingPublicKeyAuthenticator.java +++ b/src/main/java/com/gitblit/transport/ssh/FileBasedPubKeyAuth.java @@ -16,14 +16,9 @@ package com.gitblit.transport.ssh; import java.security.PublicKey; -import java.util.HashMap; import java.util.List; import java.util.Locale; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import org.apache.sshd.common.Session; -import org.apache.sshd.common.SessionListener; import org.apache.sshd.server.PublickeyAuthenticator; import org.apache.sshd.server.session.ServerSession; import org.slf4j.Logger; @@ -37,7 +32,7 @@ * Authenticates an SSH session against a public key. * */ -public class CachingPublicKeyAuthenticator implements PublickeyAuthenticator, SessionListener { +public class FileBasedPubKeyAuth implements PublickeyAuthenticator { protected final Logger log = LoggerFactory.getLogger(getClass()); @@ -45,30 +40,13 @@ protected final IAuthenticationManager authManager; - private final Map<ServerSession, Map<PublicKey, Boolean>> cache = new ConcurrentHashMap<ServerSession, Map<PublicKey, Boolean>>(); - - public CachingPublicKeyAuthenticator(IPublicKeyManager keyManager, IAuthenticationManager authManager) { + public FileBasedPubKeyAuth(IPublicKeyManager keyManager, IAuthenticationManager authManager) { this.keyManager = keyManager; this.authManager = authManager; } @Override - public boolean authenticate(String username, PublicKey key, ServerSession session) { - Map<PublicKey, Boolean> map = cache.get(session); - if (map == null) { - map = new HashMap<PublicKey, Boolean>(); - cache.put(session, map); - session.addListener(this); - } - if (map.containsKey(key)) { - return map.get(key); - } - boolean result = doAuthenticate(username, key, session); - map.put(key, result); - return result; - } - - private boolean doAuthenticate(String username, PublicKey suppliedKey, ServerSession session) { + public boolean authenticate(String username, PublicKey suppliedKey, ServerSession session) { SshDaemonClient client = session.getAttribute(SshDaemonClient.KEY); Preconditions.checkState(client.getUser() == null); username = username.toLowerCase(Locale.US); @@ -95,18 +73,5 @@ log.warn("could not authenticate {} for SSH using the supplied public key", username); return false; - } - - @Override - public void sessionCreated(Session session) { - } - - @Override - public void sessionEvent(Session sesssion, Event event) { - } - - @Override - public void sessionClosed(Session session) { - cache.remove(session); } } -- Gitblit v1.9.1