[JAVA] SpringSecurity Ich war süchtig danach, mich mit einem Hash-Passwort anzumelden (gelöst)

Umgebung

Was ich machen wollte

Es handelt sich um einen Anmeldevorgang mit der auf dem Bildschirm eingegebenen ID und dem Kennwort. Da das Kennwort gehasht und in der Benutzertabelle der Datenbank gespeichert ist, musste das eingegebene Kennwort mit dem in der Datenbank gespeicherten Hashwert verglichen werden.

Ich war süchtig nach

Die Authentifizierung ist NG, wenn versucht wird, sich mit dem Konto anzumelden, das in der Benutzertabelle gespeichert werden soll. Wenn Sie den Hashing-Prozess entfernen und sich im Klartext anmelden, ist die Authentifizierung in Ordnung.

Ursache

Ich habe eine solche Quelle geschrieben.

WebSecurityConfig.java(Vor der Korrektur)


@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

	@Autowired
	UserDetailsServiceImpl userDetailsService;

    /**~ Ausgelassen ~*/

	@Bean
	PasswordEncoder passwordEncoder() {
		return new BCryptPasswordEncoder();
	}

	@Override
	protected void configure(AuthenticationManagerBuilder auth) throws Exception {
		auth.userDetailsService(userDetailsService);
	}

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService)
            .passwordEncoder(passwordEncoder());
    }
}

Als ich den Artikel über die Spring-Anmeldeauthentifizierung googelte, wurde geschrieben, dass die meisten Websites die Kennwortcodierungsmethode in der Methode "configureGlobal" festlegen. Ich mache genau das, was auf der Seite steht, auf die ich mich beziehe! ?? Wenn du denkst Anscheinend wurde es durch die Einstellungen in der "configure" -Methode überschrieben.

  1. Mit der configureGlobal-Methode festlegen
  2. Mit der Konfigurationsmethode einstellen

Es scheint, dass es die Verarbeitungsreihenfolge war. Ich verstehe es nicht sehr detailliert, deshalb dachte ich, ich sollte den Lebenszyklus des Frühlings kennen.

WebSecurityConfig.java(Überarbeitet)


@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

	@Autowired
	UserDetailsServiceImpl userDetailsService;

    /**~ Ausgelassen ~*/

	@Bean
	PasswordEncoder passwordEncoder() {
		return new BCryptPasswordEncoder();
	}

    /**~ Konfigurationsmethode löschen ~*/

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService)
            .passwordEncoder(passwordEncoder());
    }
}

Recommended Posts

SpringSecurity Ich war süchtig danach, mich mit einem Hash-Passwort anzumelden (gelöst)
Ich war süchtig nach Unit-Tests mit dem Pufferoperator in RxJava
Ich war süchtig danach, onActivityResult () mit DialogFragment zu machen
Ich war süchtig nach NoSuchMethodError in Cloud-Endpunkten
Wovon ich süchtig war, als ich eine Spring Boot-Anwendung mit VS Code entwickelte
Beachten Sie, dass ich süchtig nach Stapelverarbeitung mit Spring Boot war
Ich war süchtig danach, default_url_options mit der Einführung von Rails zu setzen
Was ich mit der Redmine REST API süchtig gemacht habe
Ich war seltsamerweise süchtig danach, Javas Stream-API mit Scala zu verwenden
Eine Geschichte, die mich während des Komponententests von der impliziten Typkonvertierung von ActiveRecord abhängig machte
Ich war süchtig nach WSl, als ich versuchte, mit Vue.js eine Entwicklungsumgebung für Android-Anwendungen zu erstellen
Ich war süchtig danach, sbt zu starten
[Circle CI] Eine Geschichte, der ich bei Start Building verfallen war
Ein Hinweis, als ich süchtig danach war, Ubuntu auf WSL1 in WSL2 zu konvertieren
Wovon ich süchtig war, als ich die Google-Authentifizierung mit Rails implementierte
Als ich versuchte, ein Composer-Update im Docker-Container durchzuführen, wurde ich wütend auf proc_open (): fork failed
Eine Geschichte, der ich beim Testen der API mit MockMVC verfallen war
Eine Geschichte, der ich mit der automatischen Starteinstellung von Tomcat 8 unter CentOS 8 zweimal verfallen war
Ich war süchtig nach einem einfachen Test von Jedis (Java-> Redis-Bibliothek)
Ich möchte im Dialogfeld mehrere Elemente mit einem benutzerdefinierten Layout auswählen
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)
Ich war süchtig danach, in @ SpringApplicationConfiguration-> @SpringBootTest umzuschreiben
Ich wollte eine Diashow mit Slick modisch umsetzen.
Ich war süchtig nach der Rollmethode
Ich möchte ein chinesisches (koreanisches) PDF mit dünnen Berichten anzeigen
Ich war süchtig nach dem Spring-Batch-Test
Ich war ein wenig süchtig nach SSH-Verbindung von Mac zu Linux (Ubuntu)
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
[Go To Travel] Ich suchte nach einem Plan mit einer Quo-Karte
Ich war ein wenig süchtig nach dem S3-Prüfsummenvergleich, machen Sie sich also eine Notiz.
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 (Black Magic) ausgeben.
Ich war süchtig nach RXTX mit Sierra
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich habe versucht, den Block mit Java zu brechen (1)
Der Teil, dem ich in "Einführung in Ajax in Java-Webanwendungen" von NetBeans verfallen war
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 1 (API Edition)
Beachten Sie, dass ich von den Einstellungen des Android-Projekts von IntelliJ IDEA abhängig war
Eine Geschichte, nach der ich süchtig war, als ich einen Schlüssel bekam, der automatisch auf MyBatis ausprobiert wurde
Ich möchte eine TraceId in das Protokoll einbetten
Ich war süchtig nach der Aufzeichnung des zugehörigen Modells
Ich möchte ein kleines Symbol in Rails verwenden
Kintone-Klon? Ich war ziemlich süchtig danach, die OSS WebDB-Erweiterung mit Lightsail + Docker zu starten. Notieren Sie sich dies.
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich möchte eine bestimmte Datei mit WatchService überwachen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
[So fügen Sie ein Video mit Rails in haml ein]
Ich möchte eine Funktion in der Rails Console definieren
Ich möchte in RSpec auf einen GoogleMap-Pin klicken
Ein problematischer Hinweis beim Versuch, nginx mit Remote-Containern von vscode zu verwenden
Wie man Arrays mit Java stapelweise initialisiert, wusste ich als Anfänger nicht
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 2 (Client Edition)
Es ist keine große Sache, wenn Sie verstehen, dass ich süchtig danach war, E-Mails mit Java Mail von Exchange Online zu empfangen
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen