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 2009/07/27 09:15:02 UTC
svn commit: r798048 - in /mina/sshd/trunk:
sshd-core/src/main/java/org/apache/sshd/
sshd-core/src/main/java/org/apache/sshd/common/session/
sshd-core/src/main/java/org/apache/sshd/server/
sshd-core/src/main/java/org/apache/sshd/server/auth/ sshd-core/s...
Author: gnodet
Date: Mon Jul 27 07:15:01 2009
New Revision: 798048
URL: http://svn.apache.org/viewvc?rev=798048&view=rev
Log:
SSHD-36: PasswordAuthenticator and Shell should have access to ServerSession (patch provided by Frank)
Modified:
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AttributeKey.java
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/PasswordAuthenticator.java
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/ShellFactory.java
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/auth/UserAuthPassword.java
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java
mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/util/BogusPasswordAuthenticator.java
mina/sshd/trunk/sshd-pam/src/main/java/org/apache/sshd/server/pam/PAMPasswordAuthenticator.java
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java Mon Jul 27 07:15:01 2009
@@ -65,6 +65,7 @@
import org.apache.sshd.server.channel.ChannelSession;
import org.apache.sshd.server.kex.DHG1;
import org.apache.sshd.server.kex.DHG14;
+import org.apache.sshd.server.session.ServerSession;
import org.apache.sshd.server.shell.ProcessShellFactory;
/**
@@ -343,7 +344,7 @@
sshd.setShellFactory(new ProcessShellFactory(new String[] { "/bin/sh", "-i", "-l" }));
//sshd.setPasswordAuthenticator(new PAMPasswordAuthenticator());
sshd.setPasswordAuthenticator(new PasswordAuthenticator() {
- public Object authenticate(String username, String password) {
+ public Object authenticate(String username, String password, ServerSession session) {
return (username != null && username.equals(password)) ? username : null;
}
});
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AttributeKey.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AttributeKey.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AttributeKey.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AttributeKey.java Mon Jul 27 07:15:01 2009
@@ -20,6 +20,19 @@
/**
* Type safe key for storage within the user attributes of {@link AbstractSession}.
+ * Typically it is used as a static variable that is shared between the producer
+ * and the consumer. To further restrict access the setting or getting it from
+ * the ServerSession you can add static get and set methods, e.g:
+ *
+ * private static final AttributeKey<MyValue> MY_KEY = new AttributeKey<MyValue>();
+ *
+ * public static MyValue getMyValue(ServerSession s) {
+ * return s.getAttribute(MY_KEY);
+ * }
+ *
+ * private void setMyValye(ServerSession s, MyValue value) {
+ * s.setAttribute(MY_KEY, value);
+ * }
*
* @param T type of value stored in the attribute.
*
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/PasswordAuthenticator.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/PasswordAuthenticator.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/PasswordAuthenticator.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/PasswordAuthenticator.java Mon Jul 27 07:15:01 2009
@@ -18,6 +18,8 @@
*/
package org.apache.sshd.server;
+import org.apache.sshd.server.session.ServerSession;
+
/**
* The <code>PasswordAuthenticator</code> is used to authenticate
* users based on a password.
@@ -34,6 +36,6 @@
* @param password the password
* @return a non null identity object or <code>null</code if authentication fail
*/
- Object authenticate(String username, String password);
+ Object authenticate(String username, String password, ServerSession session);
}
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/ShellFactory.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/ShellFactory.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/ShellFactory.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/ShellFactory.java Mon Jul 27 07:15:01 2009
@@ -23,6 +23,8 @@
import java.io.OutputStream;
import java.util.Map;
+import org.apache.sshd.server.session.ServerSession;
+
/**
* This factory is used by SSH server when the client connected requests the creation
* of a shell.
@@ -162,5 +164,19 @@
void onExit(int exitValue);
}
+
+ /**
+ * Interface that can be implemented by a shell to be able to access the
+ * server session in which this shell will be used.
+ */
+ public interface SessionAware {
+
+ /**
+ * Set the server session in which this shell will be executed.
+ *
+ * @param session
+ */
+ void setSession(ServerSession session);
+ }
}
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/auth/UserAuthPassword.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/auth/UserAuthPassword.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/auth/UserAuthPassword.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/auth/UserAuthPassword.java Mon Jul 27 07:15:01 2009
@@ -52,7 +52,7 @@
private Object checkPassword(ServerSession session, String username, String password) throws Exception {
PasswordAuthenticator auth = session.getServerFactoryManager().getPasswordAuthenticator();
if (auth != null) {
- Object identity = auth.authenticate(username, password);
+ Object identity = auth.authenticate(username, password, session);
if (identity != null) {
return identity;
} else {
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java Mon Jul 27 07:15:01 2009
@@ -421,6 +421,10 @@
}
addEnvVariable("USER", ((ServerSession) session).getUsername());
shell = ((ServerSession) session).getServerFactoryManager().getShellFactory().createShell();
+ // If the shell wants to be aware of the session, let's do that
+ if (shell instanceof ShellFactory.SessionAware) {
+ ((ShellFactory.SessionAware) shell).setSession((ServerSession) session);
+ }
out = new ChannelOutputStream(this, remoteWindow, log, SshConstants.Message.SSH_MSG_CHANNEL_DATA);
err = new ChannelOutputStream(this, remoteWindow, log, SshConstants.Message.SSH_MSG_CHANNEL_EXTENDED_DATA);
// Wrap in logging filters
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/server/jaas/JaasPasswordAuthenticator.java Mon Jul 27 07:15:01 2009
@@ -29,6 +29,7 @@
import javax.security.auth.login.LoginContext;
import org.apache.sshd.server.PasswordAuthenticator;
+import org.apache.sshd.server.session.ServerSession;
/**
* TODO Add javadoc
@@ -47,6 +48,10 @@
this.domain = domain;
}
+ public Object authenticate(final String username, final String password, final ServerSession session) {
+ return authenticate(username, password);
+ }
+
public Object authenticate(final String username, final String password) {
try {
Subject subject = new Subject();
Modified: mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/util/BogusPasswordAuthenticator.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/util/BogusPasswordAuthenticator.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/util/BogusPasswordAuthenticator.java (original)
+++ mina/sshd/trunk/sshd-core/src/test/java/org/apache/sshd/util/BogusPasswordAuthenticator.java Mon Jul 27 07:15:01 2009
@@ -19,6 +19,7 @@
package org.apache.sshd.util;
import org.apache.sshd.server.PasswordAuthenticator;
+import org.apache.sshd.server.session.ServerSession;
/**
* TODO Add javadoc
@@ -27,7 +28,7 @@
*/
public class BogusPasswordAuthenticator implements PasswordAuthenticator {
- public Object authenticate(String username, String password) {
+ public Object authenticate(String username, String password, ServerSession session) {
return (username != null && username.equals(password)) ? username : null;
}
}
Modified: mina/sshd/trunk/sshd-pam/src/main/java/org/apache/sshd/server/pam/PAMPasswordAuthenticator.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-pam/src/main/java/org/apache/sshd/server/pam/PAMPasswordAuthenticator.java?rev=798048&r1=798047&r2=798048&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-pam/src/main/java/org/apache/sshd/server/pam/PAMPasswordAuthenticator.java (original)
+++ mina/sshd/trunk/sshd-pam/src/main/java/org/apache/sshd/server/pam/PAMPasswordAuthenticator.java Mon Jul 27 07:15:01 2009
@@ -21,6 +21,7 @@
import net.sf.jpam.Pam;
import net.sf.jpam.PamReturnValue;
import org.apache.sshd.server.PasswordAuthenticator;
+import org.apache.sshd.server.session.ServerSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,7 +46,7 @@
this.service = service;
}
- public Object authenticate(String username, String password) {
+ public Object authenticate(String username, String password, ServerSession session) {
LOG.info("Authenticating user {} using PAM", username);
PamReturnValue val = new Pam(service).authenticate(username, password);
LOG.info("Result: {}", val);