I am using JDBCUserDetailsManager to create users but when I try to login using the same details, I get Bad credentials error. Not sure what am I doing wrong. Can someone please help me understand what am I missing?
Here is the code I am using:
User table entity
@Entity(name = "users")
@Data
public class UsersEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column
private String username;
@Column
private String password;
@Column
private boolean enabled;
}
Authorities entity:
@Data
@Entity(name = "authorities")
public class AuthoritiesEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name = "username")
private UsersEntity username;
@Column
private String authority;
}
Userdetails service:
@Bean
public UserDetailsService jdbcusers(DataSource dataSource) {
JdbcUserDetailsManager jdbcUserDetailsManager = new JdbcUserDetailsManager(dataSource);
UserDetails user1 = User.withUsername("jdbc1").password(passwordEncoder().encode("password")).build();
UserDetails user2 = User.withUsername("jdbc2").password(passwordEncoder().encode("password")).build();
jdbcUserDetailsManager.createUser(user1);
jdbcUserDetailsManager.createUser(user2);
return jdbcUserDetailsManager;
}
Datasource configuration:
#H2 Database
spring.h2.console.enabled=true
spring.datasource.username=sa
spring.datasource.password=password
spring.datasource.generate-unique-name=false
spring.datasource.name=security-test
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.defer-datasource-initialization=true
spring.datasource.url=jdbc:h2:mem:security-
test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE;