Interface UserInteraction

    • Method Detail

      • isInteractionAllowed

        default boolean isInteractionAllowed​(ClientSession session)
        Parameters:
        session - The ClientSession
        Returns:
        true if user interaction allowed for this session (default)
      • serverVersionInfo

        default void serverVersionInfo​(ClientSession session,
                                       List<String> lines)
        Called if the server sent any extra information beyond the standard version line
        Parameters:
        session - The ClientSession through which this information was received
        lines - The sent extra lines - without the server version
        See Also:
        RFC 4253 - section 4.2
      • welcome

        default void welcome​(ClientSession session,
                             String banner,
                             String lang)
        Displays the welcome banner to the user.
        Parameters:
        session - The ClientSession through which the banner was received
        banner - The welcome banner
        lang - The banner language code - may be empty
      • interactive

        String[] interactive​(ClientSession session,
                             String name,
                             String instruction,
                             String lang,
                             String[] prompt,
                             boolean[] echo)
        Invoked when "keyboard-interactive" authentication mechanism is used in order to provide responses for the server's challenges (a.k.a. prompts)
        Parameters:
        session - The ClientSession through which the request was received
        name - The interaction name (may be empty)
        instruction - The instruction (may be empty)
        lang - The language for the data (may be empty)
        prompt - The prompts to be displayed (may be empty)
        echo - For each prompt whether to echo the user's response
        Returns:
        The replies - Note: the protocol states that the number of replies should be exactly the same as the number of prompts, however we do not enforce it since it is defined as the server's job to check and manage this violation.
      • getUpdatedPassword

        String getUpdatedPassword​(ClientSession session,
                                  String prompt,
                                  String lang)
        Invoked when the server returns an SSH_MSG_USERAUTH_PASSWD_CHANGEREQ response indicating that the password should be changed - e.g., expired or not strong enough (as per the server's policy).
        Parameters:
        session - The ClientSession through which the request was received
        prompt - The server's prompt (may be empty)
        lang - The prompt's language (may be empty)
        Returns:
        The password to use - if null/empty then no updated password was provided - thus failing the authentication via passwords (Note: authentication might still succeed via some other means - be it other passwords, public keys, etc...)
      • resolveAuthPasswordAttempt

        default String resolveAuthPasswordAttempt​(ClientSession session)
                                           throws Exception
        Invoked during password authentication when no more pre-registered passwords are available
        Parameters:
        session - The ClientSession through which the request was received
        Returns:
        The password to use - null signals no more passwords available
        Throws:
        Exception - if failed to handle the request - Note: may cause session termination
      • resolveAuthPublicKeyIdentityAttempt

        default KeyPair resolveAuthPublicKeyIdentityAttempt​(ClientSession session)
                                                     throws Exception
        Invoked during public key authentication when no more pre-registered keys are available
        Parameters:
        session - The ClientSession through which the request was received
        Returns:
        The KeyPair to use - null signals no more keys available
        Throws:
        Exception - if failed to handle the request - Note: may cause session termination
      • findPromptComponentLastPosition

        static int findPromptComponentLastPosition​(String prompt,
                                                   String tokensList)
        Parameters:
        prompt - The user interaction prompt
        tokensList - A comma-separated list of tokens whose last index is prompt is sought.
        Returns:
        The position of any token in the prompt - negative if not found