Class ServerUserAuthService

All Implemented Interfaces:
Closeable, AutoCloseable, Channel, Closeable, PropertyResolver, Service, SessionContextHolder, SessionHolder<Session>, ServerSessionHolder

public class ServerUserAuthService extends AbstractCloseable implements Service, ServerSessionHolder
  • Field Details

    • welcomeSent

      private final AtomicBoolean welcomeSent
    • properties

      private final Map<String,Object> properties
    • serverSession

      private final ServerSession serverSession
    • welcomePhase

      private final WelcomeBannerPhase welcomePhase
    • userAuthFactories

      private List<UserAuthFactory> userAuthFactories
    • authMethods

      private List<List<String>> authMethods
    • authUserName

      private String authUserName
    • authMethod

      private String authMethod
    • authService

      private String authService
    • currentAuth

      private UserAuth currentAuth
    • maxAuthRequests

      private int maxAuthRequests
    • nbAuthRequests

      private int nbAuthRequests
  • Constructor Details

  • Method Details

    • getWelcomePhase

      public WelcomeBannerPhase getWelcomePhase()
    • start

      public void start()
      Specified by:
      start in interface Service
    • getSession

      public ServerSession getSession()
      Specified by:
      getSession in interface SessionHolder<Session>
    • getServerSession

      public ServerSession getServerSession()
      Specified by:
      getServerSession in interface ServerSessionHolder
      Returns:
      The underlying ServerSession used
    • getProperties

      public Map<String,Object> getProperties()
      Description copied from interface: PropertyResolver

      A map of properties that can be used to configure the SSH server or client. This map will never be changed by either the server or client and is not supposed to be changed at runtime (changes are not bound to have any effect on a running client or server), though it may affect the creation of sessions later as these values are usually not cached.

      Note: the type of the mapped property should match the expected configuration value type - Long, Integer, Boolean, String, etc.... If it doesn't, the toString() result of the mapped value is used to convert it to the required type. E.g., if the mapped value is the string "1234" and the expected value is a long then it will be parsed into one. Also, if the mapped value is an Integer but a long is expected, then it will be converted into one.

      Specified by:
      getProperties in interface PropertyResolver
      Returns:
      a valid Map containing configuration values, never null. Note: may be immutable.
    • process

      public void process(int cmd, Buffer buffer) throws Exception
      Description copied from interface: Service
      Service the request.
      Specified by:
      process in interface Service
      Parameters:
      cmd - The incoming command type
      buffer - The Buffer containing optional command parameters
      Throws:
      Exception - If failed to process the command
    • handleUserAuthRequestMessage

      protected boolean handleUserAuthRequestMessage(ServerSession session, Buffer buffer, AtomicReference<Boolean> authHolder) throws Exception
      Throws:
      Exception
    • asyncAuth

      protected void asyncAuth(int cmd, Buffer buffer, boolean authed)
    • handleAuthenticationInProgress

      protected void handleAuthenticationInProgress(int cmd, Buffer buffer) throws Exception
      Throws:
      Exception
    • handleAuthenticationSuccess

      protected void handleAuthenticationSuccess(int cmd, Buffer buffer) throws Exception
      Throws:
      Exception
    • handleAuthenticationFailure

      protected void handleAuthenticationFailure(int cmd, Buffer buffer) throws Exception
      Throws:
      Exception
    • sendWelcomeBanner

      public IoWriteFuture sendWelcomeBanner(ServerSession session) throws IOException
      Sends the welcome banner (if any configured) and if not already invoked
      Parameters:
      session - The ServerSession to send the welcome banner to
      Returns:
      The sent welcome banner IoWriteFuture - null if none sent
      Throws:
      IOException - If failed to send the banner
    • resolveWelcomeBanner

      protected String resolveWelcomeBanner(ServerSession session) throws IOException
      Throws:
      IOException
    • loadWelcomeBanner

      protected String loadWelcomeBanner(ServerSession session, URL url, Charset cs) throws IOException
      Throws:
      IOException
    • getFactoryManager

      public ServerFactoryManager getFactoryManager()