com.maverick.sshd.auth
Class PublicKeyAuthentication

java.lang.Object
  extended by com.maverick.sshd.auth.PublicKeyAuthentication
All Implemented Interfaces:
com.maverick.ssh.components.SshComponent, AuthenticationMechanism

public class PublicKeyAuthentication
extends Object
implements AuthenticationMechanism

Provides an AuthenticationMechanism that enables the public key authentication. The current implementation will look for an authorized_keys file in the users home directory which is returned from the com.maverick.sshd.platform.NativeAuthenticationProvider#getHomeDirectory(String) method. The format of this file is identical to that required by OpenSSH.

Author:
Lee David Painter

Field Summary
static String AUTHENTICATION_METHOD
           
static int SSH_MSG_USERAUTH_PK_OK
           
 
Constructor Summary
PublicKeyAuthentication(org.apache.mina.core.session.IoSession session, SshTransport transport, AuthenticationProtocol authentication, Connection con, PublicKeyAuthenticationProvider[] pkProviders)
           
 
Method Summary
 String getName()
          Return the SSH method name for this authentication.
 boolean isPassword()
          Is this password authentication? We use this so user does not end up having to submit their password if an alternative method provides password authentication but is not the core "password" method (for example keyboard-interactive).
 boolean processMessage(byte[] msg)
          If the SSH protocol authentication method defines additional messages which are sent from the client, they will be passed into your implementation here when received.
 boolean startRequest(String username, byte[] msg)
          Start an authentication transaction.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SSH_MSG_USERAUTH_PK_OK

public static final int SSH_MSG_USERAUTH_PK_OK
See Also:
Constant Field Values

AUTHENTICATION_METHOD

public static final String AUTHENTICATION_METHOD
See Also:
Constant Field Values
Constructor Detail

PublicKeyAuthentication

public PublicKeyAuthentication(org.apache.mina.core.session.IoSession session,
                               SshTransport transport,
                               AuthenticationProtocol authentication,
                               Connection con,
                               PublicKeyAuthenticationProvider[] pkProviders)
Method Detail

getName

public String getName()
Description copied from interface: AuthenticationMechanism
Return the SSH method name for this authentication. e.g "password"

Specified by:
getName in interface com.maverick.ssh.components.SshComponent
Specified by:
getName in interface AuthenticationMechanism
Returns:
String

startRequest

public boolean startRequest(String username,
                            byte[] msg)
                     throws IOException
Description copied from interface: AuthenticationMechanism
Start an authentication transaction. If the authentication mechanism is simple and you can determine the result from all information received in the SSH_MSG_USERAUTH_REQUEST message, you should call the approriate completion methods on the AuthenticationProtocol instance that was passed in the initialization process. The request data varies according to the authentication method.
 if (success)
   authentication.completedAuthentication(method, username, service);
 else
   authentication.failedAuthentication(method);
 

Specified by:
startRequest in interface AuthenticationMechanism
msg - the request data from the SSH_MSG_USERAUTH_REQUEST message
Returns:
true if the message was processed, otherwise false
Throws:
IOException

processMessage

public boolean processMessage(byte[] msg)
                       throws IOException
Description copied from interface: AuthenticationMechanism
If the SSH protocol authentication method defines additional messages which are sent from the client, they will be passed into your implementation here when received.

Specified by:
processMessage in interface AuthenticationMechanism
Returns:
boolean
Throws:
IOException

isPassword

public boolean isPassword()
Description copied from interface: AuthenticationMechanism
Is this password authentication? We use this so user does not end up having to submit their password if an alternative method provides password authentication but is not the core "password" method (for example keyboard-interactive).

Specified by:
isPassword in interface AuthenticationMechanism
Returns:


Copyright © 2012. All Rights Reserved.