Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Первая часть: Безопасная Аутентификация, используя Службу Аутентификации и авторизации Java (JAAS)

Упражнение 1: Используя  API JAAS

Цель этого осуществления:

Цель этого осуществления состоит в том, чтобы изучить, как использовать Аутентификацию и авторизацию Java (JAAS) API, чтобы выполнить аутентификацию.

Фон для этого осуществления:

JAAS служит стандартной сменной основой аутентификации (ПЭМ) для платформы Java.  Приложение использует API JAAS, чтобы выполнить аутентификацию - процесс проверки идентификационных данных пользователя, который использует приложение и собирает его информацию идентификационных данных в контейнер, названный предметом. Приложение может тогда использовать информацию об идентификационных данных в предмете наряду с API JAAS, чтобы сделать решения об авторизации, решить, разрешают ли аутентифицируемому пользователю получить доступ к защищенным ресурсам или выполнить ограниченные действия. Это осуществление демонстрирует Аутентификацию JAAS. Это не демонстрирует Авторизацию JAAS.

Ресурсы для этого осуществления:

  1. Справочник JAAS
  2. Учебные руководства JAAS
  3. JAAS javadocs: javax.security.auth, javax.security.auth.callback, javax.security.auth.kerberos, javax.security.auth.login, javax.security.auth.spi, javax.security.auth.x500
  4. Отчет JAAS

Шаги, чтобы следовать:

  1. Считайте следующий пример кода. Это располагается в src/Jaas.java. Код выполняет следующие задачи:
  1. Определите обработчик обратного вызова или используйте предопределенный. [строка 2]
  2. Создайте LoginContext с именем, которое идентифицирует который запись конфигурации JAAS в использование. [строка 5]
  3. Выполните аутентификацию. [строка 8]
  4. Определите задачу, что аутентифицируемый пользователь должен выполнить  [строку 11]
  5. Выполните действие как аутентифицируемого пользователя [строки 14-15]
  6. Выход из системы.

Subject.doAs выполнит код, определенный в MyAction как аутентифицируемый пользователь [строки 14-15]. Это служит двум целям. Во-первых, код в MyAction, который запрашивает информацию идентификационных данных для аутентификации к службе, мог получить это от предмета. Это осуществление демонстрирует это использование. Во-вторых, если бы доступы MyAction какие-либо защищенные ресурсы/операции, информация об идентификационных данных в текущем предмете использовалась бы, чтобы принять соответствующее решение управления доступом. Этот второй аспект не покрывается этим осуществлением.

Листинг кода для Jaas.java.



  1. // Create a callback handler
  2. CallbackHandler callbackHandler = new TextCallbackHandler();
  3.  
  4. // Create LoginContext with a callback handler
  5. LoginContext context = new LoginContext(name, callbackHandler);
  6.  
  7. // Perform authentication
  8. context.login();
  9.  
  10. // Create action to perform
  11. PrivilegedAction action = new MyAction();
  12.  
  13. // Perform action as authenticated user
  14. Subject subject = context.getSubject();
  15. Subject.doAs(subject, action);
  16.  
  17. // Logout
  18. context.logout();

  1. Удостоверьтесь что %JAVA_HOME%/bin находится в пути, и JDK, на который указывают %JAVA_HOME% переменная указывает на Java на SE 6.
  2. Скомпилируйте измененный пример кода.
    
    % cd auth/src
    % javac Jaas.java
    
    
    Вы выполните этот код в последующих упражнениях после приведения в порядок некоторого набора. Это заканчивает это осуществление.

Сводка:

Это осуществление, представленное основные классы API JAAS: LoginContext и Subject. Вы изучили, как использовать LoginContext аутентифицировать пользователя и собирать его информацию идентификационных данных в a Subject. Вы тогда изучили, как использовать Subject выполнять действие как аутентифицируемого пользователя.

Следующие Шаги

  1. Продолжите к Упражнению 2, чтобы изучить, как сконфигурировать пример приложения, чтобы использовать Kerberos для аутентификации.


Упражнение 2: Конфигурирование JAAS для Аутентификации Kerberos

Цель этого осуществления:

Цель этого осуществления состоит в том, чтобы изучить, как сконфигурировать приложение JAAS, чтобы использовать Kerberos для аутентификации.

Фон Kerberos для этого осуществления:

Kerberos является интернет-протоколом стандарта для аутентификации доверенной третьей стороны, определенной в RFC 4120. Это доступно на большинстве современных вычислительных платформ сегодня, включая Солярис, Windows XP, и Linux.

Архитектура Kerberos центрируется вокруг доверяемой службы аутентификации, названной центром распределения ключей, или KDC. Пользователи и службы в среде Kerberos упоминаются как принципалы; каждый принципал совместно использует секрет (такой как пароль) с KDC. Принципал  аутентифицирует к Kerberos, доказывая KDC, что это знает совместно используемый секрет. Если аутентификация успешна, KDC выпускает билет выдачи билетов (TGT) к принципалу. Когда принципал впоследствии хочет аутентифицировать к службе на сеть, такую как служба каталогов или файловая служба, (таким образом, действуя как "клиент" службы), это дает TGT KDC, чтобы получить билет службы, чтобы связаться со службой. Мало того, что билет службы указывает на идентификационные данные клиента и принципалов службы, он также содержит сеансовый ключ, который может использоваться клиентом и службой, чтобы впоследствии установить безопасную передачу. Чтобы аутентифицировать к службе, клиент отправляет билет службы службе. Когда служба получает билет, она декодирует это использующий секрет, который она совместно использует с KDC.

В этой архитектуре принципал только аутентифицирует непосредственно (однажды) к KDC. Это аутентифицирует косвенно ко всем другим службам через использование билетов службы. Билеты службы - то, как KDC ручается за идентификационные данные принципала. Возможность принципала получить доступ к многократным безопасным службам, выполняя явную аутентификацию только однажды вызывают единственным входом в систему.


Фон JAAS для этого осуществления:

В JAAS, для клиентского принципала, "регистрирующего в Kerberos", означает получать TGT и помещать это в Subject, так, чтобы это могло использоваться для аутентификации со службами, к которым получит доступ клиент. Для принципала службы, "регистрирующего в Kerberos", означает получать секретные ключи, что служба должна декодировать входящие запросы аутентификации клиента.

Ресурсы для этого осуществления:

  1. JAAS Руководство разработчика LoginModule
  2. Служба Аутентификации Сети Kerberos (v5)
  3. Конфигурации Входа в систему в качестве примера
  4. Пакет модуля входа в систему javadocs: com.sun.security.auth.module
  5. JAAS и Учебные руководства GSS-API Java

Шаги, чтобы следовать:

  1. Исследуйте конфигурационный файл JAAS. Это располагается в src/jaas-krb5.conf

Этот файл содержит две записи, один названный "клиентом" и один названный "сервером".  "Клиентская" запись указывает что LoginContext должен использовать com.sun.security.auth.module.Krb5LoginModule. Запись "сервера" указывает, что LoginContext должен использовать тот же самый модуль входа в систему, и ключи использования от sample.keytab файл для принципала host/machineName.


Листинг кода для jaas-krb5.conf.


  1. client {
  2.   com.sun.security.auth.module.Krb5LoginModule required
  3.     principal="test";
  4. };
  5. server {
  6.   com.sun.security.auth.module.Krb5LoginModule required
  7.     useKeyTab=true
  8.     storeKey=true
  9.     keyTab=sample.keytab
  10.     principal="host/machineName";
  11. };



  1. Определите имя хоста своей машины, выполняя команду имени хоста.
% имя хоста
  1. Отредактируйте этот файл и измените запись для принципала сервера, чтобы использовать имя Вашей машины. Например, если Ваше машинное имя является j1hol-001, эта строка в конфигурационном файле должна быть похожей на это.
принципал = "host/j1hol-001"
  1. Выполните аутентификацию клиента, вводя 
% java -Djava.security.auth.login.config=jaas-krb5.conf \
   Клиент Jaas

Вы будете запрошены пароль. Введите "changeit". Следует видеть следующий вывод.

Вывод для того, чтобы выполнить пример JAAS, используя клиентскую запись от jaas-krb5.conf:


  1. Kerberos password for test: changeit
  2. Authenticated principal: [test@J1LABS.EXAMPLE.COM]
  3. Performing secure action...


  1. Выполните аутентификацию сервера, вводя 
% java -Djava.security.auth.login.config=jaas-krb5.conf \
   Сервер Jaas

Следует видеть следующий вывод.

Вывод для того, чтобы выполнить пример JAAS, используя запись "сервера" от jaas-krb5.conf.


  1. Authenticated principal: [host/j1hol-001@J1LABS.EXAMPLE.COM]
  2. Performing secure action...



Сводка:

В этом осуществлении Вы изучили, как сконфигурировать приложение JAAS, чтобы использовать модуль входа в систему Kerberos, и как клиентский принципал, кто вводит его/ее имя пользователя/пароль в интерактивном режиме, и как сервис принципал, кто получает его ключи от keytab файла.



Следующие Шаги

  1. Продолжите к Второй части, чтобы изучить, как установить безопасные каналы связи, используя API безопасности Java.


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