Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface CallbackHandler
Приложение реализует a CallbackHandler
и передачи это к базовым службам безопасности так, чтобы они могли взаимодействовать с приложением, чтобы получить определенные данные аутентификации, такие как имена пользователей и пароли, или вывести на экран определенную информацию, такую как сообщения об ошибках и предупреждающие сообщения.
CallbackHandlers реализуются зависящим от приложения способом. Например, реализации для приложения с графическим интерфейсом пользователя (GUI) могут раскрыться окна, чтобы запросить требуемую информацию или вывести на экран сообщения об ошибках. Реализация может также хотеть получать требуемую информацию из альтернативного источника, не спрашивая конечного пользователя.
Базовые службы безопасности обращаются с просьбами для различных типов информации, передавая отдельные Обратные вызовы к CallbackHandler
. CallbackHandler
реализация решает, как получить и вывести на экран информацию в зависимости от Обратных вызовов, которые передают к ней. Например, если базовая служба нуждается в имени пользователя и пароле, чтобы аутентифицировать пользователя, это использует a NameCallback
и PasswordCallback
. CallbackHandler
может тогда хотеть запрашивать имя пользователя и пароль последовательно, или запрашивать обоих в единственном окне.
Значение по умолчанию CallbackHandler
реализация класса может быть определена в auth.login.defaultCallbackHandler свойстве безопасности. Свойство безопасности может быть установлено в файле свойств безопасности Java, расположенном в файле под названием <JAVA_HOME>/lib/security/java.security. <JAVA_HOME> обращается к значению java.home системного свойства, и определяет каталог, где JRE устанавливается.
Если свойство безопасности устанавливается в полностью определенное имя a CallbackHandler
класс реализации, тогда a LoginContext
загрузит указанное CallbackHandler
и передайте это к базовому LoginModules. LoginContext
только загружает обработчик по умолчанию, если ему не обеспечили тот.
Все реализации обработчика по умолчанию должны предоставить общедоступному конструктору нулевого параметра.
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
- an array of Callback
objects provided
by an underlying security service which contains
the information requested to be retrieved or displayed.IOException
- if an input or output error occurs. UnsupportedCallbackException
- if the implementation of this
method does not support one or more of the Callbacks
specified in the callbacks
parameter.
For further API reference and developer documentation, see
Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.