Merge branch 'stable-2.10' into stable-2.11
* stable-2.10: Revert "Revert "SSH: Simplify CachingPublicKeyAuthenticator implementation"" Remove stripping # in login redirect Change-Id: I052e45a3220b43923e1ee414c97f1bbfe845620a
This commit is contained in:
@@ -7,10 +7,7 @@
|
|||||||
var p = href.indexOf('#');
|
var p = href.indexOf('#');
|
||||||
var token;
|
var token;
|
||||||
if (p >= 0) {
|
if (p >= 0) {
|
||||||
token = href.substring(p + 1);
|
token = href.substring(p);
|
||||||
if (token.length != 0 && token.charAt(0) == '/') {
|
|
||||||
token = token.substring(1);
|
|
||||||
}
|
|
||||||
href = href.substring(0, p);
|
href = href.substring(0, p);
|
||||||
} else {
|
} else {
|
||||||
token = '';
|
token = '';
|
||||||
|
@@ -17,56 +17,12 @@ package com.google.gerrit.sshd;
|
|||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.Singleton;
|
import com.google.inject.Singleton;
|
||||||
|
|
||||||
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 java.security.PublicKey;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class CachingPublicKeyAuthenticator implements PublickeyAuthenticator,
|
public class CachingPublicKeyAuthenticator
|
||||||
SessionListener {
|
extends org.apache.sshd.server.auth.CachingPublicKeyAuthenticator {
|
||||||
|
|
||||||
private final PublickeyAuthenticator authenticator;
|
|
||||||
private final Map<ServerSession, Map<PublicKey, Boolean>> sessionCache;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public CachingPublicKeyAuthenticator(DatabasePubKeyAuth authenticator) {
|
public CachingPublicKeyAuthenticator(DatabasePubKeyAuth authenticator) {
|
||||||
this.authenticator = authenticator;
|
super(authenticator);
|
||||||
this.sessionCache = new ConcurrentHashMap<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean authenticate(String username, PublicKey key,
|
|
||||||
ServerSession session) {
|
|
||||||
Map<PublicKey, Boolean> m = sessionCache.get(session);
|
|
||||||
if (m == null) {
|
|
||||||
m = new HashMap<>();
|
|
||||||
sessionCache.put(session, m);
|
|
||||||
session.addListener(this);
|
|
||||||
}
|
|
||||||
if (m.containsKey(key)) {
|
|
||||||
return m.get(key);
|
|
||||||
}
|
|
||||||
boolean r = authenticator.authenticate(username, key, session);
|
|
||||||
m.put(key, r);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sessionCreated(Session session) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sessionEvent(Session sesssion, Event event) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sessionClosed(Session session) {
|
|
||||||
sessionCache.remove(session);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user