Об этом проекте
Sa-Token — это легковесный Java-фреймворк для аутентификации и авторизации, поддерживаемый сообществом dromara. Распространяется под лицензией Apache-2.0, текущая версия — v1.46.0, поддерживает JDK 8–25. Проект позиционируется как комплексное решение для аутентификации; основные модули включают вход в систему, проверку прав, единый вход (SSO), OAuth2.0 и аутентификацию микросервисов.
В части входа в систему фреймворк позволяет выполнять вход и проверку сессии с помощью статических вызовов, например StpUtil.login(accountId) для входа, StpUtil.checkLogin() для проверки статуса входа; при отсутствии входа выбрасывается NotLoginException. Проверка прав поддерживает два способа: аннотации и перехват маршрутов. Аннотации, такие как @SaCheckPermission("user:add"), отделяют проверку прав от бизнес-кода; перехват маршрутов использует SaInterceptor и SaRouter.match для разделения прав по путям и модулям.
Фреймворк охватывает множество функций, перечисленных в README: одно-/мультитерминальный вход, взаимоисключающий вход на одном терминале, режим «запомнить меня», двухуровневая аутентификация, принудительный выход (по ID аккаунта или значению токена), блокировка аккаунта, временное переключение личности, имитация чужого аккаунта, запрос сессий, глобальные слушатели и глобальные фильтры, аутентификация в мультиаккаунтной системе, HTTP Basic/Digest аутентификация, инструменты шифрования паролей, временные токены, отдельный Redis, автоматическое продление сессии, диалекты тегов (Thymeleaf, beetl) и др. Для уровня хранения можно интегрировать Redis, чтобы данные не терялись при перезапуске; поддерживается аутентификация для терминалов без Cookie (APP, мини-программы) в сценариях разделения фронтенда и бэкенда.
Модуль SSO предоставляет три режима: режим 1 подходит для случаев, когда фронтенд находится в одном домене и бэкенд использует общий Redis, синхронизация сессий через общие Cookie; режим 2 — для разных доменов фронтенда, но общего Redis на бэкенде, передача сессий через URL-редиректы; режим 3 — для разных доменов фронтенда и разных Redis на бэкенде, получение сессии через HTTP-запрос с проверкой ticket. Проект также включает пример режима NoSdk и документацию интерфейса sso-server для интеграции с не-Java проектами, а также меры безопасности: проверку доменов, проверку ticket, проверку подписи параметров.
Модуль OAuth2 поддерживает четыре режима авторизации: авторизационный код, неявный, пароль и клиентские учётные данные. Кроме того, фреймворк предоставляет интеграцию JWT (три режима), аутентификацию и передачу состояния в RPC-вызовах (dubbo, grpc и др.), выдачу API-ключей, подпись параметров API (защита от подделки и повторного воспроизведения).
Что касается интеграции, помимо SpringBoot 2, предоставляются пакеты интеграции для SpringBoot 3/4, Solon, JFinal и других фреймворков, а также адаптация маршрутной перехватывающей аутентификации для шлюзов Gateway, ShenYu, Zuul. Проект включает более 60 отдельных примеров, охватывающих вход в систему, проверку прав, SSO, OAuth2, аутентификацию микросервисов, JWT, подпись параметров и другие сценарии, а также ссылки на сообщества с реализациями на других языках (Rust, Go, NodeJS, PHP).
Документация в основном на китайском, также доступны версии на традиционном китайском, английском, японском, корейском и русском. В README перечислены несколько примеров интеграции, такие как Snowy, RuoYi-Vue-Plus, Smart-Admin, 橙单, 灯灯, 拾壹博客 и др., а также упоминаются награды сообщества: Gitee GVP, GitCode G-Star.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.