Spec-Zone.ru › OpenJDK 24

Интерфейс CallbackHandler

Все известные реализующие классы:
TextCallbackHandler
public interface CallbackHandler

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

CallbackHandler реализуются в зависимости от приложения. Например, реализации для приложения с графическим интерфейсом пользователя (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))).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 США.
Все права защищены. Использование подчиняется лицензионным условиям и политике перераспределения документации.
ПРОЕКТ 24-ea+36-Debian-1

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/security/auth/callback/CallbackHandler.html

Spec-Zone.ru

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