Основные характеристики
Поддержка нескольких протоколов, включая CAS (v1, v2, v3), SAML (v1, v2), OAuth, OpenID, OpenID Connect и WS-Federation Passive Requestor
Множественные механизмы аутентификации, которые могут быть аутентифицированы через JAAS, LDAP, RDBMS, X.509, Radius, SPNEGO, JWT, Remote, Trusted, BASIC, Apache Shiro, MongoDB, Pac4J и т. Д.
Введение
Полное название CAS — Central Authentication Service, которая представляет собой многоязычное корпоративное решение для единого входа, которое стремится стать комплексной платформой для проверки личности и требований авторизации.
CAS — это проект с открытым исходным кодом на уровне предприятия, инициированный Йельским университетом, целью которого является предоставление надежного решения единой регистрации (принадлежащего Web SSO) для систем веб-приложений.
В соглашении CAS участвуют как минимум три стороны:
Клиентский веб-браузер
Ресурсы приложений, веб-приложения, запрашивающие аутентификацию
Сервер CAS, например Saifu IDaaS
Описание интерфейсов, связанных с сервером CAS.
Ниже приводится описание интерфейса службы CAS в Saifu IDaaS, который полностью соответствует стандарту протокола CAS.
Процесс единого входа в систему cas в основном включает следующие этапы:
1. Служба доступа. Клиент единого входа отправляет запрос на доступ к ресурсам службы, предоставляемым прикладной системой. ,
2. Направленная аутентификация: клиент SSO перенаправит запрос пользователя на сервер SSO.
3. Аутентификация пользователя: аутентификация пользователя.
4. Оформить билеты: сервер единого входа сгенерирует случайный билет на обслуживание.
5. Билет для подтверждения: сервер единого входа проверяет действительность билета на обслуживание. После проверки клиент получает доступ к услуге.
6. Передача информации о пользователе. После того, как сервер единого входа подтвердит, что билет прошел, он передает информацию о результате аутентификации пользователя клиенту.
Экспортируйте цифровой сертификат
keytool -export-alias caskeystore -keystore thekeystore -rfc-file cas.crtВведите предыдущий пароль хранилища ключей, а затем создайте определенный цифровой сертификат cas.crt в текущем каталоге.
1. Установка и зависимость CAS
Сервер использует стиль Военной накладки Maven (Gradle) для облегчения настройки и развертывания:
Эта команда будет клонировать cas-наложение-шаблон в cas-сервер каталог.
Некоторые из аспектов, которые мы будем охватывать включают JSON регистрации услуг и JDBC подключения базы данных. Итак, мы добавим их модули в зависимостей раздел build.gradle файл:
Давайте обязательно проверим последнюю версию casServer .
2. Конфигурация сервера CAS
Прежде чем мы сможем начать сервер CAS, нам нужно добавить некоторые основные конфигурации. Начнем с создания cas-сервер/src/main/resources папку и в этой папке. За этим последует создание application.properts в папке тоже:
Давайте приступить к созданию файла ключ-магазина, на который ссылаются в конфигурации выше. Во-первых, нам нужно создать папки /etc/cas и /etc/cas/config в cas-сервер/src/main/resources .
Затем нам нужно изменить каталог на cas-сервер/src/main/resources/etc/cas и запустить команду для генерации thekeystore :
Для того, чтобы у нас не было ошибки рукопожатия SSL, мы должны использовать localhost как значение первой и фамилии. Мы должны использовать то же самое для названия организации и подразделения, а также. Кроме того, мы должны импортировать thekeystore в JDK/JRE мы будем использовать для запуска нашего клиент-приложения:
3. Конфигурация пользователя сервера CAS
Мы пока не можем войти в систему, так как не настроили пользователя. CAS имеет различные методы управление , включая автономный режим. Давайте создадим папку для cas-сервер/src/main/resources/etc/cas/config в котором мы создадим файл свойств cas.properties . Теперь мы можем определить статического пользователя в файле свойств:
Мы должны сообщить о местонахождении папки config серверу CAS для вхождения настроек в силу. Давайте обновим tasks.gradle так что мы можем передать местоположение в качестве аргумента JVM из командной строки:
Затем мы сохранить файл и запустить:
Импортируйте цифровой сертификат в jre под jdk
windows:
keytool -import-alias caskeystore -keystore%JAVA_HOME%jrelibsecuritycacerts -file cas.crt -trustcacerts-storepass changeitUnix:
sudo keytool -import-alias caskeystore -keystore$JAVA_HOME/jre/lib/security/cacerts -file cas.crt -trustcacerts-storepass changeitСмена пароля по умолчанию требуется при импорте JDK, который был настроен в команде. Если пароль недоступен, возникла ошибка java.io.IOException: хранилище ключей или неверный пароль.
Настройка клиента CAS
Мы будем использовать Весенний инициализр для создания клиенто-приложения Spring Boot. Это будет Веб , Охрана , Фримаркер и ДевТулс Зависимости. Кроме того, мы также добавим зависимость для Весенняя безопасность CAS модуль к своему пом.xml :
Наконец, давайте добавим следующие свойства Spring Boot для настройки приложения:
Процесс проектирования
Предоставьте третьей стороне метод доступа с аутентификацией единого входа на основе протокола CAS. После успешной аутентификации она перейдет к приложению, предоставленному третьей стороной.
Процесс проектирования выглядит следующим образом:
Настройте DNS
Здесь мой сервер CAS развернут локально, поэтому мне нужно выполнить локальное сопоставление.
Моя система Mac OS, поэтому откройте файл / private / etc / hosts с правами администратора
sudo vim /private/etc/hostsДобавить адрес сопоставления:
127.0.0.1 sso.anumbrella.netЕсли это Windows, измените файл C: Windows System32 drivers etc hosts как администратор.
Регистрация серверов CAS
Заявки клиентов должны зарегистрироваться на сервере CAS до любого процесса проверки . Сервер CAS поддерживает использование клиентских реестров YAML, JSON, MongoDB и LDAP.
В этом учебнике мы будем использовать метод реестра услуг JSON. Давайте создадим еще одну папку cas-сервер/src/main/resources/etc/cas/services . Именно эта папка будет в реестре услуг JSON файлов.
Мы создадим файл JSON, содержащий определение нашего клиент-приложения. Название файла, casSecuredApp-8900.json, следует шаблону s erviceName-Id.json :
serviceId атрибут определяет шаблон URL-адреса regex для приложения клиента. Шаблон должен соответствовать URL-адресу приложения клиента.
id атрибут должен быть уникальным. Другими словами, не должно быть двух или более служб с одинаковыми id зарегистрирован на тот же сервер CAS. После дублирования id приведет к конфликтам и переопределению конфигураций.
1 Интерфейс аутентификации Jump
Описание интерфейса
Сторонний интерфейс аутентификации перенаправления, этот интерфейс будет определять, вошло ли приложение в систему, если вход напрямую перенаправляется на интерфейс, который получает билет (стороннее приложение для получения информации о приложении), если не вошел в систему, пользователь перенаправляется на интерфейс входа в систему для входа в систему Сертификация.
Вызов интерфейса
2 Получение информации об учетной записи третьей стороны
Функция интерфейса
Стороннее приложение получает информацию о разрешениях учетной записи стороннего приложения в соответствии с билетом. Если приложение было аутентифицировано, возвращается информация об учетной записи приложения, а если она не аутентифицирована, возвращается информация об ошибке аутентификации стороннего приложения.
Вызов интерфейса
3 Интерфейс единого выхода
Описание интерфейса
Сторонний интерфейс единого входа и выхода из системы, который выдает информацию о сеансе приложения на сервере cas и перенаправляет на страницу, где браузер вводит адрес в первый раз.
Вызов интерфейса
Cas Клиент Единый знак-на конфигурации
Следующим шагом для нас является настройка Spring Security для работы с сервером CAS. Мы также должны проверить полный поток взаимодействий , называется cas последовательности.
Давайте добавим следующие конфигурации фасоли в CasSecuredПрименение класс нашего приложения Весенняя загрузка:
СервисПредложение фасоль имеет тот же URL, что и serviceId в casSecuredApp-8900.json . Это важно, поскольку идентифицирует этого клиента на сервере CAS.
отправитьРенью имущество СервисПредложение установлен на ложные . Это означает, что пользователю нужно представить учетные данные входа на сервер только один раз.
АутентификацияEntryPoint боб будет обрабатывать исключения проверки подлинности. Таким образом, он перенаправит пользователя на URL-адрес сервера CAS для проверки подлинности.
Таким образом, поток аутентификации идет:
Метод реализации интерфейса CAS приложения.
Если приложение не поддерживает протокол CAS, вам необходимо разработать и реализовать клиент CAS, обратившись к следующим функциям
Настройте Tomcat
Отредактируйте файл server.xml в разделе Conf в каталоге Tomcat.
Откройте файл конфигурации порта 8443 и настройте его следующим образом (добавьте адрес и ключ только что сгенерированного хранилища ключей):
1 Адрес перенаправления аутентификации
Функция интерфейса:
Когда браузер вводит адрес стороннего приложения, третье лицо должно содержать адрес стороннего приложения для получения билета и перенаправления в центр сертификации.
Интерфейс: предоставлен третьей стороной
Метод интерфейса: GET
Параметры запроса:
нет
Возвращаемые параметры:
нет
Пример вызова
2 Вернуться к интерфейсу тикета после аутентификации
Функция интерфейса:
Центр аутентификации успешно выдает билет и возвращает его стороннему приложению, а стороннее приложение получает информацию об учетной записи стороннего приложения на основе полученного билета. Затем войдите в стороннее приложение в соответствии с информацией о разрешениях.
Вызов интерфейса:
Интерфейс: предоставлен третьей стороной
Метод интерфейса: GET
Описание параметра запроса:
Описание длины обязательного параметра
Билет — это билет для приложения String в обмен на информацию о разрешениях приложения.
Возвращаемый параметр: нет
Пример вызова:
Соответствующее осуществление
Проект Saifu IDaaS git
Подключение сервера CAS к базе данных
Мы можем настроить сервер CAS для чтения учетных данных из базы данных MyS’L. Мы будем использовать тестовый база данных сервера MyS’L, которая работает в локальной машине. Давайте обновим cas-сервер/src/main/resources/etc/cas/config/cas.properts :
Cas clients
«CAS Client» имеет два разных значения в конкретном использовании, и клиент CAS является приложением, которое может быть включена поддерживаемым протоколом и связь Server. Клиент CAS также может быть интегрирован с различными программными платформами и приложениями.
Oauth 2.0
OAUTH — это стандарт открытого сетевого сетевого для авторизации (авторизации), который широко используется в мире, а текущая версия — версия 2.0.
В-третьих, измените конфигурацию
Мы знаем, что cas-overlay-template настраивается с использованием стратегии переопределения конфигурации, поэтому мы можем переопределять или наследовать определенные классы для переопределения определенных методов для достижения пользовательских требований.
Вы можете видеть, что этот файл является конфигурацией сервера аутентификации CAS, теперь мы хотим настроить, открыть наш проект, создать новыйsrc/main/resourcesПапка и скопируйте файл application.properties только сейчас в этот каталог.
Теперь мы можем настроить сервер CAS, настроив файл application.properties.
В дополнение к вышесказанному мы только что настроили сертификат в Tomcat, мы также можем напрямую сконфигурировать сертификат в служебную информацию CAS, открыть файл application.properties, в начале мы можем обнаружить, что информация о конфигурации выглядит следующим образом:
Мы изменили информацию следующим образом:
#SSL конфигурацияserver.ssl.enabled=true
server.ssl.key-store=file:/etc/cas/thekeystore
server.ssl.key-store-password=123456server.ssl.key-password=changeit
server.ssl.keyAlias=caskeystoreЗатем поместите хранилище ключей, сгенерированное выше, прямо в каталог компьютера / etc / cas / (здесь вам нужно указать свой собственный каталог).
Теперь мы можем использовать сертификат в / etc / cas / сразу после запуска проекта.
Кроме того, мы также можем поместить сертификат в пакет ресурсов, который можно использовать непосредственно каждый раз, когда он упакован.
server.ssl.key-store=classpath:thekeystoreнота:server.ssl.keyAliasЯвляется ли псевдоним для заполнения сгенерированного сертификата, не заполнен случайно, вы можете передатьkeytool -list -keystore thekeystoreКоманда для просмотра.
Конфигурация здесь использует Tomcat, который поставляется с CAS, поэтому нам нужно запустить его с помощью команды (отличается от предыдущего использования Tomcat, которое поставляется с компьютером).
Windows:
Запустите команду:
build.cmd runКоманда упаковки:
build.cmd packageUnix:
Запустите команду:
build.sh runКоманда упаковки:
build.sh packageКонечно, вы также можете использоватьjava -jar cas.war Запустите упакованный cas.war напрямую, чтобы запустить CAS.
Затем мы нашли конфигурацию аутентификации CAS в конце файла конфигурации. Именно здесь сконфигурированы имя пользователя и пароль CAS по умолчанию. Мы изменим это сейчас.
Метод аутентификации по умолчанию — статическая аутентификация файлов. Теперь мы переходим к методу аутентификации JDBC и добавляем соответствующие драйверы базы данных.
Автор здесь непосредственно использует интегрированную библиотеку драйверов, предоставляемую CAS. Это использование здесь не рекомендуется. Достаточно ввести конкретный связанный драйвер для конкретной используемой базы данных, поскольку введение интегрированных пакетов также вводит слишком много ненужных пакетов.
Теперь мы изменим конфигурацию application.properties и отметим статическую конфигурацию пользователя. Конкретные изменения следующие:
Единый вход в систему cas
Мы знаем, что единый вход может разрешить совместное использование распределенного сеанса для обеспечения будущей информации для входа
Но что такое CAS?
Подведите итог CAS самостоятельно:
CAS выполняет аутентификацию на стороне CAS-сервера с помощью сертификатов и других методов, и только после прохождения аутентификации вы можете получить доступ к веб-приложению.
Когда у нас есть несколько веб-приложений, требующих входа в систему, мы можем перехватывать все запросы входа в систему на CAS-сервере для единой аутентификации. Так же, как мы работаем в компании, у компании много офисных систем, но нельзя ли разрешать сотрудникам входить в систему каждый раз, когда они заходят в систему?
CAS — это проект с открытым исходным кодом, инициированный Йельским университетом, целью которого является обеспечение надежного метода единой регистрации для систем веб-приложений.CAS официально стал проектом JA-SIG в декабре 2004 года. CAS имеет следующие характеристики:
[1] Решение единого входа на уровне предприятия с открытым исходным кодом.
[2] CAS Server — это веб-приложение, которое требует независимого развертывания.
[3] Клиент CAS поддерживает большое количество клиентов (здесь речь идет о различных веб-приложениях в системе единого входа), включая Java, .Net, PHP, Perl, Apache, uPortal, Ruby и т. Д.
Со структурной точки зрения CAS состоит из двух частей: CAS Server и CAS Client. Сервер CAS необходимо развернуть независимо и в основном отвечает за проверку подлинности пользователя, а клиент CAS отвечает за обработку запросов на доступ к защищенным ресурсам клиента и перенаправляет их на сервер CAS, когда требуется вход в систему. На следующем рисунке приведен самый базовый процесс протокола CAS:
Изменить страницу входа
- Скопируйте свою собственную страницу входа в систему login.html в каталог WEB-INF view jsp default ui в системе cas, а затем скопируйте css js и другие папки в каталог cas. Переименуйте исходный файл casLoginView.jsp (на всякий случай сделайте резервную копию) и переименуйте файл login.html в casLoginView.jsp
- После переименования страницы входа в casLoginView.jsp внесите некоторые изменения
Добавить инструкции:
Изменить тег формы:
Измените имя пользователя:
Сменить пароль:
Изменить кнопку входа в систему:
Изменить сообщение об ошибке:
Добавьте окно ошибки в форму
Тест: введите неправильное имя пользователя и пароль, подсказка на английском языке. Это сообщение находится в файле messages.properties в каталоге WEB-INF classes
|
Установите интернационализацию на zn_CN, измените cas-servlet.xml
Поддерживаемый протокол
Клиент связывается с сервером через несколько поддерживаемых протоколов. Все поддерживаемые протоколы аналогичны, но разные протоколы соответствуют определенным сценариям приложений. Например, протокол CAS поддерживает аутентификацию комиссии (прокси), SAML-протокол поддерживает выпуск имущества и один точечный выход.
- Поддерживаемый протокол
- CAS (versions 1, 2, and 3)
- SAML 1.1 and 2
- OpenID Connect
- OpenID
- OAuth 2.0
вперед из:Однозначный вход в систему CAS (SSO) Введение и развертывание
После указания выхода на указанную страницу
Изменить файл конфигурации системы cas cas-servlet.xml
После того, как вы изменили значение true, вы можете перейти на целевую страницу при выходе и изменить ссылку выхода index.jsp.
Сборка cas-server 4.0.0
Версия 4.0.0 не самая последняя, но почему бы не использовать последнюю? Потому что последних статей в интернете очень мало.
Одна из самых важных причин:
Существует только несколько версий cas, которые имеют версию выпуска, такую как 4.0.0 и 3.5.2.Другие версии являются исходным кодом и должны быть скомпилированы сами, инструмент автоматической сборки cas также был заменен с исходного Maven на gradle.
Системные компоненты
Архитектура системы CAS включает в себя сервер CAS и клиентов CAS, которые являются двумя физическими компонентами, которые обмениваются различными протоколами.
Создание кастомного handler
Пришло время кастомизации CAS 4. Кастомизировать мы будем стандартный способ аунтентификации на свой.
Для этого в пакете handler создаем класс
Создание структуры и dto
Давайте теперь создадим в своем проекте в папке
src/
следующую структуру проекта:
Три, развертывание бизнес-системы
1 Новый проект Используйте Eclipse для быстрого создания двух проектов maven webapp
2 позиции конфигурации 1 pom.xml Чтобы интегрировать cas, вы должны использовать код cas, поэтому введите клиент cas в pom:
2 web.xml Для входа в систему и перехвата вы должны полагаться на фильтры, поэтому настройте серию фильтров в web.xml. Какие фильтры пока можно игнорировать, просто настройте несколько URL-адресов, serverName — это наша текущая система доступа, а casServer — это центр аутентификации сервера CAS:
Финальное конфигурирование
Теперь осталось скопировать с
overlays/org.jasig.cas.cas-server-webapp-4.0.0/WEB-INF/deployerConfigContext.xml
файл и положить его себе в проект как показанно на скрине ниже:

Теперь заходи в этот файл и ищем 96 строку или TODO:
TODO: Replace this component with one suitable for your enviroment.
Заключение
Мы рассмотрели, как использовать CAS SSO с Spring Security и многие из файлов конфигурации участие. Есть много других аспектов CAS SSO, который настраивается. От тем и типов протоколов до политик аутентификации.
Эти и другие находятся в документы . Исходный код для Сервер cas и Весенняя загрузка приложение доступен на GitHub.
Подводить итоги
Благодаря вышеуказанному контуру вы можете ясно хотеть понять применимые сцены двух, можно разделить на объекты сервиса SSO — это различные прикладные системы, объекты службы OAUTH являются пользователями.
Вход в личный кабинет