четверг, 3 июня 2010 г.

Сквозная аутенфикация при помощи JA-SIG CAS. Часть первая - сборка

Небольшое руководство по внедрению в инфраструктуру информационной среды предприятия сервера кроссдоменной сквозной аутенфикации на базе JA-SIG CAS.
В моем конкретном случае, решение данной задачи заняло несколько больше времени, чем я расчитывал. Буду рад, если данная статья поможет более четко представить объем необходимых работ, а возможно сэкономит несколько часов поиска в интернет разрозненной информации по этапам настройки CAS сервера.

Для простоты, я бы выделил следующие основные подзадачи:
  1. Сборка сервиса JA-SIG CAS и тестирование на работоспособность;
  2. Реализация требуемого обработчика аутенфикации JA-SIG CAS;
  3. Настройка Tomcat 6 и развертывание CAS web-приложения;
  4. Реализация клиента для конечного сервиса;
  5. Добавление плюшек и бантиков.
Каждый пункт думаю раскрыть в отдельной статье. Данная статья, в частности, посвящена первому этапу, а именно - подготовке среды для создания собственного сервера CAS.

JA-SIG CAS Server реализован на языке java и в качестве инфраструктуры сборки использует Maven2. Так что, знания данных инструментов вам будет необходимо в ходе работы.

Прежде всего необходимо скачать дистрибуцию самого cas севрера. Сделать это можно с официального сайта. На момент написания статьи на странице скачивания последняя доступная версия CAS сервера имела номер 3.4.2. Распространяется как обычный zip или tar.gz архив.
После распаковки архива, вы должны получить директорию cas-server-3.4.2, которая является корнем maven2 проекта. Данный проект состоит из нескольких модулей. Наше внимание в основном будет сосредоточено на модуле cas-server-webapp.

Я бы настоятельно рекомендовал импортировать корневую директорию в качестве проекта вашей любимой IDE. Насколько мне известно, все они успешно работают с проектами maven2. Так же не лишним будет натянуть страховочную сеть в виде системы контроля версий, особенно если вы любите экспериментировать.
В зависимостях проекта прописаны 2 дополнительных maven репозитория, а именно JA-SIG Maven Repository(http://developer.ja-sig.org/maven2) и JBoss Repository(http://repository.jboss.com/maven2). Так что, если вы используете внутренний кэширующий maven репозиторий, не забудьте добавить данные репозитории в списки индексируемых. Мой выбор в данном плане sonatype nexus. Именно на этом шаге меня подвела моя забывчивость - в случае с nexus недостаточно просто добавить репозитории, их надо прописать как публично доступные. На выяснение причин, по которым сборка не может выгрузить зависимости я потратил около часа. Так что, будьте осторожны.

Архив дистрибуции уже идет с собранными модулями, поэтому не вижу особой необходимости делать пересборку проекта с корня. Предлагаю обратить внимание непосредственно на cas-server-webapp. Для того, чтобы убедиться что проект может быть собран, необходимо перейти в директорию cas-server-3.4.2/cas-server-webapp и набрать в консоли mvn package. Еще лучше провести данную операцию из любимой IDE. Если сборка прошла успешно, значит проблемы с видимостью maven репозиториев и наличия зависимостей на них нас миновали.

Следующим шагом является непосредственное тестирование веб-приложения cas. Для простоты тестирования веб-приложений могу рекомендовать использовать maven-jetty-plugin. Легковесный web-контейнер разворачивается в считанные секунды и идеально подходит для вопросов тестирования. Для подключения плагина необходимо отредактировать cas-server-3.4.2/cas-server-webapp/pom.xml в секции build. В моем случае секция biuld выглядела следующим образом:





org.mortbay.jetty
maven-jetty-plugin
6.1.24

10



org.apache.maven.plugins
maven-war-plugin

cas







При подключении данного плагина появляются цели jetty:run и jetty:stop. Соответсвенно первая запускает легковесный контейнер jetty на локальной машине на порту 8080. Для тестового запуска достаточно выполнить цель jetty:run. После старта сервера можно открыть в браузере http://localhost:8080/cas/. Вы должны увидеть форму аутенфикации. Для демонстрационных целей в поставке реализован простой обработчик аутенфикации, допускающий пользователей, у которых login совпадает с password. Введя в форму аутенфикации, например, test/test вы должны увидеть сообщение об успешной аутенфикации. На ввод test/123456 система должна ответить об ошибочной попытке аутенфикации.
Формально, если вы добрались до данного момента и у вас все работает, то вы можете вызвать цель package модуля cas-server-webapp и в директории cas-server-3.4.2/cas-server-webapp/target получить файл cas.war, который и будет нашим экземпляром cas-server-а.
В следующей статье собираюсь остановиться на вопросе реализации обработчика аутенфикации.

Комментариев нет: