Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
Предыдущее Учебное руководство Учебное Введение и TOC Следующее Учебное руководство

Использование Утилиты Входа в систему JAAS



Предыдущие два учебных руководства, Аутентификация JAAS и Авторизация JAAS, показывают, как можно использовать LoginContext и Подчиненные классы записи программа к

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

Использование утилиты Login с примером приложения демонстрируется в этом учебном руководстве. Следующее учебное руководство, клиент-серверное приложение, используя GSS-API Java, также использует утилиту Login.

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

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

Если Вы хотите сначала видеть учебный код в действии, можно пропустить непосредственно к Выполнению Примера программы с Утилитой Входа в систему и затем вернуться к другим разделам, чтобы учиться больше.

Что Вы Должны Знать Об Утилите Входа в систему

Вы не должны понять код, содержавшийся в Login.java; можно только использовать это как есть. Однако, Вы должны понять некоторые факты о том, что это делает так, чтобы Ваша программа, файл политики, и конфигурационный файл входа в систему должным образом работали с этим. Ниже сводка этих фактов, сопровождаемых разделами с дополнительной информацией и примерами.

Класс Входа в систему делает следующее:

Приложение и Другие Требования Файла

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

Основные эксплуатационные характеристики

Чтобы использовать утилиту Login, Ваш код программы не нуждается в ничем специальном. Все, в чем Вы нуждаетесь, для точки входа Вашего приложения, чтобы быть main метод класса Вы пишете, как обычно.

Способом вызвать Вход в систему так, что, это будет аутентифицировать пользователя и затем инстанцировать MyAction, чтобы вызвать Ваше приложение, является следующее:

java <options> Login <AppName> <app arguments> 
где <AppName> является высокоуровневым именем класса Вашего приложения и <параметрами приложения> являются любые параметры, требуемые Вашим приложением. См. Выполнение Примера программы с Утилитой Входа в систему для полной команды, используемой для этого учебного руководства.

Требования Конфигурационного файла входа в систему

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

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

Требования Файла политики

Всякий раз, когда Вы запускаете приложение с менеджером безопасности, Вы нуждаетесь в политике, указывающей на полномочия, предоставленные определенному коду, или определенному коду, выполняемому определенным пользователем (или пользователями). Один способ определить политику grant операторы в файле политики. См. Файл Политики для получения дополнительной информации.

Если Вы будете использовать утилиту Login, чтобы вызвать Ваше приложение, то Вы должны будете предоставить этому различные полномочия, как описано в Полномочиях, Необходимых Классами Входа в систему и MyAction.

Программа Примера приложения

Приложение Sample.java, используемое для этого учебного руководства, выполняет те же самые действия как SampleAction.java приложение сделало в предыдущем (Авторизация JAAS) учебное руководство. Это делает следующее:

Вот код:

import java.io.File;

public class Sample {

  public static void main (String[] args) throws SecurityException {

    // If there were any arguments to read, we'd do it here.

    System.out.println("\nYour java.home property value is: "
                +System.getProperty("java.home"));

    System.out.println("\nYour user.home property value is: "
                +System.getProperty("user.home"));

    File f = new File("foo.txt");
    System.out.print("\nfoo.txt does ");
    if (!f.exists())
        System.out.print("not ");
    System.out.println("exist in the current working directory.");
  }
}

Конфигурационный файл Входа в систему

Конфигурационный файл входа в систему sample.conf для этого учебного руководства содержит единственную запись, точно так же как конфигурационный файл входа в систему для предыдущего (Авторизация JAAS) учебное руководство. Содержание записи является тем же самым, так как класс, реализовывая требуемую технологию аутентификации в обоих случаях является Krb5LoginModule в com.sun.security.auth.module пакет.

Единственной разницей является имя, используемое для записи. В предыдущем учебном руководстве мы использовали имя "JaasSample", так как это - имя, используемое классом JaasAzn, чтобы искать запись. Когда Вы будете использовать утилиту Login со своим приложением, она ожидает, что имя для Вашей записи конфигурационного файла входа в систему будет тем же самым как именем Вашего высокоуровневого класса приложений. Тот класс приложений для этого учебного руководства называют "Демонстрационным" так, чтобы также было имя записи конфигурационного файла входа в систему. Таким образом конфигурационный файл входа в систему похож на следующее:

Sample {
   com.sun.security.auth.module.Krb5LoginModule required;
};

"Необходимое" указывает, что вход в систему, используя Krb5LoginModule обязан "успешно выполняться" для аутентификации, которую будут считать успешным. Krb5LoginModule успешно выполняется, только если имя и пароль, предоставленное пользователем, успешно используется, чтобы зарегистрировать пользователя в Kerberos KDC.

Для получения информации обо всех возможных вариантах, которые можно передать к Krb5LoginModule, см. документацию Krb5LoginModule.

Файл Политики

Вход в систему, MyAction, и Демонстрационные классы, все выполняют некоторые секретные операции безопасности и таким образом соответствующие полномочия, требуются в файле политики для операций быть выполненными.

Полномочия, Необходимые Классами Входа в систему и MyAction

Для этого учебного руководства Вы создадите a Login.jar Файл JAR, содержащий Login.class и MyAction.class файлы. Вы должны предоставить Login.jar различные полномочия, определенно те требуемые для того, чтобы вызвать чувствительные к безопасности методы Login.jar вызов классов, так же как все полномочия требуется Вашим приложением. Иначе, проверки управления доступом перестанут работать.

Самая простая вещь сделать, и что мы рекомендуем, состоит в том, чтобы предоставить Login.jar AllPermission. Для этого учебного руководства, Login.jar файл, как предполагается, находится в текущем каталоге, и файл политики включает следующее:

grant codebase "file:./Login.jar" {
   permission java.security.AllPermission;
};

Полномочия, Необходимые Выборкой

(Отметьте: Этот раздел является по существу измененной копией Полномочий, Необходимых разделом SampleAction от предыдущего (Авторизация JAAS) учебное руководство, так как Выборка и SampleAction выполняют те же самые операции и таким образом требуют тех же самых полномочий.)

Sample код делает три операции, для которых требуются полномочия. Это

Полномочия, требуемые для этих операций, являются следующим:

permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "user.home", "read";
permission java.io.FilePermission "foo.txt", "read";

Мы должны предоставить эти полномочия коду в Sample.class, который мы поместим в названный файл JAR Sample.jar. Однако, наш grant оператор предоставит полномочия не только к коду, но и определенному аутентифицируемому пользователю, выполняющему код. Это иллюстрирует, как можно использовать Основное обозначение в a grant оператор, чтобы ограничить выполнение секретных операций безопасности в коде определенному пользователю вместо того, чтобы позволить полномочия всем пользователям, выполняющим код.

Таким образом, как объяснено в том, Как Вы Делаете Основанные на принципале Операторы Файла Политики?, наш grant оператор похож на следующее:

grant codebase "file:./Sample.jar",
    Principal javax.security.auth.kerberos.KerberosPrincipal 
        "your_user_name@your_realm"  {

   permission java.util.PropertyPermission "java.home", "read";
   permission java.util.PropertyPermission "user.home", "read";
   permission java.io.FilePermission "foo.txt", "read";
};
Важный: следует заменить своим именем пользователя Kerberos (полный с и область) для"your_user_name@your_realm". Например, если бы Ваше имя пользователя является "mjones", и Ваша область "KRBNT-OPERATIONS.ABC.COM", Вы использовали бы "mjones@KRBNT-OPERATIONS.ABC.COM" (полный с кавычками).

Полный Файл Политики

Полный файл политики является sample.policy.

Выполнение Примера программы с Утилитой Входа в систему

Чтобы выполнить Пример приложения с утилитой Login, сделайте следующее:

  1. Поместите следующие файлы в каталог:
  2. Замена "your_user_name@your_realm" в sample.policy с Вашим именем пользователя и областью.
  3. Скомпилировать Login.java и Sample.java:
    javac Login.java Sample.java
    

    Отметьте это Login.java содержит два класса и таким образом компиляцию Login.java создает Login.class и MyAction.class.

  4. Создайте названный файл JAR Login.jar содержа Login.class and MyAction.class:
    jar -cvf Login.jar Login.class MyAction.class
    
  5. Создайте названный файл JAR Sample.jar содержа Sample.class:
    jar -cvf Sample.jar Sample.class
    
  6. Выполнитесь Login класс, определяя

    Вы передаете имя своего приложения (в этом случае, "Выборка") как параметр Входу в систему. Вы тогда добавили бы как параметры, любые параметры, требуемые Вашим приложением, но в нашей Выборке случая, не требуют никого.

    Ниже полные команды, чтобы использовать и для Microsoft Windows и для систем Unix. Единственная разница - то, что на системах Windows Вы используете точки с запятой, чтобы разделить элементы пути к классу, в то время как Вы используете двоеточия с этой целью на системах Unix. Убедитесь, что заменили <your_realm> с Вашей областью Kerberos, и <your_kdc> с Вашим Kerberos KDC.

    Вот полная команда для систем Windows:

    java -classpath Login.jar;Sample.jar 
     -Djava.security.manager 
     -Djava.security.krb5.realm=<your_realm> 
     -Djava.security.krb5.kdc=<your_kdc> 
     -Djava.security.policy=sample.policy 
     -Djava.security.auth.login.config=sample.conf Login Sample
    

    Вот полная команда для систем UNIX:

    java -classpath Login.jar:Sample.jar 
     -Djava.security.manager 
     -Djava.security.krb5.realm=<your_realm> 
     -Djava.security.krb5.kdc=<your_kdc> 
     -Djava.security.policy=sample.policy 
     -Djava.security.auth.login.config=sample.conf Login Sample
    

    Введите полную команду на одной строке. Многократные строки используются здесь для четкости. Если команда является слишком длинной для Вашей системы, Вы, возможно, должны поместить это в.bat файл (для Windows) или.sh файл (для UNIX) и затем петлять, чтобы выполнить команду.

    Вы будете запрошены Ваше имя пользователя Kerberos и пароль, и базовый модуль входа в систему Kerberos, определенный в конфигурационном файле входа в систему, зарегистрирует Вас в Kerberos. Как только аутентификация успешно завершается, Sample код будет выполняться от имени Вас, пользователя. sample.policy файл политики предоставляет Вам необходимые полномочия, таким образом, Вы будете видеть дисплей значений Вашего java.home и user.home системные свойства и оператор относительно того, назвали ли Вам файл foo.txt в текущем каталоге.

    Для предложений поиска и устранения неисправностей входа в систему см. Поиск и устранение неисправностей.



Предыдущее Учебное руководство Учебное Введение и TOC Следующее Учебное руководство

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