❝Статья впервые опубликована в паблике [Programmer Reading], прошу обратить внимание.
❞
Это вторая статья из серии "Концепции программирования", в этой статье поговорим об этом.单点登录
Механизмы!
Что такое единый вход
Зачем нужен единый вход
Когда наша система представляет собой просто одно приложение, нам не нужна функция единого входа, потому что есть только одна система, и пользователям нужно войти в систему только один раз при использовании системы.На данный момент наша система должна выглядеть как это из:
Однако с развитием бизнеса система будет становиться все больше и больше, поэтому нам придется разделить систему.Огромная система будет разделена на разные подсистемы, и каждая подсистема должна проверять, вошел ли пользователь в систему. система должна выглядеть так:
Видно, что после разделения системы каждой подсистеме нужна своя функция входа в систему.В это время модуль аутентификации входа можно превратить в отдельную систему, и для доступа к любому содержимому, доступ к которому возможен только после входа в систему, необходимо сначала войти в систему. После успешной аутентификации входа мы можем продолжить доступ. В это время наша система станет следующей:
Это называется единым входом, и давайте рассмотрим его более подробно.
концепция единого входа
Единый вход, полное имя на английском языкеSingle Sign-On
, сокращенноSSO
, который определяет, что в системах с несколькими приложениями пользователям необходимо войти в систему только один раз, чтобы получить доступ ко всем взаимно доверенным системам приложений.
Из приведенного выше определения функция единого входа заключается в том, что пользователю нужно войти в систему только один раз, и доступ к соответствующей системе можно получить без повторного входа в систему. подсистема.
Реализация единого входа
Теперь, когда мы знаем, что с развитием бизнеса и разделением систем, наших систем будет становиться все больше и больше, и невозможно избежать единого входа, так как же этого добиться?
Для достижения единого входа функцию аутентификации при входе необходимо выделить отдельно и превратить в независимуюSSO认证中心
, выполнять аутентификацию входа и контроль разрешений, в то время как другие подсистемы не предоставляют функцию аутентификации входа.
Когда пользователь получает доступ к ограниченным ресурсам подсистемы, если будет установлено, что он не вошел в систему, он перейдет к центру аутентификации для аутентификации входа.
Как правило, существует два метода реализации, а именно:
Единый вход для систем под одним доменным именем
Если наши разделенные подсистемы развернуты под одним и тем же доменным именем первого уровня, напримерorder.test.com
а такжеuser.test.com
, вы можете использовать браузер, доменное имя второго уровня или прочитать доменное имя первого уровняCookie
Механизм достижения единого входа существует двумя следующими способами:
Заполните весь файл cookie, чтобы достичь
Авторизоваться
- Когда пользователь получает доступ к подсистеме (такой как система управления заказами), если он не вошел в систему, переходите к
SSO认证中心
Аутентификация входа. - После успешной аутентификации при входе информация, которая может подтвердить пользователя, шифруется и сохраняется в доменном имени первого уровня (вот
.test.com
) в файле cookie и переходит к подсистеме. - Подсистема может прочитать файл cookie, расшифровать его, чтобы получить информацию о пользователе, и проверить пользователя в соответствии с правилами проверки, чтобы определить, является ли пользователь действительным, и завершить вход пользователя в систему.
выйти
Логика выхода из системы также относительно проста: когда пользователь запрашивает систему аутентификации SSO для входа и выхода, центр аутентификации SSO должен только удалить файл cookie в браузере.
Куки и сессия участвуют вместе
Это не очень гибко и не очень безопасно для реализации только через файлы cookie, поэтому его также можно использовать с сеансами для выполнения функции единого входа.
Этот метод аналогичен простому использованию файла cookie для входа в систему. После успешного входа в систему только другого пользователя файл cookie сохраняет идентификатор сеанса. Когда пользователь получает доступ, доступ к пользовательским данным в сеансе осуществляется через идентификатор сеанса, сохраненный в файле cookie. Метод требует, чтобы разные подсистемы имели доступ к сеансу.
принцип CAS
Вышеупомянутый способ достижения единого входа в одно и то же доменное имя является относительно простым, но что, если наша система развернута под разными доменными именами? Как добиться единого входа в настоящее время?
На самом деле единый вход имеет набор стандартных процессов, называемых процессом CAS, полное название CASCentral Authentication Service
, по-китайски называемый центральным сервером аутентификации, здесь мы называем его центром аутентификации SSO (CAS Server
).
CAS Server
Обеспечьте функцию аутентификации входа в систему, каждая подсистема эквивалентна клиенту (CAS Client
), когда пользователю необходимо войти в систему,CAS Server
Инициировать запрос на вход.
Механизм входа в систему CAS
Мы предполагаем, что пользователь сначала получает доступ к ограниченным ресурсам в системе управления заказами, а вход и выход из системы следующие:
- Доступ пользователей к ограниченным ресурсам системы управления заказами.
- Система управления заказами определяет, что пользователь не авторизовался.
- Система управления заказами берет адрес доступа пользователя и переходит на страницу входа в центр аутентификации SSO.
- После того, как пользователь вводит пароль учетной записи и аутентификация проходит успешно, устанавливается глобальный сеанс (файл cookie) и генерируется токен.
- Центр сертификации SSO имеет токен для перехода в систему управления заказами.
- Система управления заказами получает значение токена и проверяет, действителен ли токен через центр аутентификации SSO.Если он действителен, создается локальный сеанс для завершения входа в систему управления заказами.
"Схематическая диаграмма вышеуказанного процесса показана ниже."
После входа в подсистему давайте посмотрим на процесс входа в другую подсистему.Теперь мы входим в систему управления товарами:
- Пользователь получает доступ к ограниченным ресурсам системы управления товарами.
- Система управления товарами определяет, что пользователь не авторизовался.
- Система управления товарами берет адрес доступа пользователя и переходит на страницу входа в центр аутентификации SSO.В это время она будет содержать созданный выше глобальный файл cookie.
- После того, как центр аутентификации SSO получает файл cookie, он определяет, что пользователь вошел в систему.
- Центр сертификации SSO несет токен для перехода к системе управления товарами.
- Система управления товарами получает значение токена и проверяет, действителен ли токен через центр аутентификации SSO.Если он действителен, создается локальный сеанс для завершения входа в систему управления заказами.
"Схематическая диаграмма выше выглядит следующим образом:"
Механизм выхода из процесса CAS
Поскольку существует единый вход, требуется единый выход из системы.Единый выход гарантирует, что после выхода из одной из подсистем состояние входа в другие подсистемы также будет отключено.
Мы по-прежнему предполагаем, что пользователь инициирует операцию выхода и входа в систему управления заказами Конкретный процесс выглядит следующим образом:
- Пользователь инициирует запрос на выход из системы заказов.
- Заказ получает токен (токен) по идентификатору сеанса, установленному пользователем в текущей системе, и отправляет его пользователю.
SSO认证中心
Инициировать запрос на выход из системы. -
SSO认证中心
Проверить, действителен ли токен, если он действителен, уничтожить глобальную сессию и удалить все системные адреса, зарегистрированные с этим токеном. -
SSO认证中心
Инициировать запрос на выход из системы для всех зарегистрированных подсистем. - Каждая система регистрации получает
SSO认证中心
запрос выхода из системы, уничтожить локальныйsession
. -
SSO认证中心
Перенаправить пользователя на страницу входа (или другую страницу).
резюме
Подводя итог, с помощью единого входа пользователи могут получить доступ к различным системам, если они войдут в систему один раз, вместо того, чтобы входить в систему несколько раз.Есть два способа достижения единого входа. -под тем же доменным именем, а другой - реализация единого входа под тем же доменным именем.Это принятый процесс CAS, который можно выбрать, исходя из реальных потребностей вашей собственной системы.
❝Статья впервые опубликована в паблике [Programmer Reading], прошу обратить внимание.
❞