предисловие
На работе, поскольку все больше и больше проектов вступают в контакт, разные языки разработки, разные системы развертывания и разные проекты должны поддерживать свои собственные системы аутентификации пользователей.Есть ли хорошее решение для решения этой болевой точки? Ответ однозначно да, это известная в индустрии система единого входа sso.Может быть вы слышали это слово давно, но только слышали его звучание и не знаете его значения.Далее мы боритесь с системой единого входа cas вместе. Без лишних слов, давайте начнем.
Подготовка окружающей среды
- jdk1.8
- maven3.x
- centos7.x
- tomcat8.0
Подготовка сертификата HTTPS
- создать server.keystore
псевдоним: псевдоним здесь tomcat
keyalg: алгоритм сертификата, RSA
хранилище ключей: целевой путь и имя файла для генерации сертификата
keypass: пароль защиты ключа
storepass: сохранить пароль
keytool -genkey -alias tomcat -keyalg RSA -keypass 123456 -storepass 123456 -keystore tomcat.keystore -validity 3600
- создать сертификат server.cer
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore tomcat.keystore -storepass 123456
- Сертификат импорта
См. следующее сообщение Сертификат был успешно добавлен в хранилище ключей. Среди них changeit в -storepass changeit является паролем по умолчанию и не имеет ничего общего с ранее установленным паролем.
keytool -import -trustcacerts -alias tomcat -keystore "/home/jdk1.8.0_171/jre/lib/security/cacerts" -file "/root/software/server.cer" -storepass changeit
- Удалить сертификат (при необходимости)
keytool -delete -alias tomcat -keystore "/home/jdk1.8.0_171/jre/lib/security/cacerts" -storepass changeit
Tomcat настроить HTTPS
- редактировать
vi /root/software/apache-tomcat-8.5.37/conf/server.xml
加入配置项
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="tomcat.keystore" keystorePass="123456" />
- Запустите tomcat для проверки порта 8443
./bin/startup.sh
Введите https://ip:8443 в браузере, чтобы проверить порт
Скачать систему CAS
адресGitHub.com/AP и EO/CAS-…
Я выбираю версию 5.3 здесь, потому что градл, используемый для проекта, был собран с версии 6.0.Я знаком с maven, поэтому я выбрал версию 5.3.Кроме того, если нет научного доступа в Интернет, jar, от которого зависит gradle, не может быть загруженным.
Скачать и разархивировать
wget https://github.com/apereo/cas-overlay-template/archive/5.3.zip
unzip 5.3.zip
Если команда unzip не установлена Установите с помощью следующей команды
yum install -y unzip zip
Введите распакованный файл, скомпилируйте упакованный файл и дождитесь завершения.
mvn package
После упаковки
Запустить проект cas
Поместите скомпилированный военный пакет в webapps под tomcat и запустите tomcat
cd /root/software/cas-overlay-template-5.3/target
cp cas.war /root/software/apache-tomcat-8.0.53/webapps/
cd /root/software/apache-tomcat-8.0.53
./bin/startup.sh
Использовать имя пользователя/пароль по умолчанию casuser/Mellon
Авторизация успешна
Выход выполненВы также можете получить доступ через http ip:8080/cas
принцип:
Когда мы обращаемся к системе в первый раз, в памяти, занимаемой процессом клиентского браузера, нет файла cookie TGC, поэтому CAS-сервер считает, что пользователь не вошел в систему, поэтому перенаправляет запрос на страницу входа. процесс входа в систему доступен снова после входа в систему, будет перенаправлен непосредственно на страницу входа в систему.
Сервер CAS определяет, вошел ли пользователь на основе файла cookie (может ли TGC соответствовать TGT).По умолчанию файл cookie TGC находится в памяти, занимаемой процессом браузера, поэтому при закрытии браузера файл cookie недействителен ( TGC недействителен). Чтобы получить доступ к странице входа в CAS, вам потребуется снова войти в систему. Когда сервер CAS перезапустится, TGT будет недействительным (находится в памяти сервера), и вам нужно будет снова войти в систему в это время. .
После того, как пользователь войдет в систему, сервер CAS будет поддерживать взаимосвязь между TGT и идентификационной информацией пользователя, и все клиенты CAS могут получить идентификационную информацию вошедшего в данный момент пользователя с сервера CAS.
Доступ к адресу выхода в состоянии входа в систему приведет к успешному выходу из системы, который проходит через следующие шаги:
1. Очистите файл cookie TGC, сохраненный в браузере клиента (установите его пустым).
2. Очистите TGT, сохраненный на сервере.
3. Уничтожить объекты сеанса всех клиентов CAS.
После успешного выхода из системы вам необходимо снова войти в систему при повторном посещении страницы входа.
Суммировать
После того, как мы построили его сами, мы завершили базовую систему службы аутентификации cas и поняли принцип аутентификации, но как интегрировать ее с нашей бизнес-системой? В следующей статье мы рассмотрим эту систему в действии.