Са-Токен v1.39.0
Облегченная платформа аутентификации разрешений Java, которая делает аутентификацию простой и элегантной!
Онлайн-документация: https://sa-token.cc.
Са-токен Введение
Sa-Token — это облегченная платформа аутентификации разрешений Java, которая в настоящее время имеет пять основных модулей: аутентификация входа, аутентификация разрешений, единый вход, OAuth2.0 и аутентификация микросервиса.
Простой пример отображения: (нажмите, чтобы развернуть/свернуть)
Sa-Token стремится завершить часть системы аутентификации разрешений простым и элегантным способом. Если взять в качестве примера аутентификацию при входе, вам нужно всего лишь:
// 会话登录,参数填登录人的账号id
StpUtil . login ( 10001 );
Нет необходимости реализовывать какой-либо интерфейс или создавать какой-либо файл конфигурации. Вам нужно только вызвать этот статический код для завершения аутентификации входа в сеанс.
Если для доступа к интерфейсу требуется вход в систему, нам нужно всего лишь вызвать следующий код:
// 校验当前客户端是否已经登录,如果未登录则抛出 `NotLoginException` 异常
StpUtil . checkLogin ();
В Sa-Token большинство функций можно решить одной строкой кода:
Выкидывать людей из сети:
// 将账号id为 10077 的会话踢下线
StpUtil . kickout ( 10077 );
Аутентификация разрешения:
// 注解鉴权:只有具备 `user:add` 权限的会话才可以进入方法
@ SaCheckPermission ( "user:add" )
public String insert ( SysUser user ) {
// ...
return "用户增加" ;
}
Аутентификация перехвата маршрута:
StpUtil.checkPermission("user"));
SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
// 更多模块...
})).addPathPatterns("/**");">
// 根据路由划分模块,不同模块不同鉴权
registry . addInterceptor ( new SaInterceptor ( handler -> {
SaRouter . match ( "/user/**" , r -> StpUtil . checkPermission ( "user" ));
SaRouter . match ( "/admin/**" , r -> StpUtil . checkPermission ( "admin" ));
SaRouter . match ( "/goods/**" , r -> StpUtil . checkPermission ( "goods" ));
SaRouter . match ( "/orders/**" , r -> StpUtil . checkPermission ( "orders" ));
SaRouter . match ( "/notice/**" , r -> StpUtil . checkPermission ( "notice" ));
// 更多模块...
})). addPathPatterns ( "/**" );
Когда вам надоест Shiro, SpringSecurity и другие фреймворки, вы поймете, насколько простой и элегантный дизайн API Sa-Token по сравнению с этими традиционными старыми фреймворками!
Список основных модулей: (нажмите, чтобы развернуть/свернуть)
- Аутентификация входа — односторонний вход, многосторонний вход, взаимоисключающий вход с одного конца, вход в систему не требуется в течение семи дней.
- Аутентификация разрешений — аутентификация полномочий, аутентификация ролей, вторичная аутентификация сеанса.
- Удаление людей из сети . Удаление людей из сети на основе идентификатора их учетной записи и исключение людей из сети на основе значения их токена.
- Аутентификация на основе аннотаций — элегантно отделяет аутентификацию от бизнес-кода.
- Аутентификация перехвата маршрута . На основе аутентификации перехвата маршрута можно адаптировать спокойный режим.
- Сеанс — общий сеанс для всех концов, эксклюзивный сеанс для одного конца, настраиваемый сеанс, удобный доступ к значениям.
- Расширение уровня сохраняемости — Redis можно интегрировать, и данные не будут потеряны после перезапуска.
- Разделение внешней и внутренней части — приложения, апплеты и другие терминалы, не поддерживающие файлы cookie, также можно легко аутентифицировать.
- Настройка стиля токена — шесть встроенных стилей токенов, вы также можете настроить стратегию генерации токенов.
- Режим «Запомнить меня» — адаптируйтесь к режиму [Запомнить меня] и перезапустите браузер без проверки.
- Аутентификация второго уровня — повторная аутентификация на основе входа в систему для обеспечения безопасности.
- Имитируйте учетные записи других людей . Манипулируйте любыми данными о статусе пользователя в режиме реального времени.
- Временное переключение удостоверения . Временно переключите удостоверение сеанса на другую учетную запись.
- Взаимно-исключающий вход на одном конце — как и в QQ, мобильный телефон и компьютер находятся в сети одновременно, но вход на двух мобильных телефонах является взаимоисключающим.
- Блокировка учетной записи - блокировка входа в систему, блокировка бизнес-класса и блокировка лестницы наказаний.
- Шифрование паролей . Предоставляет базовые алгоритмы шифрования, которые позволяют быстро зашифровать MD5, SHA1, SHA256 и AES.
- Запрос сеанса . Предоставляет удобный и гибкий интерфейс запроса сеанса.
- Базовая HTTP-аутентификация — одна строка кода для доступа к Http-базовой и дайджест-аутентификации.
- Глобальный прослушиватель — выполняет некоторые операции AOP во время ключевых операций, таких как вход пользователя в систему, выход из системы и выход из сети.
- Глобальный фильтр . Удобно обрабатывает первоклассные междоменные и глобально настроенные операции реагирования на безопасность.
- Аутентификация системы с несколькими учетными записями — отдельная аутентификация нескольких учетных записей в одной системе (например, таблица пользователей и таблица администраторов торгового центра)
- Единый вход . Существует три встроенных режима единого входа: тот же домен, междоменный, тот же Redis, перекрестный Redis, разделение внешнего и внутреннего интерфейса, а также могут обрабатываться другие архитектуры.
- Выход из системы в одной точке — инициируйте выход из системы в любой подсистеме, и вся система перейдет в автономный режим.
- Аутентификация OAuth2.0 . Легко создавайте службы OAuth2.0, поддерживающие режим openid.
- Распределенный сеанс . Предоставляет решение для распределенного сеанса в общем центре обработки данных.
- Аутентификация шлюза микросервиса — адаптируется к аутентификации перехвата маршрутов общих шлюзов, таких как Gateway, ShenYu, Zuul и т. д.
- Аутентификация вызовов RPC — аутентификация переадресации шлюза, аутентификация вызовов RPC, чтобы служебные вызовы больше не выполнялись без использования
- Аутентификация по временному токену — решает краткосрочные проблемы с авторизацией по токену.
- Независимый Redis — разделяет кеш разрешений и бизнес-кеш.
- Быстрая аутентификация при входе в систему . Добавьте в проект страницу входа без кода.
- Диалект тегов — предоставляет пакет интеграции диалекта тегов Thymeleaf и примеры интеграции beetl.
- Интеграция jwt — предоставляет три режима решений интеграции jwt и предоставляет возможности расширения параметров токена.
- Передача статуса вызова RPC . Предоставляет пакеты интеграции, такие как dubbo и grpc, чтобы статус входа не терялся во время вызовов RPC.
- Подпись параметра . Предоставляет межсистемный модуль проверки подписи вызова API для предотвращения подделки параметров и повторного запроса.
- Автоматическое продление . Предусмотрены две стратегии истечения срока действия токена, которые можно гибко использовать и автоматически продлевать.
- Готов к использованию «из коробки» — предоставляет общие пакеты интеграции с инфраструктурой, такие как SpringMVC, WebFlux, Solon и т. д., готовые к использованию «из коробки».
- Новейший стек технологий , адаптированный к новейшему стеку технологий: поддерживает SpringBoot 3.x, jdk 17.
Единый вход в систему
Sa-Token SSO разделен на три режима для решения проблем единого входа в различных архитектурах, таких как однодоменный, междоменный, общий Redis, перекрестный Redis, интеграция внешнего и внутреннего интерфейса, внешний и внутренний интерфейс. разделение... и т.д.:
Архитектура системы | Схема принятия | Введение | Ссылка на документацию |
---|
Интерфейсная часть находится в том же домене + серверная часть находится в том же домене, что и Redis | Режим первый | Общий сеанс синхронизации файлов cookie | Документация, примеры |
Различные домены на внешнем интерфейсе + То же, что Redis на внутреннем интерфейсе. | Режим 2 | Перенаправление URL-адреса распространяет сеанс | Документация, примеры |
Разные домены на внешней стороне + разные Redis на внутренней стороне | Режим третий | HTTP-запрос на получение сеанса | Документация, примеры |
- Внешний интерфейс одного и того же домена: это означает, что несколько систем могут быть развернуты под одним и тем же именем основного домена, например:
c1.domain.com
, c2.domain.com
, c3.domain.com
- Бэкэнд такой же, как у Redis: это означает, что к одному Redis могут подключаться несколько систем. (Это не требует размещения всех данных проекта в одном Redis. Sa-Token предоставляет решение
[权限缓存与业务缓存分离]
). - Если ни передняя, ни задняя часть не могут находиться в том же домене, что и Redis, вы можете использовать третий режим: билет проверки HTTP-запроса для получения сеанса.
- Приведен пример режима NoSdk, также можно подключить системы, не использующие Sa-Token.
- Предоставьте документацию по интерфейсу sso-сервера. Также можно подключить системы, не использующие язык Java.
- Предоставляет решения по разделению и интеграции клиентской и внутренней частей: независимо от того, является ли это sso-сервером или sso-клиентом, можно интегрировать как внешнее, так и внутреннее разделение.
- Обеспечивает проверку безопасности: проверку доменного имени, проверку билетов, проверку подписи параметров, эффективно предотвращая перехват билетов, повтор запроса и другие атаки.
- Предотвращение потери параметров: автор протестировал несколько фреймворков единого входа, и все параметры были потеряны. Например, до входа в систему это было:
http://a.com?id=1&name=2
, а после успешного входа в систему оно стало. : http://a.com?id=1
, Sa-Token-SSO имеет специальный алгоритм, гарантирующий, что параметры не будут потеряны, а исходный путь точно будет возвращен после успешного входа в систему. - Предоставьте предложения по решениям для синхронизации/миграции пользовательских данных: унифицированная миграция перед разработкой, синхронизация данных в реальном времени во время выполнения, сопоставление на основе связанных полей, сопоставление на основе полей center_id и т. д.
- Содержит прямо выполняемые демонстрационные примеры, которые помогут вам быстро ознакомиться с общим процессом входа в систему единого входа.
аутентификация авторизации OAuth2
Модуль Sa-Token-OAuth2 разделен на четыре режима авторизации для удовлетворения потребностей авторизации в различных сценариях.
Режим авторизации | Введение |
---|
Код авторизации | Стандартный этап авторизации OAuth2.0: сервер передает код клиенту, а клиент обменивает код на токен авторизации. |
Скрытый | В качестве резервного варианта, когда режим кода авторизации не может быть использован, сервер использует перенаправление URL-адресов для прямой передачи токена на клиентскую страницу. |
Пароль | Клиент напрямую обменивает учетную запись и пароль пользователя на токен авторизации. |
Учетные данные клиента | Серверный токен для уровня клиента, представляющий авторизацию собственных ресурсов приложения. |
Подробный справочный документ: https://sa-token.cc/doc.html#/oauth2/readme.
Вариант интеграции с открытым исходным кодом
- [Snowy]: первая в Китае платформа быстрой разработки, которая разделяет национальные тайны до и после, используя Vue3 + AntDesignVue3 + Vite + SpringBoot + Mp + HuTool + SaToken.
- [ RuoYi-Vue-Plus ]: переписать все функции RuoYi-Vue и интегрировать Sa-Token+Mybatis-Plus+Jackson+Xxl-Job+knife4j+Hutool+OSS для регулярной синхронизации.
- [Smart-Admin]: SmartAdmin — это первая в Китае платформа быстрой разработки для промежуточной и серверной частей, в основе которой лежит «высококачественный код», «простая, эффективная и безопасная»;
- [Dengdeng]: Платформа быстрой разработки микросервисов среднего и внутреннего уровня, ориентированная на мультитенантные решения. Режим арендатора поддерживает независимую базу данных (режим DATASOURCE), общую архитектуру данных (режим COLUMN) и режим без арендатора (режим NONE).
- [EasyAdmin]: система управления серверной частью на основе SpringBoot2 + Sa-Token + Mybatis-Plus + Snakerflow + Layui. Она является гибкой и может разделять переднюю и внутреннюю части или представлять собой единый объект. Она имеет встроенный код. генератор, управление разрешениями, механизм рабочего процесса и т. д.
- [ sa-admin-server ]: платформа разработки фонового управления на основе sa-admin-ui.
Есть еще несколько отличных кейсов с открытым исходным кодом, которые невозможно отобразить по одному, см.: Awesome-Sa-Token.
Дружественные ссылки
- [ OkHttps ]: легкая платформа HTTP-коммуникаций, чрезвычайно элегантный API, поддержка протоколов WebSocket и Stomp.
- [Bean Searcher]: ORM только для чтения, ориентированный на сложные запросы и позволяющий извлекать сложные списки с помощью одной строки кода!
- [Jpom]: Простое и легкое онлайн-создание с низким уровнем вмешательства, автоматическое развертывание, ежедневная эксплуатация и обслуживание, а также программное обеспечение для мониторинга проекта.
- [TLog]: облегченный артефакт отслеживания тегов распределенного журнала.
- [hippo4j]: мощная платформа динамического пула потоков с функциями мониторинга и оповещения.
- [hertzbeat]: простая в использовании и дружественная система мониторинга и сигнализации в реальном времени с открытым исходным кодом, не требующая агента, высокопроизводительный кластер и мощные возможности настраиваемого мониторинга.
- [Солон]: Более современная среда разработки приложений: быстрее, меньше и свободнее.
- [Chat2DB]: инструмент управления базами данных и бизнес-аналитики на основе искусственного интеллекта, который поддерживает управление 22 базами данных, такими как Mysql, pg, Oracle и Redis.
Хостинг кода
- Гите: https://gitee.com/dromara/sa-token
- GitHub: https://github.com/dromara/sa-token
- GitCode: https://gitcode.com/dromara/sa-token
Коммуникационная группа
Группа связи QQ: 823181187 Нажмите, чтобы присоединиться.
Группа связи WeChat:
(Отсканируйте QR-код, чтобы добавить WeChat, примечание: sa-token, приглашаем вас присоединиться к групповому чату)
Преимущества присоединения к групповому чату:
- Получайте уведомления об обновлениях платформы как можно скорее.
- Получайте уведомления об ошибках платформы как можно скорее.
- Получайте уведомления о новых случаях использования открытого исходного кода как можно скорее.
- Общайтесь (мо ю) друг с другом (хуа шуу) со многими большими парнями.