Интерфейс CallbackHandler
- Все известные реализующие классы:
TextCallbackHandler
public interface CallbackHandler
Приложение реализует CallbackHandler и передает его в подлежащие службы безопасности, чтобы они могли взаимодействовать с приложением для получения конкретных данных аутентификации, таких как имена пользователей и пароли, или для отображения определенной информации, такой как сообщения об ошибках и предупреждениях.
Обработчики обращений реализуются в зависимости от приложения. Например, реализации для приложения с графическим интерфейсом пользователя (GUI) могут отображать всплывающие окна для запроса необходимой информации или для отображения сообщений об ошибках. Реализация также может выбрать получение запрошенной информации из альтернативного источника без обращения к конечному пользователю.
Подлежащие службы безопасности запрашивают различную информацию, передавая отдельные обратные вызовы CallbackHandler. Реализация CallbackHandler определяет, как извлекать и отображать информацию в зависимости от переданных ей обратных вызовов. Например, если подлежащей службе требуется имя пользователя и пароль для аутентификации пользователя, она использует NameCallback и PasswordCallback. CallbackHandler может затем выбрать последовательно запросить имя пользователя и пароль или запросить оба в одном окне.
Реализация класса CallbackHandler по умолчанию может быть указана, установив значение свойства безопасности auth.login.defaultCallbackHandler.
Если свойство безопасности установлено на полное квалифицированное имя класса реализации CallbackHandler, тогда LoginContext загрузит указанный класс CallbackHandler и передаст его подлежащим модулям входа. LoginContext загружает обработчик по умолчанию только в том случае, если он не был предоставлен.
Все реализации обработчиков по умолчанию должны предоставлять публичный конструктор без аргументов.
- С:
- 1.4
- См. также:
security properties
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | handle(Callback[] callbacks) | Получение или отображение запрошенной информации в предоставленных обратных вызовах. |
Методы
handle
void handle(Callback[] callbacks)
throws IOException,
UnsupportedCallbackExceptionПолучение или отображение запрошенной информации в предоставленных обратных вызовах.
Реализация метода handle проверяет экземпляр(ы) объекта Callback для извлечения или отображения запрошенной информации. Следующий пример призван продемонстрировать, как может выглядеть реализация метода handle. Этот пример кода предназначен только для иллюстрации. Многие детали, включая правильную обработку ошибок, опущены для простоты.
public void handle(Callback[] callbacks)
throws IOException, UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof TextOutputCallback) {
// display the message according to the specified type
TextOutputCallback toc = (TextOutputCallback)callbacks[i];
switch (toc.getMessageType()) {
case TextOutputCallback.INFORMATION:
System.out.println(toc.getMessage());
break;
case TextOutputCallback.ERROR:
System.out.println("ERROR: " + toc.getMessage());
break;
case TextOutputCallback.WARNING:
System.out.println("WARNING: " + toc.getMessage());
break;
default:
throw new IOException("Unsupported message type: " +
toc.getMessageType());
}
} else if (callbacks[i] instanceof NameCallback) {
// prompt the user for a username
NameCallback nc = (NameCallback)callbacks[i];
// ignore the provided defaultName
System.err.print(nc.getPrompt());
System.err.flush();
nc.setName((new BufferedReader
(new InputStreamReader(System.in))).readLine());
} else if (callbacks[i] instanceof PasswordCallback) {
// prompt the user for sensitive information
PasswordCallback pc = (PasswordCallback)callbacks[i];
System.err.print(pc.getPrompt());
System.err.flush();
pc.setPassword(readPassword(System.in));
} else {
throw new UnsupportedCallbackException
(callbacks[i], "Unrecognized Callback");
}
}
}
// Reads user password from given input stream.
private char[] readPassword(InputStream in) throws IOException {
// insert code to read a user password from the input stream
}
- Параметры:
-
callbacks- массив объектовCallbackот подлежащей службы безопасности, содержащий запрошенную для извлечения или отображения информацию. - Исключения:
-
IOException- если произошла ошибка ввода или вывода. -
UnsupportedCallbackException- если реализация этого метода не поддерживает один или несколько обратных вызовов, указанных в параметреcallbacks.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/security/auth/callback/CallbackHandler.html