Доступность ресурсов
Авторизация пользователя

Одной из основных задач администрирования является задача ограничения доступа пользователям к ресурсам предоставляемым WEB-сервером. В случае реализации "Капитал CSE" решение данной задачи базируется на подсистеме администрирования "Капитал CSE".

Доступность ресурсов

С точки зрения решаемой задачи все ресурсы WEB-сервера можно разделить на классы видимости:

Любой ресурс Gelios, вне зависимости от класса видимости, буден "виден" извне только в том случае, если он связан c зоной. Для такого связывания необходимо: Необходимо выдать право на выполнение ресурса в определенной зоне. При этом необходимо учитывать, следующие правила.
Класс видимости Правила размещения ресурсов
общедоступные
  • Капитал CSE: ресурс должен быть помещен в специальную зону с зарезервированным именем Anonymous.
  • Фаловая реализация: в тэге Association зона не указывается.
    В любом случае запрос на данный ресурс не приведет к авторизации пользователя.
  • доступные всем зарегистрированным пользователям
  • Капитал CSE: Ресурс помещается в определенную зону. Пользователю EVERYONE выдается право на выполнение в данной зоне.
  • Фаловая реализация: значение параметра area тэга Association равна зоне на которую дан доступ пользователям "!" и "%"(см. Установка и конфигурирование)
    Попытка обратиться к данному ресурсу неавторизированного пользователя приводит к процессу авторизации. См. Авторизация пользователя.
  • доступные конкретным пользователям Ресурс помещается в определенную зону. Некоторому пользователю выдается право на выполнение в данной зоне. Попытка обратиться к данному ресурсу неавторизированного пользователя приводит к процессу авторизации. См. Авторизация пользователя.
    Изменение доступности ресурса или добавление нового пользователя не сразу вступает в силу. Чтобы обновить информацию о ресурсах, пользователях и т.д. необходимо, или перезапустить Gelios, или выполнить из Browser'а команду
    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
    
    Описание команд:
    html - получение стандартной формы авторизации
    wsdl - в теле HTTP ответа будет содержаться документ WSDL с описанием метода авторизации для веб-сервисов
    hform - стандартный обработчик авторизации из HTML формы. В HTTP запросе должны содержаться параметры login и password
    hsoap - веб-сервис авторизации. В теле запроса должен содержаться SOAP пакет с вызовом метода авторизации.