Author: gnodet
Date: Tue Jan 20 10:41:45 2009
New Revision: 736062
URL: http://svn.apache.org/viewvc?rev=736062&view=rev
Log:
SSHD-11: Expose the ServerSession to PublickeyAuthenticators
Added:
mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AttributeKey.java
Modified:
mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AbstractSession.java
mina/sshd/trunk/src/main/java/org/apache/sshd/server/PublickeyAuthenticator.java
mina/sshd/trunk/src/main/java/org/apache/sshd/server/auth/UserAuthPublicKey.java
mina/sshd/trunk/src/test/java/org/apache/sshd/util/BogusPublickeyAuthenticator.java
Modified:
mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AbstractSession.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AbstractSession.java?rev=736062&r1=736061&r2=736062&view=diff
==============================================================================
---
mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AbstractSession.java
(original)
+++
mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AbstractSession.java
Tue Jan 20 10:41:45 2009
@@ -129,6 +129,7 @@
protected int decoderLength;
protected final Object encodeLock = new Object();
protected final Object decodeLock = new Object();
+ protected final Map<AttributeKey<?>, Object> attributes = new
ConcurrentHashMap<AttributeKey<?>, Object>();
/**
* Create a new session.
@@ -982,4 +983,26 @@
return defaultValue;
}
+ /**
+ * Returns the value of the user-defined attribute of this session.
+ *
+ * @param key the key of the attribute; must not be null.
+ * @return <tt>null</tt> if there is no attribute with the specified key
+ */
+ @SuppressWarnings("unchecked")
+ public <T> T getAttribute(AttributeKey<T> key) {
+ return (T)attributes.get(key);
+ }
+
+ /**
+ * Sets a user-defined attribute.
+ *
+ * @param key the key of the attribute; must not be null.
+ * @param value the value of the attribute; must not be null.
+ * @return The old value of the attribute. <tt>null</tt> if it is new.
+ */
+ @SuppressWarnings("unchecked")
+ public <T, E extends T> T setAttribute(AttributeKey<T> key, E value) {
+ return (T)attributes.put(key, value);
+ }
}
Added:
mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AttributeKey.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AttributeKey.java?rev=736062&view=auto
==============================================================================
---
mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AttributeKey.java
(added)
+++
mina/sshd/trunk/src/main/java/org/apache/sshd/common/session/AttributeKey.java
Tue Jan 20 10:41:45 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.common.session;
+
+/**
+ * Type safe key for storage within the user attributes of {...@link
AbstractSession}.
+ *
+ * @param T type of value stored in the attribute.
+ *
+ * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a>
+ * @version $Rev$, $Date$
+ */
+public class AttributeKey<T> {
+}
Modified:
mina/sshd/trunk/src/main/java/org/apache/sshd/server/PublickeyAuthenticator.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/src/main/java/org/apache/sshd/server/PublickeyAuthenticator.java?rev=736062&r1=736061&r2=736062&view=diff
==============================================================================
---
mina/sshd/trunk/src/main/java/org/apache/sshd/server/PublickeyAuthenticator.java
(original)
+++
mina/sshd/trunk/src/main/java/org/apache/sshd/server/PublickeyAuthenticator.java
Tue Jan 20 10:41:45 2009
@@ -18,6 +18,8 @@
*/
package org.apache.sshd.server;
+import org.apache.sshd.server.session.ServerSession;
+
import java.security.PublicKey;
/**
@@ -28,6 +30,6 @@
*/
public interface PublickeyAuthenticator {
- boolean hasKey(String username, PublicKey key);
+ boolean hasKey(String username, PublicKey key, ServerSession session);
}
Modified:
mina/sshd/trunk/src/main/java/org/apache/sshd/server/auth/UserAuthPublicKey.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/src/main/java/org/apache/sshd/server/auth/UserAuthPublicKey.java?rev=736062&r1=736061&r2=736062&view=diff
==============================================================================
---
mina/sshd/trunk/src/main/java/org/apache/sshd/server/auth/UserAuthPublicKey.java
(original)
+++
mina/sshd/trunk/src/main/java/org/apache/sshd/server/auth/UserAuthPublicKey.java
Tue Jan 20 10:41:45 2009
@@ -70,7 +70,7 @@
}
if (!hasSig) {
- if (authenticator.hasKey(username, key)) {
+ if (authenticator.hasKey(username, key, session)) {
Buffer buf =
session.createBuffer(SshConstants.Message.SSH_MSG_USERAUTH_PK_OK);
buf.putString(alg);
buf.putRawBytes(buffer.array(), oldPos, 4 + len);
@@ -80,7 +80,7 @@
throw new Exception("Unsupported key for user");
}
} else {
- if (!authenticator.hasKey(username, key)) {
+ if (!authenticator.hasKey(username, key, session)) {
throw new Exception("Unsupported key for user");
}
Buffer buf = new Buffer();
Modified:
mina/sshd/trunk/src/test/java/org/apache/sshd/util/BogusPublickeyAuthenticator.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/src/test/java/org/apache/sshd/util/BogusPublickeyAuthenticator.java?rev=736062&r1=736061&r2=736062&view=diff
==============================================================================
---
mina/sshd/trunk/src/test/java/org/apache/sshd/util/BogusPublickeyAuthenticator.java
(original)
+++
mina/sshd/trunk/src/test/java/org/apache/sshd/util/BogusPublickeyAuthenticator.java
Tue Jan 20 10:41:45 2009
@@ -21,6 +21,7 @@
import java.security.PublicKey;
import org.apache.sshd.server.PublickeyAuthenticator;
+import org.apache.sshd.server.session.ServerSession;
/**
* TODO Add javadoc
@@ -30,7 +31,7 @@
*/
public class BogusPublickeyAuthenticator implements PublickeyAuthenticator {
- public boolean hasKey(String username, PublicKey key) {
+ public boolean hasKey(String username, PublicKey key, ServerSession
session) {
return true;
}
}