<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vadym Dudnyk</title>
    <description>The latest articles on DEV Community by Vadym Dudnyk (@vadym_dudnyk).</description>
    <link>https://dev.to/vadym_dudnyk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F65979%2Fc713ad71-dd70-4913-93a8-01d87f89b1c0.jpg</url>
      <title>DEV Community: Vadym Dudnyk</title>
      <link>https://dev.to/vadym_dudnyk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vadym_dudnyk"/>
    <language>en</language>
    <item>
      <title>Password encoder in Spring Boot 2</title>
      <dc:creator>Vadym Dudnyk</dc:creator>
      <pubDate>Sat, 16 Jun 2018 18:48:28 +0000</pubDate>
      <link>https://dev.to/vadym_dudnyk/password-encoder-in-spring-boot-2-1cjh</link>
      <guid>https://dev.to/vadym_dudnyk/password-encoder-in-spring-boot-2-1cjh</guid>
      <description>

&lt;p&gt;Hi, Since Spring boot 2.x there was a few changes in Spring Security, so, I will show you how to encode passwords in Spring boot 2 (which comes with new Spring Security 5).&lt;/p&gt;

&lt;p&gt;Most important change: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;DelegatingPasswordEncoder&lt;/code&gt; it's the new default password encoder (which not tie you to a specific encoder implementation, like &lt;code&gt;BcryptPasswordEncoder&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;NoOpPasswordEncoder&lt;/code&gt; is considered as deprecated now.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to create password encoder bean:&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@Bean&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;PasswordEncoder&lt;/span&gt; &lt;span class="nf"&gt;passwordEncoder&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;PasswordEncoderFactories&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;createDelegatingPasswordEncoder&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;How to encode a password (Bcrypt implementation will be used underneath):&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight java"&gt;&lt;code&gt;        &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;encodedPassword&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;passwordEncoder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;encode&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rawPassword&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;How the encoded password looks like:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;{bcrypt}$2a$10$GJpYuiP0cDOcE.WRlctpHOC1ROz35m9jCJ5BXFoMgnzkUjsxc6yHS&lt;/code&gt;&lt;br&gt;
Where '{bcrypt}' determines which encoder used for encoding.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to check if raw password matches encoded:&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;passwordEncoder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;matches&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rawPassword&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encodedPassword&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;BadCredentialsException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Bad password"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;




</description>
      <category>spring</category>
      <category>java</category>
      <category>springboot2</category>
    </item>
  </channel>
</rss>
