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)) {