Detaillierte Erklärung und Beispiele zur Passwortverschlüsselung für Datenbankkonten

Detaillierte Erklärung und Beispiele zur Passwortverschlüsselung für Datenbankkonten

Detaillierte Erklärung und Beispiele zur Passwortverschlüsselung für Datenbankkonten

Datenbankkonten und Passwörter werden in der Datenbank häufig verschlüsselt, es gibt jedoch ein Problem: Wenn Sie UserService zum Verschlüsseln des Passworts verwenden, muss auch Spring Security synchron konfiguriert werden, da die in Spring Security überprüfte Verschlüsselungsmethode separat konfiguriert wird. wie folgt:

<Authentifizierungs-Manager>
  <Authentifizierungsanbieter Benutzerdienst-Ref="Benutzerdetaildienst">
    <Passwort-Encoder ref="PasswortEncoder" />
  </Authentifizierungsanbieter>
</Authentifizierungsmanager>

<beans:bean class="com.sapphire.security.MyPasswordEncoder" id="passwordEncoder">
  <beans:constructor-arg value="md5"></beans:constructor-arg>
</beans:Bohne>

Wie in der obigen Konfigurationsdatei gezeigt, ist passwordEncoder der Ort, an dem Spring Security das Konto verschlüsselt und verifiziert.

Nach dem Abfangen sucht Spring Security zunächst nach dem Benutzer, findet den entsprechenden Benutzer über den selbst definierten userDetailService und führt dann vom Framework eine Kennwortübereinstimmungsüberprüfung durch.

Nachdem der Benutzer vom userDetailService abgerufen wurde, wird der im Framework definierte DaoAuthenticationProvider aufgerufen und anschließend in die Authentifizierungsmethode gesprungen.

Diese Methode führt zwei Prüfungen durch:

* preAuthenticationChecks: Es überprüft hauptsächlich, ob die Benutzerinformationen abgelaufen sind usw. Die aufrufende Methode ist in userDetail definiert.
* additionalAuthenticationChecks: Dies ist der Prozess der Benutzernamen- und Passwortüberprüfung.

PasswordEncoder ist die Bean, die in unsere XML eingefügt wurde, also rufen wir den PasswordEncoder auf, den wir selbst vervollständigt haben.

öffentliche Klasse MyPasswordEncoder erweitert MessageDigestPasswordEncoder {
  öffentlicher MyPasswordEncoder (String-Algorithmus) {
   Super(Algorithmus);
  }

  @Überschreiben
  öffentliches Boolean isPasswordValid(String encPass, String rawPass, Objekt salt) {
   gibt encPass.equals zurück (DigestUtils.md5DigestAsHex (rawPass.getBytes ()));
  }
}

Dies ist eine einfache Version meiner Implementierung. Sie ruft den Verschlüsselungsalgorithmus auf, der mit Spring geliefert wird. Sie ist sehr einfach. Natürlich können Sie auch komplexere Verschlüsselungsmethoden verwenden. Das hängt von Ihnen selbst ab.

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site!

<<:  Detailliertes Tutorial zum Löschen von Linux-Benutzern mit dem Befehl userdel

>>:  Die Fallstricke beim Erlernen von Vue.js

Artikel empfehlen

Detaillierte Erläuterung der Verwendung der MySQL-Verkettungsfunktion CONCAT

In den vorherigen Artikeln wurden die Ersetzungsf...

Erläuterung der Konfiguration und Verwendung der MySQL-Speicher-Engine InnoDB

MyISAM und InnoDB sind die gängigsten Speicher-En...

JS+CSS zur Realisierung einer dynamischen Uhr

In diesem Artikelbeispiel wird der spezifische Co...

Für die Verwendung des Docker-Befehls ist kein Sudo erforderlich

Da der Docker-Daemon an den Unix-Socket des Hosts...

Rundungsvorgang des Datums-/Uhrzeitfelds in MySQL

Inhaltsverzeichnis Vorwort 1. Hintergrund 2. Simu...

Schritte zum Bereitstellen von Ingress-Nginx auf K8s

Inhaltsverzeichnis Vorwort 1. Bereitstellung und ...

Vue implementiert einen einfachen Laufschrifteffekt

In diesem Artikel wird der spezifische Code von V...

Vue implementiert die Drag & Drop-Funktion für Bilder

In diesem Artikelbeispiel wird der spezifische Co...

So zeigen Sie JSON-Daten in HTML an

Hintergrund: Manchmal müssen wir JSON-Daten direk...

js realisiert die Bildschneidefunktion

In diesem Artikelbeispiel wird der spezifische Co...

Mobiles Internet-Zeitalter: Responsive Webdesign ist zum allgemeinen Trend geworden

Wir befinden uns in einer Ära der rasanten Entwick...

Backup zwischen MySQL-Datenbank und Oracle-Datenbank importieren

Importieren Sie die aus der Oracle-Datenbank expo...