Во многих веб-приложениях существует потребность в ограничении доступа к тем или иным ресурсам. Процесс проверки пользователей часто называют «авторизация» или «аутентификация». В ряде случаев эти понятия путают или используют как взаимозаменяемые, что строго говоря является ошибкой.
Если говорить упрощенно, то аутентификация это процесс проверки соответствия логина и пароля для пользователя в системе. Иными словами, система определяет присутствует ли в её справочнике такой пользователь.
Авторизация, в свою очередь, является процессом проверки и предоставления прав определенному пользователю. Если говорить точнее, то это даже не права, а определение ролей пользователя. А вот права на выполнение каких-либо действий присутствуют у роли.
Как это можно организовать в сервлете для Tomcat6?
Самый простой способ — использовать набор пользователей из файла tomcat-users.xml в убунте он обычно лежит по адресу:
/etc/tomcat6/tomcat-users.xml
Это простой XML-файл в который нужно добавить запись с новым пользователем:
<user username="lazy" password="123" roles="manager" />
В данном случае мы добавили в систему пользователя lazy с паролем 123 и назначили его manager.
Для того, чтобы изменения вступили в силу нужно перезагрузить Tomcat6.
Далее, в файл web.xml нашего веб-приложения нужно добавить следующие записи:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>default</realm-name>
</login-config>
В этом случае будет использоваться базовая авторизация.
Еще в web.xml должны оказаться следующие строки:
<security-role>
<role-name>
manager
</role-name>
</security-role>
ими мы указываем, что доступ к ресурсу будет только у пользователей с ролью manager.
Ну и дополнительно нужно указать накладываемые ограничения:
<security-constraint>
<web-resource-collection>
<web-resource-name>Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
В результате к приложению смогут получить доступ только пользователи с ролью manager.
Говорят, на «боевых» серверах такие способы использовать не очень надежно. Впрочем, этот паттерн можно использовать при подключении других источников данных с пользовательской информацией.
Ссылки
Как сделать Realm в Tomcat6