Spec-Zone.ru › OpenJDK 25

Интерфейс CallbackHandler

Все известные классы-реализации:
TextCallbackHandler
public interface CallbackHandler

Приложение реализует CallbackHandler и передаёт его нижележащим службам безопасности, чтобы они могли взаимодействовать с приложением для получения определённых данных аутентификации, таких как имена пользователей и пароли, или для отображения определённой информации, например сообщений об ошибках и предупреждений.

Реализации CallbackHandlers зависят от приложения. Например, реализации для приложения с графическим пользовательским интерфейсом (GUI) могут открывать окна для запроса необходимой информации или отображения сообщений об ошибках. Реализация также может получать запрошенную информацию из альтернативного источника, не запрашивая её у конечного пользователя.

Нижележащие службы безопасности запрашивают различные типы информации, передавая отдельные Callbacks в CallbackHandler. Реализация CallbackHandler определяет, как получать и отображать информацию, в зависимости от переданных ей Callbacks. Например, если нижележащей службе для аутентификации пользователя нужны имя пользователя и пароль, она использует NameCallback и PasswordCallback. В этом случае CallbackHandler может запросить имя пользователя и пароль по очереди или запросить оба значения в одном окне.

Реализацию класса CallbackHandler по умолчанию можно задать, установив значение свойства безопасности auth.login.defaultCallbackHandler.

Если свойству безопасности присвоено полное имя класса реализации CallbackHandler, то LoginContext загрузит указанный CallbackHandler и передаст его нижележащим LoginModules. LoginContext загружает обработчик по умолчанию, только если ему не был передан другой обработчик.

Все реализации обработчика по умолчанию должны предоставлять открытый конструктор без аргументов.

С:
1.4
См. также:
  • свойства безопасности

Краткое описание методов

Модификатор и тип Метод Описание
void handle(Callback[] callbacks)
Получает или отображает информацию, запрошенную в переданных Callbacks.

Подробное описание методов

handle

void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException

Получает или отображает информацию, запрошенную в переданных Callbacks.

Реализация метода 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,
                         System.getProperty("stdin.encoding")))).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, указанных в параметре callbacks.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/javax/security/auth/callback/CallbackHandler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API