Spec-Zone.ru › OpenJDK 8

Интерфейс CallbackHandler


public interface CallbackHandler

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

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

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

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

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

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

См. также:
security properties

Методы

Модификатор и тип Метод и описание
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.

© 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.

Spec-Zone.ru

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