Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
Содержание | Предыдущий | Затем Расширения управления Java (JMX) Технологическое Учебное руководство

 Глава 5

Безопасность

Эта глава дает примеры того, как установить технологические средства защиты JMX, как описано в следующих разделах:

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

Простая Безопасность

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

Соединители RMI С Простой Безопасностью

Можно найти пример соединителя RMI с простой безопасностью в каталоге work_dir/jmx_examples/Security/simple.

  1. Откройте work_dir/jmx_examples/Security/simple каталог.

    В этом каталоге Вы найдете следующие каталоги:

    • /server, содержа файлServer.java
    • /config, содержа конфигурационные файлы безопасности:
    • access.properties
    • keystore
    • password.properties
    • truststore
    • /mbeans, содержа следующие файлы:
    • SimpleStandardMBean.java
    • SimpleStandard.java
    • /client, содержа следующие файлы:
    • Client.java
    • ClientListener.java
  2. Откройтесь весь *.java и *.properties файлы в текстовом редакторе

    Эти файлы будут проанализированы в следующих разделах.

Server.java

Server.java класс показывают в  ПРИМЕРЕ КОДА 5-1.

 ПРИМЕР КОДА 5-1 Пример Соединителя RMI (Простая Безопасность) Класс Server.java
 
public class Server { 
 
  public static void main(String[] args) { 
  try { 
       MBeanServer mbs = MBeanServerFactory.createMBeanServer(); 
 
       HashMap env = new HashMap(); 
 
       SslRMIClientSocketFactory csf =  
                  new SslRMIClientSocketFactory(); 
       SslRMIServerSocketFactory ssf =  
                  new SslRMIServerSocketFactory(); 
       env.put(RMIConnectorServer. 
                  RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE,csf); 
       env.put(RMIConnectorServer. 
                  RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE,ssf); 
 
       env.put("jmx.remote.x.password.file", 
                 "config" + File.separator + "password.properties"); 
       env.put("jmx.remote.x.access.file", 
                 "config" + File.separator + "access.properties"); 
 
       JMXServiceURL url = new JMXServiceURL( 
        "service:jmx:rmi:///jndi/rmi://localhost:9999/server"); 
         JMXConnectorServer cs = 
            JMXConnectorServerFactory.newJMXConnectorServer(url,  
                                                            env,  
                                                            mbs); 
       cs.start(); 
     } catch (Exception e) { 
       e.printStackTrace(); 
     } 
  } 
} 
 

Server класс, показанный в  ПРИМЕРЕ КОДА 5-1, создает сервер MBean mbs, и заполняет карту среды env с безопасным RMI клиент снабжают фабрику сокетом csf, безопасный сервер RMI снабжает фабрику сокетом ssf, и файлы свойств password.properties и access.properties.

Файл свойств password.properties содержит имя пользователя и пароль и получается доступ, используя JMX Удаленный API-интерфейс JMXAuthenticator. Используя свойство jmx.remote.x.password.file то же самое как создание основанного на пароле JMXAuthenticator и передача этого в среду отображается через jmx.remote.authenticator свойство.

Файл свойств access.properties содержит имя пользователя и уровень права доступа, которое может быть также readwrite или readonly. Это представляет уровень доступа, который этот пользователь может иметь к операциям сервера MBean. Это основанное на файле управление доступом реализуется, используя технологический интерфейс JMX MBeanServerForwarder, который обертывает реальный сервер MBean в контроллере доступа сервер MBean. Контроллер доступа сервер MBean только передает запросы к реальному серверу MBean после выполнения соответствующих проверок.

Server создает службу JMX URL, названный url, для соединителя RMI, который будет работать по транспорту JRMP по умолчанию, и регистрировать тупик соединителя RMI в реестре RMI на порту 9999 из локального узла.

Сервер MBean mbs, конверт карты среды и служба URL url ко все передают JMXConnectorServer чтобы создать новое, защитите названный сервер соединителя JMX cs.

SimpleStandardMBean.java

SimpleStandardMBean класс определяет тот же самый прямой интерфейс MBean, как использовался в  Главе 3, "Соединители JMX".

SimpleStandard.java

SimpleStandard класс определяет тот же самый прямой MBean, как использовался в  Главе 3, "Соединители JMX".

ClientListener.java

ClientListener класс определяет того же самого прямого слушателя уведомления, как использовался в  Главе 3, "Соединители JMX".

Client.java

Client.java класс показывают в  ПРИМЕРЕ КОДА 5-1.

 ПРИМЕР КОДА 5-1 Пример Соединителя RMI (Простая Безопасность) Класс Client.java
 
public class Client { 
 
  public static void main(String[] args) { 
  try { 
      HashMap env = new HashMap(); 
 
      String[] credentials = new String[] { "username" , "password" }; 
      env.put("jmx.remote.credentials", credentials); 
      JMXServiceURL url = new JMXServiceURL( 
         "service:jmx:rmi:///jndi/rmi://localhost:9999/server");       
      JMXConnector jmxc = JMXConnectorFactory.connect(url, env); 
      MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); 
      String domains[] = mbsc.getDomains(); 
      for (int i = 0; i < domains.length; i++) { 
         System.out.println("Domain[" + i + "] = " + domains[i]); 
      } 
       
      ObjectName mbeanName =  
          new ObjectName("MBeans:type=SimpleStandard"); 
      mbsc.createMBean("SimpleStandard", mbeanName, null, null); 
      // Perform MBean operations 
      [...] 
      
      mbsc.removeNotificationListener(mbeanName, listener); 
      mbsc.unregisterMBean(mbeanName); 
      jmxc.close(); 
    }  catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
} 
 

Client класс, показанный в  ПРИМЕРЕ КОДА 5-1, заполняет карту среды env с рядом учетных данных, а именно, username и password ожидаемый Server. Эти учетные данные тогда даются экземпляру JMXConnector именованный jmxc когда к службе URL тупика соединителя и карты среды передают JMXConnectorFactory.connect(). Через jmxc, Client подключения к серверу MBean, запущенному Server, и выполняет операции MBean.

Когда соединение устанавливается, учетные данные, предоставленные в карте среды env отправляются серверу. Сервер тогда вызывает authenticate() метод JMXAuthenticator интерфейс, передавая удостоверения клиента как параметры. authenticate() метод аутентифицирует клиент и возвращает предмет, который содержит набор принципалов, на которые будут выполняться проверки управления доступом.

Выполнение Примера Соединителя RMI С Простой Безопасностью

Чтобы выполнить пример соединителя RMI с простой безопасностью, выполните следующие шаги:


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами