Préface
Cet article vous présente principalement la méthode de chiffrement de Spring Security 5.x qui est compatible avec plusieurs mots de passe. Il est partagé pour votre référence et votre apprentissage. Je ne dirai pas beaucoup ci-dessous, jetons un coup d'œil à l'introduction détaillée ensemble.
1. Spring Security MotwordCoder
Spring Security 5 ne nécessite pas la méthode de chiffrement des mots de passe, mais le préfixe du mot de passe utilisateur indique la méthode de chiffrement, telle que:
Spring Security recommande officiellement d'utiliser une méthode de cryptage BCrypt plus sécurisée.
Cela permet de prendre en charge plusieurs méthodes de chiffrement dans le même système, ce qui facilite la migration des utilisateurs. La méthode de chiffrement prise en charge par Spring Security 5 est définie dans PasswordEncoderFactories:
classe publique PasswordEncoderFactories {public static passwordEncoder CreatedElegatingPassWordOner () {String EncodingId = "bcrypt"; Map <string, mot de passe encoder> Encoders = new HashMap (); Encoders.put (EncodingId, new BcryptPasswordEncoder ()); Encoders.put ("ldap", nouveau ldapshapassword encoder ()); Encoders.put ("MD4", nouveau MD4PasswordEncoder ()); Encoders.put ("MD5", new MessagediGestPasswordEncoder ("MD5")); Encoders.put ("NOOP", NOOPPasswordEncoder.getInstance ()); Encoders.put ("pbkdf2", nouveau pbkdf2passwordEncoder ()); Encoders.put ("scrypt", new scryptpasswordOncoder ()); Encoders.put ("Sha-1", new MessagediGestPasswordEncoder ("Sha-1")); Encoders.put ("SHA-256", new MessagediGestPasswordEncoder ("SHA-256")); Encoders.put ("SHA256", nouveau standardPasswordCcoder ()); Renvoie un nouveau déléguéPasswordEncoder (EncodingId, Encoders); } Private MotwordEncoderFactories () {}}2 test
2.1 pom.xml
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: ScheMalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion> 4.0.0 </modeVactid> Section </preifactid> COM.HFCSBC </pragid> <eRtifActid> Section </ ArtiFact> COM.HFCSBC </pragid> <artifactive> <version> 0.0.1-snapshot </ version> <packaging> jar </packaging> <name> Security </name> <description> Projet de démonstration pour Spring Boot </ Description> <parent> <proupId> org.springframework.boot </prouprid> <Artifactid> Spring-Boot-starter-Parent </lefactive> <version> 2.0.0. <! - Recherche parent du référentiel -> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reportting.outputending> utf-8 </project.report.outputerSice> <java.version> 1.8 </java.version> <dependency> <proupId> org.springframework.boot </proupId> <ArtifActid> printemp-boot-starter-security </ artifactid> </pedigency> <dependency> <prouprid> org.springframework.boot </prowprid> <ptetifactid> printemps> </specity> </stifactid> <scope> Tester> <dependency> <proupId> org.springFramework.Security </proupId> <Artifactid> Spring-Security-test </lefactive> <ccope> test </cope> </dEpendency> <Dedency> <proupId> org.projectlombok </romproudID> <e-artifiCtid> lombok </letifactid> </dependency> </presences> <plucins> <plucins> </precins> <harin> <proupId> org.springframework.boot </proupId> <ArtifActid> printemps-boot-maven-plugin </ artifactId> </ plugin> </glugins> </ build> <name> Spring SpringShots </name> <url> https://repo.spring.io/snapshot </url> <napshots> <veabled> true </abled> </napshots> </ Repository> <pawepostory> <id> printemps-milestones </ id> <name> Spring Milestones </name> <url> https://repo.spring.io/mileston </ url> https://repo.spring.io/mileston <Snapshots> <Avelable> False </ Actived> </napshots> </ Repository> </ Repository> </ Repository> </ Repository> <GluginRepository> <Id> Spring-Snapshots </id> <name> Spring Snapshots </ Name> <url> https://repo.spring.io/snaps <fatiabled> true </ enabled> </napshots> </ pluginRepository> <GluginRepository> <id> Spring-Milestones </id> <name> Spring Milestones </ Name> <Url> https://repo.spring.io/Milestone </url> </ snapshots> <compatible> Faux </leted> </ PluginRepository> </ PluginRepositories> </ project>
2.2 Test
Spring Security 5.x utilise le cryptage BCrypt par défaut
@ Slf4jpublic class domainUserserDetailsService {public static void main (string [] args) {mot de passe-netwayencoder = mot de passe encoderfactories.CreateDelegatingPassWordOder (); String encode = PasswordEncoder.encode ("mot de passe"); Log.info ("Mot de passe chiffré:" + Encode); Log.info ("Comparaison de mot de passe bcrypt:" + mot de passe encoder.matches ("mot de passe", encoder)); String md5password = "{md5} 88e2d8cd1e92fd5544c8621508cd706b"; // Le mot de passe avant le cryptage MD5 est: mot de passe log.info ("MD5 Password Comparon:" + mot de passe encoder.matches ("mot de passe", encode)); }}Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.