Regisztráció a Spring Security-nél - Jelszó kódolás
• A regisztráció folyamata tavaszi biztonsággal
• Regisztráció - Új fiók aktiválása e-mailben
• Tavaszi biztonsági regisztráció - Ellenőrző e-mail újraküldése
• Regisztráció a Spring Security szolgáltatással - Jelszó kódolás (aktuális cikk) • A Registration API RESTful lesz
• Tavaszi biztonság - állítsa vissza jelszavát
• Regisztráció - A jelszó erőssége és szabályai
• Jelszavának frissítése
1. Áttekintés
Ez a cikk a regisztráció kritikus részét tárgyalja - jelszó kódolás - alapvetően nem tárolja a jelszót egyszerű szövegben.
Néhány kódolási mechanizmust támogat a Spring Security - és a cikkhez a BCrypt-et fogjuk használni, mivel ez általában a rendelkezésre álló legjobb megoldás.
A legtöbb egyéb mechanizmus, például a MD5PasswordEncoder és ShaPasswordEncoder gyengébb algoritmusokat használ, és most már elavultak.
2. Határozza meg a Jelszó kódolót
Először az egyszerű BCryptPasswordEncodert definiáljuk babként a konfigurációnkban:
@Bean public PasswordEncoder kódoló () {return new BCryptPasswordEncoder (); }
Régebbi megvalósítások - mint pl SHAPasswordEncoder - megkövetelné, hogy az ügyfél adja meg a sóértéket a jelszó kódolásakor.
A BCrypt azonban belül véletlenszerű sót generál helyette. Ezt fontos megérteni, mert ez azt jelenti, hogy minden hívásnak más eredménye lesz, ezért csak egyszer kell kódolnunk a jelszót.
Ennek a véletlenszerű sótermelésnek a működése érdekében a BCrypt magában a hash értékben tárolja a sót. Például a következő hash értékben:
$ 2a $ 10 $ ZLhnHxdpHETcxmtEStgpI. / Ri1mksgJ9iDP36FmfMdYyVg9g0b2dq
Három mező van elválasztva $ -val:
- A „2a” a BCrypt algoritmus verzióját jelenti
- A “10” az algoritmus erősségét jelenti
- A „ZLhnHxdpHETcxmtEStgpI.” része valójában a véletlenszerűen előállított só. Alapvetően az első 22 karakter só. Az utolsó mező fennmaradó része a sima szöveg tényleges kivonatolt változata
Ne feledje továbbá, hogy a BCrypt az algoritmus 60 hosszúságú karakterláncot generál, ezért meg kell győződnünk arról, hogy a jelszó egy olyan oszlopban lesz tárolva, amely befogadja azt. Gyakori hiba, hogy létrehoz egy eltérő hosszúságú oszlopot, majd megszerez egy Érvénytelen felhasználónév vagy jelszó hiba a hitelesítéskor.
3. Regisztrációkor kódolja a jelszót
Most fogjuk használni a PasswordEncoder miénkben UserService a jelszó kivonása a felhasználói regisztráció során:
3.1. Példa - A UserService Törli a jelszót
@Autowired private PasswordEncoder passwordEncoder; @Orride public User registerNewUserAccount (UserDto accountDto) dobja az EmailExistsException {if (emailExist (accountDto.getEmail ())) {dobja új EmailExistsException ("Van egy fiók azzal az e-mail címmel:" + accountDto.getEmail ()); } Felhasználó felhasználó = új Felhasználó (); user.setFirstName (accountDto.getFirstName ()); user.setLastName (accountDto.getLastName ()); user.setPassword (passwordEncoder.encode (accountDto.getPassword ())); user.setEmail (accountDto.getEmail ()); user.setRole (új szerep (Integer.valueOf (1), felhasználó)); return repository.save (felhasználó); }
4. Kódolja a jelszót a hitelesítéskor
Most kezeljük a folyamat másik felét, és kódoljuk a jelszót, amikor a felhasználó hitelesít.
Először be kell adnunk a korábban definiált jelszó kódoló babot a hitelesítés-szolgáltatónkba:
@Autowired private UserDetailsService userDetailsService; @Bean public DaoAuthenticationProvider authProvider () {DaoAuthenticationProvider authProvider = új DaoAuthenticationProvider (); authProvider.setUserDetailsService (userDetailsService); authProvider.setPasswordEncoder (kódoló ()); return authProvider; }
A biztonsági konfiguráció egyszerű:
- injektáljuk a felhasználói részletek szolgáltatás megvalósítását
- meghatározunk egy hitelesítési szolgáltatót, amely hivatkozik a részletek szolgáltatásunkra
- engedélyezzük a jelszó kódolót is
És végül nekünk kell hivatkozás erre a hitelesítésszolgáltatóra biztonsági XML konfigurációnkban:
Vagy ha Java konfigurációt használ:
@Configuration @ComponentScan (basePackages = {"com.baeldung.security"}) @EnableWebSecurity nyilvános osztály A SecSecurityConfig kiterjeszti a WebSecurityConfigurerAdapter {@Override protected void configure (AuthenticationManagerBuilder auth) } ...}
5. Következtetés
Ez a gyors bemutató folytatja a Regisztráció sorozatot, bemutatva, hogyan kell helyesen tárolni a jelszót az adatbázisban az egyszerű, de nagyon hatékony BCrypt megvalósítás segítségével.
A teljes végrehajtása A regisztráció a Spring Security oktatóanyagával megtalálható a GitHub oldalon.
Következő » A Registration API RESTful lesz « Előző tavaszi biztonsági regisztráció - Ellenőrző e-mail újraküldése