title: Spring Security with OAuth2 and JWT: Encoded password does not look like BCrypt
body: <p>I am trying to implement a spring AuthorizationServer with JWT. I was able to produce JWT tokens and login until I added BCrypt to the mix. Now, when I am trying to login, I get "Bad credentials" from the API. </p>
  
  <p>OAuth2Configuration.java</p>
  
  <pre><code>@Configuration
  @EnableAuthorizationServer
  public class OAuth2Configuration extends AuthorizationServerConfigurerAdapter {
  
      private DataSource dataSource;
      private AuthenticationManager authenticationManager;
      private BCryptPasswordEncoder passwordEncoder;
  
      public OAuth2Configuration(AuthenticationManager authenticationManager) {
          this.authenticationManager = authenticationManager;
          this.dataSource = new Jdbc3PoolingDataSource();
          this.passwordEncoder = new BCryptPasswordEncoder();
      }
  
      @Override
      public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
          security.passwordEncoder(passwordEncoder);
      }
  
      @Override
      public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
          clients.inMemory()
                  .withClient("api-client")
                  .secret("verysecretivesecret")
                  .scopes("READ", "WRITE", "DELETE")
                  .authorizedGrantTypes("implicit", "refresh_tokens", "password", "authorization_code");
      }
  
      @Override
      public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
          endpoints.authorizationCodeServices(authorizationCodeServices())
                  .tokenStore(tokenStore())
                  .tokenEnhancer(jwtTokenEnhancer())
                  .authenticationManager(authenticationManager);
      }
  
      @Bean
      public TokenStore tokenStore() {
          return new JwtTokenStore(jwtTokenEnhancer());
      }
  
      @Bean
      protected JwtAccessTokenConverter jwtTokenEnhancer() {
          return new JwtAccessTokenConverter();
      }
  
      @Bean
      protected AuthorizationCodeServices authorizationCodeServices() {
          return new JdbcAuthorizationCodeServices(dataSource);
      }
  
  }
  </code></pre>
  
  <p>WebSecurityConfig.java </p>
  
  <pre><code>@Configuration
  class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  
      private AccountDetailsService accountDetailsService;
      private BCryptPasswordEncoder passwordEncoder;
      private DataSource dataSource;
  
      WebSecurityConfig(AccountDetailsService accountDetailsService) {
          this.accountDetailsService = accountDetailsService;
          this.dataSource = new Jdbc3PoolingDataSource();
          this.passwordEncoder = new BCryptPasswordEncoder();
      }
  
      @Override
      protected void configure(AuthenticationManagerBuilder auth) throws Exception {
          auth.userDetailsService(accountDetailsService).passwordEncoder(passwordEncoder).and().jdbcAuthentication().dataSource(dataSource);
      }
  }
  </code></pre>
  
  <p>SeedData.java </p>
  
  <pre><code>@Override
  public void run(String... args) throws Exception {      
  
      Stream.of("alan,test").map(x -&gt; x.split(","))
              .forEach(tuple -&gt; {
                  Account user = new Account();
                  user.setUsername(tuple[0]);
                  user.setPassword(new BCryptPasswordEncoder().encode(tuple[1]));
                  user.setEmail(tuple[0]);
                  user.setRoles(Collections.singletonList(role));
                  user.setActive(true);
                  this.accountRepository.save(user);
              });
  }
  </code></pre>
  
  <p>Thanks for your help.</p>