Prefacio
Este artículo le presenta principalmente el método de cifrado de Spring Security 5.x que es compatible con múltiples contraseñas. Se comparte para su referencia y aprendizaje. No diré mucho a continuación, echemos un vistazo a la introducción detallada juntos.
1. Spring Security PasswordEncoder
Spring Security 5 no requiere el método de cifrado de las contraseñas, pero el prefijo de la contraseña del usuario indica el método de cifrado, como:
Spring Security recomienda oficialmente usar un método de cifrado BCrypt más seguro.
Esto permite que se admitan múltiples métodos de cifrado en el mismo sistema, lo que facilita la migración de usuarios. El método de cifrado admitido por Spring Security 5 se define en contraseñas de factores de contraseña:
public class PasswordEncoderFactories {public static PasswordEncoder CreateLegatingPassWordEncoder () {String EncodingId = "BCrypt"; MAP <String, PasswordEncoder> Encoders = new Hashmap (); Encoders.put (EncodingId, new BCryptPassWordEncoder ()); Encoders.put ("LDAP", nuevo LDAPSHAPASSWORDECHODER ()); Encoders.put ("MD4", nuevo MD4PassWordEncoder ()); Encoders.put ("MD5", nuevo MessageDigestPasswordEncoder ("MD5")); Encoders.put ("NOOP", NOOPPASSWORDECODER.GETINSTANCE ()); Encoders.put ("PBKDF2", nuevo PBKDF2PassWordEncoder ()); encoders.put ("scrypt", new ScryptPasswordEncoder ()); Encoders.put ("SHA-1", New MessageDigestPasswordEncoder ("SHA-1")); Encoders.put ("SHA-256", New MessageDigestPasswordEncoder ("SHA-256")); Encoders.put ("SHA256", nuevo StandardPassWordEncoder ()); devolver nuevo DelegatingPassWordEncoder (EncodingIdid, codificadores); } PRIVADA PASCONTACODERFactories () {}}2 Prueba
2.1 pom.xml
<? xml versión = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modelversion> <MoupRoupid> com.hfcsbc </groupid> <arifactid> <versión> 0.0.1-snapshot </versewer> <packaging> jar </packaging> <name> Security </name> <Scuidtion> Proyecto de demostración para el arranque de Spring </cription> <Parent> <MoupRupid> org.springframework.boot </groupid> <artifactID> spring-boot-sharter-parent </artifactid> <versión> 2.0.0.m7 </versión> <sartifactid> spring-boot-sharter-parent </artifactid> <versión> 2.0.0. lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <Spendency> <ProupId> org.springframework.boot </groupid> <artifactID> spring-boot-starter-security </artifactid> </pepertency> <pendency> <grupo) <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <build> <plugins> <glugin> <MoupRupid> org.springframework.boot </proupid> <artifactid> spring-boot-maven-plugin </artifactid> </glugin> </glugins> </built> <Repositories> <Repository> <Did> Spring-Snapshots </did> <Name> Springshots </name> <Ull> https://repo.spring.io/snapshot </sul> <Snapshots> <Edabled> true </habilitado> </snstapshots> </repositorio> <repositorio> <id> spring-milestones </d id> <name> spring milil <Snstapshots> <Enedably> FALSE </Engabled> </snstapshots> </ Repository> </ Repository> </ Repository> </Repository> <PluginRepository> <id> spring-snapshots </sid> <name> Spring Snapshots </name> <url> https://repo.spring.io/snapshot </url> <sapshots> <sapshots> <sapshots> <Enedably> true </habilitado> </snstapshots> </pluginRepository> <PluginRepository> <id> Spring-Milestones </id> <Name> Spring Milestones </name> <URL> https://repo.spring.io/milestone </ url> <napshots> </Ensing> </Engabled> </snapshots </snapsshotshots </pluginRepository> </pluginRepositories> </proyecto>
Prueba de 2.2
Spring Security 5.x usa el cifrado BCRYPT de forma predeterminada
@Slf4jpublic domainuserDetailsService {public static void main (string [] args) {contraseña en contraseña contraseña = contraseña en contraseña. String codeD = contraseñaCoder.Encode ("contraseña"); log.info ("contraseña cifrada:" + encode); log.info ("Comparación de contraseña BCrypt:" + contraseña en la contraseña ("contraseña", codifica)); Cadena md5password = "{md5} 88e2d8cd1e92fd5544c8621508cd706b"; // La contraseña antes de la cifrado md5 es: contraseña log.info ("MD5 Comparación de contraseña:" + contraseña encoder.matches ("contraseña", encode)); }}Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.