You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2013/07/17 21:09:05 UTC
git commit: [SSHD-221] Don't hardwire the service in the user auth
code
Updated Branches:
refs/heads/master 7faddc9b8 -> bf7c8b885
[SSHD-221] Don't hardwire the service in the user auth code
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/bf7c8b88
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/bf7c8b88
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/bf7c8b88
Branch: refs/heads/master
Commit: bf7c8b8853df287f1ab0dee65aa4a131d57bafae
Parents: 7faddc9
Author: Guillaume Nodet <gn...@apache.org>
Authored: Wed Jul 17 21:08:26 2013 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Wed Jul 17 21:08:26 2013 +0200
----------------------------------------------------------------------
.../sshd/client/auth/AbstractUserAuth.java | 50 ++++++++++++++++++++
.../apache/sshd/client/auth/UserAuthAgent.java | 22 ++-------
.../sshd/client/auth/UserAuthPassword.java | 11 ++---
.../sshd/client/auth/UserAuthPublicKey.java | 13 ++---
.../sshd/client/session/ClientSessionImpl.java | 8 ++--
5 files changed, 69 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/bf7c8b88/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java
new file mode 100644
index 0000000..5f9a346
--- /dev/null
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/AbstractUserAuth.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sshd.client.auth;
+
+import org.apache.sshd.client.UserAuth;
+import org.apache.sshd.client.session.ClientSessionImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ */
+public abstract class AbstractUserAuth implements UserAuth {
+
+ protected final Logger log = LoggerFactory.getLogger(this.getClass());
+
+ protected final ClientSessionImpl session;
+ protected final String service;
+ protected final String username;
+
+ protected AbstractUserAuth(ClientSessionImpl session, String service, String username) {
+ this.session = session;
+ this.username = username;
+ this.service = service;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public String getService() {
+ return service;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/bf7c8b88/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthAgent.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthAgent.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthAgent.java
index e6edfb9..35793ef 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthAgent.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthAgent.java
@@ -24,44 +24,32 @@ import java.security.interfaces.RSAPublicKey;
import java.util.Iterator;
import org.apache.sshd.agent.SshAgent;
-import org.apache.sshd.client.UserAuth;
import org.apache.sshd.client.session.ClientSessionImpl;
import org.apache.sshd.common.KeyPairProvider;
import org.apache.sshd.common.SshConstants;
import org.apache.sshd.common.util.Buffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Authentication delegating to an SSH agent
*/
-public class UserAuthAgent implements UserAuth {
+public class UserAuthAgent extends AbstractUserAuth {
- protected final Logger log = LoggerFactory.getLogger(getClass());
-
- private final ClientSessionImpl session;
- private final String username;
private final SshAgent agent;
private final Iterator<SshAgent.Pair<PublicKey, String>> keys;
- public UserAuthAgent(ClientSessionImpl session, String username) throws IOException {
- this.session = session;
- this.username = username;
+ public UserAuthAgent(ClientSessionImpl session, String service, String username) throws IOException {
+ super(session, service, username);
this.agent = session.getFactoryManager().getAgentFactory().createClient(session);
this.keys = agent.getIdentities().iterator();
}
- public String getUsername() {
- return username;
- }
-
protected void sendNextKey(PublicKey key) throws IOException {
try {
log.info("Send SSH_MSG_USERAUTH_REQUEST for publickey");
Buffer buffer = session.createBuffer(SshConstants.Message.SSH_MSG_USERAUTH_REQUEST, 0);
int pos1 = buffer.wpos() - 1;
buffer.putString(username);
- buffer.putString("ssh-connection");
+ buffer.putString(service);
buffer.putString("publickey");
buffer.putByte((byte) 1);
buffer.putString((key instanceof RSAPublicKey) ? KeyPairProvider.SSH_RSA : KeyPairProvider.SSH_DSS);
@@ -73,7 +61,7 @@ public class UserAuthAgent implements UserAuth {
bs.putString(session.getKex().getH());
bs.putCommand(SshConstants.Message.SSH_MSG_USERAUTH_REQUEST);
bs.putString(username);
- bs.putString("ssh-connection");
+ bs.putString(AUTHENTICATION_SERVICE);
bs.putString("publickey");
bs.putByte((byte) 1);
bs.putString((key instanceof RSAPublicKey) ? KeyPairProvider.SSH_RSA : KeyPairProvider.SSH_DSS);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/bf7c8b88/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java
index 541f572..7e5dd97 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java
@@ -32,17 +32,14 @@ import org.slf4j.LoggerFactory;
*
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
-public class UserAuthPassword implements UserAuth {
+public class UserAuthPassword extends AbstractUserAuth {
protected final Logger log = LoggerFactory.getLogger(getClass());
- private final ClientSessionImpl session;
- private final String username;
private final String password;
- public UserAuthPassword(ClientSessionImpl session, String username, String password) {
- this.session = session;
- this.username = username;
+ public UserAuthPassword(ClientSessionImpl session, String service, String username, String password) {
+ super(session, service, username);
this.password = password;
}
@@ -55,7 +52,7 @@ public class UserAuthPassword implements UserAuth {
log.info("Send SSH_MSG_USERAUTH_REQUEST for password");
buffer = session.createBuffer(SshConstants.Message.SSH_MSG_USERAUTH_REQUEST, 0);
buffer.putString(username);
- buffer.putString("ssh-connection");
+ buffer.putString(service);
buffer.putString("password");
buffer.putByte((byte) 0);
buffer.putString(password);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/bf7c8b88/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java
index f1c841d..a809a90 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java
@@ -37,17 +37,14 @@ import org.slf4j.LoggerFactory;
*
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
-public class UserAuthPublicKey implements UserAuth {
+public class UserAuthPublicKey extends AbstractUserAuth {
protected final Logger log = LoggerFactory.getLogger(getClass());
- private final ClientSessionImpl session;
- private final String username;
private final KeyPair key;
- public UserAuthPublicKey(ClientSessionImpl session, String username, KeyPair key) {
- this.session = session;
- this.username = username;
+ public UserAuthPublicKey(ClientSessionImpl session, String service, String username, KeyPair key) {
+ super(session, service, username);
this.key = key;
}
@@ -62,7 +59,7 @@ public class UserAuthPublicKey implements UserAuth {
buffer = session.createBuffer(SshConstants.Message.SSH_MSG_USERAUTH_REQUEST, 0);
int pos1 = buffer.wpos() - 1;
buffer.putString(username);
- buffer.putString("ssh-connection");
+ buffer.putString(service);
buffer.putString("publickey");
buffer.putByte((byte) 1);
buffer.putString((key.getPublic() instanceof RSAPublicKey) ? KeyPairProvider.SSH_RSA : KeyPairProvider.SSH_DSS);
@@ -76,7 +73,7 @@ public class UserAuthPublicKey implements UserAuth {
bs.putString(session.getKex().getH());
bs.putCommand(SshConstants.Message.SSH_MSG_USERAUTH_REQUEST);
bs.putString(username);
- bs.putString("ssh-connection");
+ bs.putString(service);
bs.putString("publickey");
bs.putByte((byte) 1);
bs.putString((key.getPublic() instanceof RSAPublicKey) ? KeyPairProvider.SSH_RSA : KeyPairProvider.SSH_DSS);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/bf7c8b88/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
index 04f3dd8..30c10ca 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java
@@ -62,6 +62,8 @@ import org.apache.sshd.server.channel.OpenChannelException;
*/
public class ClientSessionImpl extends AbstractSession implements ClientSession {
+ private static final String AUTHENTICATION_SERVICE = "ssh-connection";
+
private UserAuth userAuth;
private AuthFuture authFuture;
@@ -104,7 +106,7 @@ public class ClientSessionImpl extends AbstractSession implements ClientSession
throw new IllegalStateException("Session is closed");
}
authFuture = new DefaultAuthFuture(lock);
- userAuth = new UserAuthAgent(this, user);
+ userAuth = new UserAuthAgent(this, AUTHENTICATION_SERVICE, user);
setState(State.UserAuth);
switch (userAuth.next(null)) {
@@ -142,7 +144,7 @@ public class ClientSessionImpl extends AbstractSession implements ClientSession
throw new IllegalStateException("Session is closed");
}
authFuture = new DefaultAuthFuture(lock);
- userAuth = new UserAuthPassword(this, user, password);
+ userAuth = new UserAuthPassword(this, AUTHENTICATION_SERVICE, user, password);
setState(State.UserAuth);
switch (userAuth.next(null)) {
@@ -180,7 +182,7 @@ public class ClientSessionImpl extends AbstractSession implements ClientSession
throw new IllegalStateException("Session is closed");
}
authFuture = new DefaultAuthFuture(lock);
- userAuth = new UserAuthPublicKey(this, user, key);
+ userAuth = new UserAuthPublicKey(this, AUTHENTICATION_SERVICE, user, key);
setState(State.UserAuth);
switch (userAuth.next(null)) {