1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/a466350665-smart-sso

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Smart-SSO

License

PRs Welcome

Gitee stars

Gitee forks

GitHub stars

GitHub forks

QQ交流群:454343484、769134727

简述

Smart-SSO, опираясь на популярную технологию SpringBoot, использует аутентификацию OAuth2 и управление доступом на основе ролей (RBAC) в качестве основы для создания лёгкого и доступного центра аутентификации и авторизации.

Функции

  1. Лёгкий вес: реализация с использованием минимальных ресурсов на основе SpringBoot и протокола OAuth2;

  2. Единый выход: клиентское приложение при получении токена неявно передаёт свой адрес выхода серверу. При выходе из любого клиентского приложения сервер отправляет удалённое уведомление всем клиентским приложениям для аннулирования локального токена, обеспечивая единый выход;

  3. Автоматическое продление: используя стратегию accessToken протокола OAuth2, клиентский бэкенд автоматически вызывает интерфейс обновления refreshToken по истечении срока действия и обновляет срок действия токена на сервере, обеспечивая автоматическое продление после истечения срока действия;

  4. Поддержка кросс-домена: сервер и клиент поддерживают механизм единого входа и выхода в разных доменах;

  5. Разделение переднего и заднего плана: даже в архитектуре с разделением переднего и заднего планов (без режима cookie), можно легко реализовать функции единого входа;

  6. Управление правами на уровне кнопок: сервер классифицирует права на меню и кнопки и реализует контроль доступа на уровне кнопок путём сопоставления запроса uri и метода запроса;

  7. Распределённое развёртывание: и сервер, и клиент поддерживают развёртывание нескольких экземпляров на основе общего токена Redis.

Связанные документы

Кодовый хостинг

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

Зависимости модулей

Примечание:

  1. Красная сплошная линия может быть понята как сервер также нуждается в едином входе, который является его собственным клиентом;

  2. Красная пунктирная линия означает, что независимо от того, является ли это сервер или клиент, когда требуется кластерное развёртывание, можно выбрать зависимость 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 Аутентификация кода авторизации, связь между клиентом и сервером

Почему выбран OAuth2?

Ниже приводится сравнение общих характеристик нескольких распространённых методов аутентификации:

Характеристика Традиционный токен JWT OAuth2
Единый вход Поддержка Поддержка Поддержка
Единовременный выход Поддержка Сложно реализовать Поддержка
Выключение пользователя Поддержка Сложно реализовать Поддержка
Автоматическое обновление Сложно реализовать Поддержка Поддержка
Производительность Обычная Высокая Хорошая
Безопасность Обычная Хорошая Высокая
Сложность Обычная Высокая Высокая

Объяснение:

Для традиционного метода токенов его механизм относительно прост. Обычно сервер генерирует случайную строку в качестве токена, а затем передаёт её между клиентом и сервером для проверки личности пользователя. Однако этот метод имеет значительные недостатки. Из-за отсутствия срока действия и механизма обновления, функцию автоматического обновления трудно реализовать, и запросы пользователей от клиента к серверу должны часто вызывать проверку токена на стороне сервера. Тем не менее, для некоторых небольших проектов, особенно тех, где требования к производительности или безопасности не слишком высоки, этот метод может быть достаточно подходящим.

JWT использует свою функцию без сохранения состояния, поэтому серверу нужно только хранить ключ, без необходимости хранить информацию о токене, тем самым снижая нагрузку на хранение сервера. Но в сценарии единого входа реализация функций единовременного выхода и выключения пользователя затруднена, эти функции обычно требуют использования серверного хранилища токенов и сочетания удалённого уведомления об аннулировании или совместного хранения для достижения, что противоречит концепции JWT. Для некоторых проектов с очень высокими требованиями к безопасности эти функции являются обязательными.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/a466350665-smart-sso.git
git@api.gitlife.ru:oschina-mirror/a466350665-smart-sso.git
oschina-mirror
a466350665-smart-sso
a466350665-smart-sso
master