Доступность ресурсов
Авторизация пользователя
Одной из основных задач администрирования является задача ограничения доступа пользователям к ресурсам предоставляемым WEB-сервером. В случае реализации "Капитал CSE" решение данной задачи базируется на подсистеме администрирования "Капитал CSE".
С точки зрения решаемой задачи все ресурсы WEB-сервера можно разделить на классы видимости:
Класс видимости | Правила размещения ресурсов |
---|---|
общедоступные | В любом случае запрос на данный ресурс не приведет к авторизации пользователя. |
доступные всем зарегистрированным пользователям | Попытка обратиться к данному ресурсу неавторизированного пользователя приводит к процессу авторизации. См. Авторизация пользователя. |
доступные конкретным пользователям | Ресурс помещается в определенную зону. Некоторому пользователю выдается право на выполнение в данной зоне. Попытка обратиться к данному ресурсу неавторизированного пользователя приводит к процессу авторизации. См. Авторизация пользователя. |
http://<host>[port]/<servlet name>?command=reload
При обращении к ресурсу, который не является общедоступным происходит процесс авторизации. Он заключается в том, что перед обращением к целевому ресурсу, появляется форма авторизации, в которой как минимум, необходимо выяснить login пользователя и его пароль. Данная форма должна присутствовать в ресурсе с зарезервированным именем "authorization". Ресурс "authorization" должен быть общедоступным. Кроме того, необходимо написать Обработчик формы ресурса авторизации. Рассмотрим пример такого обработчика:
import java.util.*;
import java.io.*;
import ServiceClass.GFormHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ServiceClass.GResourceLocator;
public class authorizationhandlerHandler extends GFormHandler
{
public void submit( HttpServletRequest request, HttpServletResponse response,
GResourceLocator locator) throws java.lang.Exception
{
String login = request.getParameter("LOGIN");
String password = request.getParameter("PASSWORD");
request.getSession().setAttribute("login", login);
request.getSession().setAttribute("password", password);
String redirect = (String)request.getSession().getAttribute("redirect");
if(redirect != null)
response.sendRedirect(redirect);
}
}
Из аргумента request, в котором располагаются параметры HTTP-запроса,
получаем два параметра с именами "LOGIN" и "PASSWORD".
Они соответствуют одноименным полям ввода формы authorization. После этого,
необходимо установить атрибуты сессии с зарезервированными именами
"login" и "password"(Внимание, имена атрибутов
зависят от регистра). Если указанные атрибуты не будут установлены
процесс авторизации не будет выполнен. После этого,
можно получить из сессии атрибут с зарезервированным именем "redirect".
В нем располагается URL запрашиваемого ресурса. Он нужен для перенаправления
запроса пользователя. При повторном обращении к ресурсу с помощью
response.sendRedirect(redirect) проверяется возможность данного пользователя
получать данный ресурс. Если доступ разрешен, то ресурс выдается пользователю,
иначе повторно выдается окно авторизации.
http://<server>[:port]/GWAS/<app>?authorization=<command> command = html | wsdl | hform | hsoapОписание команд: