Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Герц Д.М. -> "Java Server Pages. Библиотека профессионала" -> 84

Java Server Pages. Библиотека профессионала - Герц Д.М.

Герц Д.М. Java Server Pages. Библиотека профессионала — М.: Вильяме, 2002. — 448 c.
ISBN 5-8459-0290-8
Скачать (прямая ссылка): javaserverpages2002.pdf
Предыдущая << 1 .. 78 79 80 81 82 83 < 84 > 85 86 87 88 89 90 .. 147 >> Следующая


password.equals("resin") ss

user != null 5b user.equals("resin" ) ;

if(valid) return new BasicPrincipal(user); else return null;

1

public boolean isUserlnRole(Principal user, String role) ( return user.getName().equals("resin") && role.equals("resin-user");

)

t

Аутентификатор, приведенный в листинге 9,3,в, представляет собой подкласс класса AbstractAuthenticator; в нем переопределены методы authenticate и isUserlnRole. Оба этих метода объявлены в интерфейсе Authenticates, а их реализация в классе AbstractAuthenticator используется по умолчанию.

Если пользовательское имя и пароль распознаны, метод authenticate возвращает экземпляр класса BasicPrincipal, в противном случае возвращается значение null. Класс BasicPrincipal содержится в пакете com.caucho. server, http.

Сервер Tomcat4.0

В сервере Tomcat 4.0 используется область аутентификации (realm), которая действует по тому же принципу, что и аутентификатор Resin. В отличие от Resin, для сервера Tomcat не включаются специальные дескрипторы в файл /WEB-INF/web.xml, вместо этого область аутентификации задается в файле $TOMCAT_HOME/conf /server. xml.

<\— Фрагмент файла $TOMCAT_HOME/conf/server.кт1. —>

<!-- Пример конфигурационного файла. — >

<!— Заметьте, что компоненты вложени и между ними существует отношение "родительский/дочерний" —>

«Server port = "8005" shutdown="SHUTDOWN" debug="0">

<!— Поскольку класс представляет объект аутентификации, его экземпляр должен быть разделяемым <Realm className="org. apache. catalina. realm. MemoryRealm" />

— >

<ReaIm className="CuatomRealm"/>

</Server>
250 Глава 9. Защита

В составе элемента Server задана область аутентификации по умолчанию org.apache . catalina. realm.MemoryRealm, которая совместно используется всеми контекстами. (При необходимости область аутентификации Tomcat может быть определена для отдельного приложения.) Для того чтобы заменить область по умолчанию, надо закомментировать дескриптор, с помощью которого задается org. apache, catalina. realm. Memo г у Re aim, и включить требуемую область аутентификации. Пример замены области показан в листинге, приведенном выше.

Области аутентификации, определяемые разработчиком, обычно создаются как подклассы абстрактного класса RealmBase, который реализует интерфейс Realm, В классе RealmBase объявлены три абстрактных, метода, которые должны быть реализованы в подклассах. Эти методы перечислены в табл. 9.4.

Таблица 9.4. Абстрактные методы класса RealmBase
Метод Назначение
boolean hasRole (Principal Возвращает значение true, если роль соответ-
principal, String role) ствует принципалу
String getPassword {String Возвращает пароль, связанный с пользователем
user)
Principal Возвращает объект Principal, связанный с
getPrincipal {String user) пользователем

Код класса CustomRealm, на который ссылается файл server. xml {фрагмент этого файла был приведен выше), представлен в листинге 9.4.

Листинг 9.4, Область аутентификации, определенная разработчиком

import Java.security.Principal;

import org. apache .catalina. realm.RealmBase, -

public class CustomRealm extends RealmBase {

public boolean hasRole{Principal principal, String role) ( String name = principal .getName ( } ;

if[name.equals("tomcat"))

return role.equals("tomcat");

if(name.equals("rolel"))

return role.equals("rolel");

if[name.equals{"both"))

return role . equals ("tomcat" ) |[ role.equals("rolel" );

return false;

}

protected String getPassword (String username) ( return"tomcat";

}

protected Principal getPrincipal [String username) (
Элементы защиты Web-приложений 251

return new CustomPrincipal(username) ;

)

class CustomPrincipal implements Principal {

private final String name;

public CustomPrincipal (String name} { this.name = name;

)

public String getNameO { return name;

}

public String toString[) (

return getName();

}

I

}

Область аутентификации, приведенная в листинге 9.4, разработана в соответствии с данными, представленными в файле $T0MCAT_HOME/conf /tomcat-users .xrnl, который рассматривался ранее в этой главе. Например, метод hasRole возвращает true, если принципал и роль соответствуют данным, определенным в файле tomcat-users.xml. Метод getPrincipal возвращает экземпляр класса CustomPrincipal, который реализует интерфейс Java, security. Principal.

Области аутентификации, определенные разработчиком, должны быть доступны серверу Tomcat во время его запуска, т.е. соответствующие классы должны содержаться BjAR-файлс, расположенном в каталоге $ТОМСАТ_НОМЕ^єгуєг. Для того чтобы рассматриваемый пример работал, надо скомпилировать файл CustoraRealm. Java, а созданные в результате два файла классов скопировать в каталог $TOMCAT_HOME/server.

Заметьте, что код, рассматриваемый в данном разделе, создан для бета-версии сервера Tomcat 4.0, поэтому к тому моменту, когда вы будете читать данную книгу, сервер может претерпеть некоторые изменения, и, возможно, вам придется модифицировать код примера.
Предыдущая << 1 .. 78 79 80 81 82 83 < 84 > 85 86 87 88 89 90 .. 147 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.