Class InteractivePasswordIdentityProvider

java.lang.Object
org.apache.sshd.contrib.client.auth.password.InteractivePasswordIdentityProvider
All Implemented Interfaces:
Iterator<String>, ClientSessionHolder, SessionContextHolder, SessionHolder<ClientSession>

public class InteractivePasswordIdentityProvider extends Object implements Iterator<String>, SessionHolder<ClientSession>, ClientSessionHolder

Helps implement a PasswordIdentityProvider by delegating calls to UserInteraction.getUpdatedPassword(ClientSession, String, String). The way to use it would be as follows:

 
 try (ClientSession session = client.connect(login, host, port).await().getSession()) {
     session.setUserInteraction(...);     // this can also be set at the client level
     PasswordIdentityProvider passwordIdentityProvider =
          InteractivePasswordIdentityProvider.providerOf(session, "My prompt");
     session.setPasswordIdentityProvider(passwordIdentityProvider);
     session.auth.verify(...timeout...);
 }

 or

 UserInteraction ui = ....;
 try (ClientSession session = client.connect(login, host, port).await().getSession()) {
     PasswordIdentityProvider passwordIdentityProvider =
          InteractivePasswordIdentityProvider.providerOf(session, ui, "My prompt");
     session.setPasswordIdentityProvider(passwordIdentityProvider);
     session.auth.verify(...timeout...);
 }
 
 
Note: UserInteraction.isInteractionAllowed(ClientSession) is consulted prior to invoking getUpdatedPassword - if returns false then password retrieval method is not invoked, and it is assumed that no more passwords are available