01: package ch.ethz.ssh2;
02:
03: /**
04: * An <code>InteractiveCallback</code> is used to respond to challenges sent
05: * by the server if authentication mode "keyboard-interactive" is selected.
06: *
07: * @see Connection#authenticateWithKeyboardInteractive(String,
08: * String[], InteractiveCallback)
09: *
10: * @author Christian Plattner, plattner@inf.ethz.ch
11: * @version $Id: InteractiveCallback.java,v 1.3 2006/02/13 21:19:25 cplattne Exp $
12: */
13:
14: public interface InteractiveCallback {
15: /**
16: * This callback interface is used during a "keyboard-interactive"
17: * authentication. Every time the server sends a set of challenges (however,
18: * most often just one challenge at a time), this callback function will be
19: * called to give your application a chance to talk to the user and to
20: * determine the response(s).
21: * <p>
22: * Some copy-paste information from the standard: a command line interface
23: * (CLI) client SHOULD print the name and instruction (if non-empty), adding
24: * newlines. Then for each prompt in turn, the client SHOULD display the
25: * prompt and read the user input. The name and instruction fields MAY be
26: * empty strings, the client MUST be prepared to handle this correctly. The
27: * prompt field(s) MUST NOT be empty strings.
28: * <p>
29: * Please refer to draft-ietf-secsh-auth-kbdinteract-XX.txt for the details.
30: * <p>
31: * Note: clients SHOULD use control character filtering as discussed in
32: * [draft-ietf-secsh-architecture-XX.txt] to avoid attacks by including
33: * terminal control characters in the fields to be displayed.
34: *
35: * @param name
36: * the name String sent by the server.
37: * @param instruction
38: * the instruction String sent by the server.
39: * @param numPrompts
40: * number of prompts - may be zero (in this case, you should just
41: * return a String array of length zero).
42: * @param prompt
43: * an array (length <code>numPrompts</code>) of Strings
44: * @param echo
45: * an array (length <code>numPrompts</code>) of booleans. For
46: * each prompt, the corresponding echo field indicates whether or
47: * not the user input should be echoed as characters are typed.
48: * @return an array of reponses - the array size must match the parameter
49: * <code>numPrompts</code>.
50: */
51: public String[] replyToChallenge(String name, String instruction,
52: int numPrompts, String[] prompt, boolean[] echo)
53: throws Exception;
54: }
|