À propos du projet

Sa-Token est un framework Java léger de gestion d'authentification maintenu par la communauté dromara, publié sous licence Apache-2.0. La version actuelle est v1.46.0, compatible JDK 8 à 25. Le projet se positionne comme une solution d'authentification « tout-en-un ». Ses modules principaux incluent l'authentification de connexion, l'autorisation de permissions, l'authentification unique (SSO), OAuth2.0 et l'authentification des microservices. Pour l'authentification de connexion, le framework permet d'effectuer la connexion et la vérification de session par appels statiques : StpUtil.login(id de compte) pour se connecter, StpUtil.checkLogin() pour vérifier l'état de connexion, avec levée de NotLoginException en l'absence de connexion. L'autorisation de permissions prend en charge deux modes : par annotations et par interception de routes. Les annotations comme @SaCheckPermission("user:add") séparent l'authentification du code métier ; l'interception de routes utilise SaInterceptor et SaRouter.match pour répartir les permissions par module de chemin. Le framework couvre de nombreuses fonctionnalités. La liste du README inclut : connexion mono/multi-terminal, exclusion mutuelle des sessions sur le même terminal, mode « se souvenir de moi », authentification secondaire, déconnexion forcée (par identifiant de compte ou valeur de jeton), bannissement de compte, changement temporaire d'identité, simulation d'un autre compte, interrogation des sessions, écouteurs et filtres globaux, authentification multi-comptes, authentification Http Basic/Digest, outils de chiffrement de mot de passe, jeton temporaire, Redis indépendant, renouvellement automatique, dialectes de modèles (Thymeleaf, beetl), etc. La couche de persistance peut s'intégrer à Redis pour conserver les données après redémarrage, et prend en charge l'authentification des terminaux sans Cookie (applications mobiles, mini-programmes) dans les scénarios de séparation avant/arrière. Le module SSO propose trois modes : le mode 1 convient aux fronts identiques et aux backends partageant le même Redis, avec synchronisation des sessions via Cookie partagé ; le mode 2 convient aux fronts différents mais backends partageant le même Redis, avec propagation de session par redirection d'URL ; le mode 3 convient aux fronts différents et backends avec Redis distincts, avec vérification du ticket par requête HTTP pour obtenir la session. Le projet fournit également un exemple de mode NoSdk et la documentation d'interface sso-server, afin de faciliter l'intégration avec des projets non-Java, et inclut des mesures de sécurité comme la validation de domaine, la validation de ticket et la validation de signature de paramètres. Le module OAuth2 prend en charge quatre modes d'autorisation : code d'autorisation, implicite, mot de passe et identifiants client. Le framework propose en outre l'intégration JWT (trois modes), l'authentification et la transmission d'état pour les appels RPC (dubbo, grpc, etc.), l'autorisation par clé API, la signature des paramètres d'API (anti-altération, anti-rejeu). Côté intégration, en plus de SpringBoot 2, des paquets d'intégration sont fournis pour SpringBoot 3/4, Solon, JFinal, etc., ainsi qu'une adaptation de l'interception et de l'authentification des routes pour les passerelles Gateway, ShenYu, Zuul. Le projet est accompagné de plus de 60 exemples indépendants couvrant la connexion, l'autorisation de permissions, le SSO, OAuth2, l'authentification des microservices, JWT, la signature de paramètres, etc., et fournit des liens vers des versions communautaires dans plusieurs langages (Rust, Go, NodeJS, PHP). La documentation est principalement en chinois, avec des versions en chinois traditionnel, anglais, japonais, coréen et russe. Le README mentionne plusieurs cas d'intégration, tels que Snowy, RuoYi-Vue-Plus, Smart-Admin, 橙单, 灯灯, 拾壹博客, ainsi que des distinctions communautaires comme Gitee GVP et GitCode G-Star.