Intégration de Sa-Token dans Spring Boot pour la Gestion des Permissions

Sa-Token est un framework Java léger dédié à l'authentification et au contrôle des autorisations. Il se distingue par une API minimaliste qui élimine le besoin de configurations complexes. Pour illustrer sa simplicité, voici comment gérer une session de connexion :

// Enregistrer l'identifiant de l'utilisateur dans la session actuelle
Long userId = 8492L;
StpUtil.login(userId);

// Vérifier l'état de connexion à n'importe quel endroit du code
// Si l'utilisateur n'est pas connecté, une exception NotLoginException est levée
StpUtil.checkLogin();

Contrairement à d'autres solutions, Sa-Token se concentre sur deux aspects fondamentaux : une courbe d'apprentissage rapide grâce à l'automatisation des configurations, et une exhaustivité fonctionnelle qui évite aux développeurs d'ajouter des correctifs manuels.

Voici un aperçu des opérations courantes disponibles via l'API :

StpUtil.login(8492L);                     // Connecter l'utilisateur actuel
StpUtil.getLoginId();                     // Récupérer l'identifiant de l'utilisateur connecté
StpUtil.isLogin();                        // Vérifier si la session est active (retourne un booléen)
StpUtil.logout();                         // Déconnecter la session actuelle
StpUtil.kickout(8492L);                   // Forcer la déconnexion d'un utilisateur spécifique
StpUtil.hasRole("ROLE_ADMIN");            // Vérifier la possession d'un rôle
StpUtil.hasPermission("article:edit");    // Vérifier la possession d'une permission
StpUtil.getSession();                     // Obtenir la session de l'utilisateur courant
StpUtil.getTokenValueByLoginId(8492L);    // Récupérer le jeton (token) associé à un identifiant

Fonctionnalités Principales

  • Authentification : Gestion des connexions avec plusieurs scénarios de validation.
  • Contrôle d'accès : Interception des requêtes non autorisées basée sur les rôles et permissions.
  • Gestion de session : Cache de données utilisateur performant.
  • Expulsion d'utilisateurs : Déconnexion forcée des comptes compromis ou non conformes.
  • Multi-comptes : Séparation des contextes d'authentification (ex: clients et administrateurs).
  • Mode sans Cookie : Adapté aux architectures découplées (SPA, applications mobiles).
  • Authentification par annotations : Séparation claire entre la logique métier et la sécurité.
  • Générasion de jetons flexible : Multiples formats de tokens et stratégies d'expiration personnalisables.
  • Intégration automatique : Configuration nulle requise pour s'intégrer à l'écosystème Spring.

Guide d'Intégration avec Spring Boot

1. Configuration des Dépendances

Ajoutez le starter Sa-Token dans votre fichier pom.xml :

<!-- Dépendance pour l'authentification Sa-Token -->
<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot-starter</artifactId>
    <version>1.34.0</version>
</dependency>

2. Paramétrage de l'Application

Bien que le framework fonctionne sans configuration, vous pouvez personnaliser son comportement dans le fichier application.yml :

sa-token:
  # Nom du jeton (utilisé également pour le cookie)
  token-name: Authorization-Token
  # Durée de vie du jeton en secondes (ici, 30 jours)
  timeout: 2592000
  # Durée d'inactivité avant expiration (-1 pour désactiver)
  activity-timeout: -1
  # Autoriser les connexions simultanées sur un même compte
  is-concurrent: true
  # Partager le même jeton lors de connexions multiples
  is-share: true
  # Format du jeton généré
  token-style: uuid

3. Classe Principale

Créez votre classe de démarrage Spring Boot. Voici un exemple avec un package personnalisé :

package com.example.security;

import cn.dev33.satoken.SaManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SecurityApplication {
    public static void main(String[] args) {
        SpringApplication.run(SecurityApplication.class, args);
        System.out.println("Démarrage terminé. Configuration Sa-Token : " + SaManager.getConfig());
    }
}

L'exécution de cette classe initialisera le contexte Spring et chargera automatiquement les composants de Sa-Token, confirmant ainsi la réussite de l'intégration.

Étiquettes: sa-token spring-boot Java authentication authorization

Publié le 20 août à 11h02