Боевой режим единого входа CAS (SSO) (1)

Java EE
Боевой режим единого входа CAS (SSO) (1)

предисловие

На работе, поскольку все больше и больше проектов вступают в контакт, разные языки разработки, разные системы развертывания и разные проекты должны поддерживать свои собственные системы аутентификации пользователей.Есть ли хорошее решение для решения этой болевой точки? Ответ однозначно да, это известная в индустрии система единого входа 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 и поняли принцип аутентификации, но как интегрировать ее с нашей бизнес-системой? В следующей статье мы рассмотрим эту систему в действии.