QQ交流群:454343484、769134727
Smart-SSO, опираясь на популярную технологию SpringBoot, использует аутентификацию OAuth2 и управление доступом на основе ролей (RBAC) в качестве основы для создания лёгкого и доступного центра аутентификации и авторизации.
Лёгкий вес: реализация с использованием минимальных ресурсов на основе SpringBoot и протокола OAuth2;
Единый выход: клиентское приложение при получении токена неявно передаёт свой адрес выхода серверу. При выходе из любого клиентского приложения сервер отправляет удалённое уведомление всем клиентским приложениям для аннулирования локального токена, обеспечивая единый выход;
Автоматическое продление: используя стратегию accessToken протокола OAuth2, клиентский бэкенд автоматически вызывает интерфейс обновления refreshToken по истечении срока действия и обновляет срок действия токена на сервере, обеспечивая автоматическое продление после истечения срока действия;
Поддержка кросс-домена: сервер и клиент поддерживают механизм единого входа и выхода в разных доменах;
Разделение переднего и заднего плана: даже в архитектуре с разделением переднего и заднего планов (без режима cookie), можно легко реализовать функции единого входа;
Управление правами на уровне кнопок: сервер классифицирует права на меню и кнопки и реализует контроль доступа на уровне кнопок путём сопоставления запроса uri и метода запроса;
Распределённое развёртывание: и сервер, и клиент поддерживают развёртывание нескольких экземпляров на основе общего токена Redis.
Smart-SSO единый вход (часть 3): руководство по подключению;
Smart-SSO единый вход (часть 4): разделение переднего и заднего плана;
Smart-SSO единый вход (часть 5): распределённое развёртывание.
Gitee: https://gitee.com/a466350665/smart-sso;
Github: https://github.com/a466350665/smart-sso;
Gitcode: https://gitcode.com/openjoe/smart-sso.
smart-sso
├── smart-sso-demo -- пример клиента
├── smart-sso-demo-h5 -- пример клиентского приложения с разделением переднего и заднего плана
├── smart-sso-server -- сервер управления единым входом и правами
├── smart-sso-starter -- модуль зависимостей сборки
│ ├── smart-sso-starter-base -- общие константы, инструменты, механизмы очистки токенов
│ ├── smart-sso-starter-client -- зависимости клиента, управление жизненным циклом токенов клиента
│ ├── smart-sso-starter-client-redis -- зависимости клиента для распределённого развёртывания, поддержка Redis
│ ├── smart-sso-starter-server -- зависимости сервера, управление жизненным циклом серверных токенов
│ └── smart-sso-starter-server-redis -- зависимости сервера для распределённого развёртывания, поддержка Redis
Примечание:
Красная сплошная линия может быть понята как сервер также нуждается в едином входе, который является его собственным клиентом;
Красная пунктирная линия означает, что независимо от того, является ли это сервер или клиент, когда требуется кластерное развёртывание, можно выбрать зависимость Redis для реализации совместного использования токенов.
Технология | Версия | Описание |
---|---|---|
spring-boot | 3.3.4 | Контейнер + MVC-фреймворк |
spring-boot-starter-data-redis | 3.3.4 | Распределённая сцена Token Management |
spring-boot-starter-freemarker | 3.3.4 | Шаблонизатор |
springfox-boot-starter | 3.0.0 | Документация |
mybatis-plus-spring-boot3-starter | 3.5.7 | ORM-фреймворк |
mysql-connector-java | 8.0.28 | Драйвер базы данных |
httpclient | 4.5.14 | Аутентификация кода авторизации, связь между клиентом и сервером |
Ниже приводится сравнение общих характеристик нескольких распространённых методов аутентификации:
Характеристика | Традиционный токен | JWT | OAuth2 |
---|---|---|---|
Единый вход | Поддержка | Поддержка | Поддержка |
Единовременный выход | Поддержка | Сложно реализовать | Поддержка |
Выключение пользователя | Поддержка | Сложно реализовать | Поддержка |
Автоматическое обновление | Сложно реализовать | Поддержка | Поддержка |
Производительность | Обычная | Высокая | Хорошая |
Безопасность | Обычная | Хорошая | Высокая |
Сложность | Обычная | Высокая | Высокая |
Объяснение:
Для традиционного метода токенов его механизм относительно прост. Обычно сервер генерирует случайную строку в качестве токена, а затем передаёт её между клиентом и сервером для проверки личности пользователя. Однако этот метод имеет значительные недостатки. Из-за отсутствия срока действия и механизма обновления, функцию автоматического обновления трудно реализовать, и запросы пользователей от клиента к серверу должны часто вызывать проверку токена на стороне сервера. Тем не менее, для некоторых небольших проектов, особенно тех, где требования к производительности или безопасности не слишком высоки, этот метод может быть достаточно подходящим.
JWT использует свою функцию без сохранения состояния, поэтому серверу нужно только хранить ключ, без необходимости хранить информацию о токене, тем самым снижая нагрузку на хранение сервера. Но в сценарии единого входа реализация функций единовременного выхода и выключения пользователя затруднена, эти функции обычно требуют использования серверного хранилища токенов и сочетания удалённого уведомления об аннулировании или совместного хранения для достижения, что противоречит концепции JWT. Для некоторых проектов с очень высокими требованиями к безопасности эти функции являются обязательными.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )