[JAVA] Ajoutez vos propres éléments d'authentification avec Spring Security

Aperçu

Vous pouvez également utiliser Spring Security lorsque vous essayez d'implémenter l'authentification avec Spring Boot. Spring Security dispose d'un mécanisme pour s'authentifier automatiquement si vous définissez des éléments lors de la connexion, mais il s'authentifie essentiellement avec un ensemble de nom d'utilisateur et de mot de passe. J'écrirai ce qu'il faut faire si vous souhaitez ajouter d'autres éléments pour l'authentification.

Hypothèses, etc.

Exemple d'implémentation

Ajoutez authenticationProvider à SecurityConfig. Pour authenticationProvider, définissez ʻAuthenticationProviderImpl` qui est implémenté indépendamment ultérieurement. Définissez également authenticationProvider dans configureGlobal.

SecurityConfig.java


  @Autowired
  private AuthenticationProviderImpl authenticationProvider;
  
  @Autowired
  public void configureGlobal(
    AuthenticationManagerBuilder auth,
    @Qualifier("userService") UserDetailsService userDetailsService,
    PasswordEncoder passwordEncoder) throws Exception {

    authenticationProvider.setUserDetailsService(userDetailsService);
    authenticationProvider.setPasswordEncoder(passwordEncoder);
    auth.eraseCredentials(true)
      .authenticationProvider(authenticationProvider);
  }

AuthenticationProvider à implémenter indépendamment. J'ai ajouté une colonne de statut à la table à l'authentification NG pour les utilisateurs qui ne sont pas «actifs».

AuthenticationProviderImpl.java


@Component
public class AuthenticationProviderImpl extends DaoAuthenticationProvider {
  @Override
  protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException {
    super.additionalAuthenticationChecks(userDetails, authentication);
    User user = (User) userDetails;

    //Conditions additionnelles
    if (!user.getStatus().equals("active")) {
      throw new AccountStatusNotActiveException("Status is not active");
    }
  }

  public static class AccountStatusNotActiveException extends AuthenticationException {
    public AccountStatusNotActiveException(String message) {
      super(message);
    }
  }

  @Override
  protected void doAfterPropertiesSet() {}
}

Autres références

Recommended Posts

Ajoutez vos propres éléments d'authentification avec Spring Security
Appelez votre propre méthode avec PreAuthorize dans Spring Security
Mise en œuvre de la fonction d'authentification avec Spring Security ②
Implémentez la fonction d'authentification avec Spring Security ③
Mise en œuvre de la fonction d'authentification avec Spring Security ①
Certification / autorisation avec Spring Security & Thymeleaf
Authentification DB avec Spring Security et hachage avec BCrypt
Obtenez une authentification BASIC avec Spring Boot + Spring Security
À propos de l'authentification Spring Security
Créez votre propre utilitaire avec Thymeleaf avec Spring Boot
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Fonction de connexion avec Spring Security
Ajouter un module avec Spring Boot
Authentification / autorisation de mémo d'utilisation de Spring Security
Créez votre propre échantillonneur avec JMeter
Tutoriel Spring Boot à l'aide de l'authentification Spring Security
Découvrez l'architecture de traitement de l'authentification Spring Security
Une erreur 404 se produit lors du test de l'authentification par formulaire avec Spring Security
Comment créer votre propre contrôleur correspondant à / error avec Spring Boot
Définissez le résultat de l'authentification Spring Security sur JSON
Spring Security appelle mon AuthenticationProvider deux fois et l'authentification échoue
Utiliser les balises JSP Spring Security avec FreeMarker
Comment Spring Security fonctionne avec Hello World
Hash des mots de passe avec Spring Boot + Spring Security (avec sel, avec étirement)
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Ajoutez des packages à votre projet avec Swift PM
Créez un serveur Spring Cloud Config en toute sécurité avec Spring Boot 2.0
[Java] Trier ArrayList avec des éléments de votre propre classe
Exécutez un traitement arbitraire après l'authentification de base avec Spring Boot.
Spring Boot avec les paramètres du filtre de sécurité Spring et les points addictifs
Appelez votre propre classe créée sous lib avec Rails
Gérer le mot de passe haché avec BCryptPasswordEncoder de Spring Security en Perl
Créez un site de démonstration simple avec Spring Security avec Spring Boot 2.1
Essayez de travailler avec Keycloak en utilisant Spring Security SAML (Spring 5)
Créer une authentification par clé API pour l'API Web dans Spring Security
Un nouvel employé a tenté de créer une fonction d'authentification / autorisation à partir de zéro avec Spring Security