0
votes

Nécessitait un haricot de type 'org.springframework.security.Authentication.AuthenticationManager' qui n'a pas pu être trouvé. Message de la sécurité du printemps

J'essaie de mettre en œuvre un exemple de démo pour la sécurité du ressort avec le démarrage de printemps pour vérifier l'authentification. J'essaie d'implémenter une séance d'entraînement de base pour la sécurité du printemps et d'obtenir le message suivant, xxx

ma classe de configuration de sécurité SecurityConfig.java, xxx

Et ma implémentation de baseAuthenticationfilterfilter comme suit, xxx

Comment puis-je résoudre ce problème?


3 Réponses :


0
votes

Votre erreur semble être que le authentificationManager code> n'est pas présent comme un haricot de ressort.

Option 1 h1>

enregistrer un authentificationManager code> au printemps Haricot. Tout est fourni par le ressort pour le faire directement dans votre classe SecurityConfig Code> en remplaçant le WebSecurityConfigurierAdapter # authentificationManagerbean code> comme expliquer dans le Documentation de IT P>

@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    public CustomAuthenticationProvider authenticationProvider() throws Exception {
        return new CustomAuthenticationProvider(authenticationManager());
    }
}


0 commentaires

0
votes

Je ne suis pas sûr, mais n'udice pas le CustomAuthentinCoVider Implément d'authentificationProvider et authentificationManager est juste un conteneur pour les fournisseurs d'authentification et il semble que vous n'en avez pas.

Vérifiez ce site pour plus d'informations https://www.baeldung.com/spring-security-authentication-Provider


0 commentaires

1
votes

beaucoup de problèmes sont là dans votre code.

  1. (ApplicationContext) authentificationManager () code>
    Vous ne pouvez pas lancer l'authentificationManager à ApplicationContext P> LI>

  2. .Addfilter (nouvelle applicationContexTheaderFilter (...)) code>
    Je ne sais pas pourquoi vous utilisez ApplicationContexTheaderFilter code> pour une application de démonstration simple. P>

    • Vous devez avoir préféré basicauthenticationfilter code> ou même une configuration par défaut simple fournie pour httppsecurity code> avec .httpbasic () code> p>

    • Vous devez avoir préféré userneamepasswordAuthenticationfilter code> ou même une configuration par défaut simple fournie dans httpsecurity code> avec .formlogin () code> p> ul> li>

    • CustomAuthenticanicationProvider étend basicaThenticationfilter code>
      Un fournisseur d'authentification est celui qui implémente une interface authentificationAvider code>. Dans votre cas, la nommage doit être xxxauthfilter code>. P> li>

    • Vous n'avez rien fait dans le code ci-dessous. (Obtenu l'objet d'authentification existant et le réglez-le sans créer d'objet d'authentification valide.) P> li> OL>

      List<GrantedAuthority> authorityList = new ArrayList<>();
      GrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER");
      authorityList.add(authority);
      UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(username, password, authorityList);
      //Note UsernamePasswordAuthenticationToken implements Authentication
      SecurityContextHolder.getContext().setAuthentication(authToken);
      


0 commentaires