Autenticação de usuários em memória
Implemente autenticação básica usando dados de usuários armazenados em memória, configurando diretamente nomes de usuário, senhas e funções.
Autenticação de usuários em memória é uma aula grátis de Spring Security 6 & JWT Authentication no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Spring Security 6 & JWT Authentication, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Spring Security 6 & JWT Authentication inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Welcome to In-Memory Auth
The fastest way to add real users: in-memory authentication. You define accounts straight in code — perfect for tests and tiny apps.
Why In-Memory Authentication?
In-memory authentication shines for prototyping, learning, and small apps where you don't need users persisted to a database.
Core: UserDetailsService
The UserDetailsService interface is the core of authentication — its job is to load user data. In-memory mode loads it from accounts you define in code.
Meet UserDetails
UserDetailsService returns a UserDetails object holding the username, an always-encoded password, and the authorities that define what the user can access.
Defining a User with Builder
Use User.builder() to create a UserDetails: set the username, an encoded password, and roles. The code shows a minimal user.
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
public class UserBuilderDemo {
public static void main(String[] args) {
// A PasswordEncoder is essential for security
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
UserDetails user = User.builder()
.username("alice")
.password(passwordEncoder.encode("secret")) // Encode the password!
.roles("USER") // Short for ROLE_USER
.build();
System.out.println("Username: " + user.getUsername());
System.out.println("Password (encoded): " + user.getPassword());
System.out.println("Authorities: " + user.getAuthorities());
}
}The InMemoryUserDetailsManager
The InMemoryUserDetailsManager is the default UserDetailsService for in-memory auth, storing your UserDetails in a simple map. Pass users to its constructor.
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
public class InMemoryManagerDemo {
public static void main(String[] args) {
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
UserDetails user1 = User.builder()
.username("bob")
.password(passwordEncoder.encode("pass123"))
.roles("USER")
.build();
UserDetails admin = User.builder()
.username("admin")
.password(passwordEncoder.encode("adminpass"))
.roles("ADMIN", "USER") // Multiple roles
.build();
// Create the manager with our users
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(user1, admin);
// Try to load a user
System.out.println("Loaded user: " + manager.loadUserByUsername("bob").getUsername());
System.out.println("Loaded admin: " + manager.loadUserByUsername("admin").getUsername());
}
}Configuring the Manager Bean
In Boot, expose the InMemoryUserDetailsManager as a @Bean and Spring picks it up automatically. Just remember to also provide a PasswordEncoder bean.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@Configuration
public class SimpleSecurityConfig {
@Bean
public UserDetailsService inMemoryUsers(PasswordEncoder passwordEncoder) {
UserDetails user = User.builder()
.username("tester")
.password(passwordEncoder.encode("testpass"))
.roles("VIEWER")
.build();
return new InMemoryUserDetailsManager(user);
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
// Other HttpSecurity configurations would go here...
}Roles vs. Authorities
Use roles and Spring auto-prefixes them with ROLE_ (USER becomes ROLE_USER). For fine-grained permissions, .authorities() takes the full string as-is.
Multiple Users and Roles
Add as many in-memory users as you need, each with different roles, to test access-control scenarios — just pass more UserDetails to the manager.
Quick Check
You've learned how to set up users in memory. Which Spring Security component is specifically used to manage and retrieve these in-memory user details?
Recap: In-Memory Auth
Recap: in-memory authentication lets you define users via User.builder(), store them in InMemoryUserDetailsManager, encode passwords, and assign roles.
Perguntas Frequentes
A aula “Autenticação de usuários em memória” é grátis?
Sim — o texto completo de “Autenticação de usuários em memória” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Spring Security 6 & JWT Authentication, atualize para CoddyKit PRO. O curso de Spring Security 6 & JWT Authentication inclui 4 aulas no total.
O que vou aprender em “Autenticação de usuários em memória”?
Implemente autenticação básica usando dados de usuários armazenados em memória, configurando diretamente nomes de usuário, senhas e funções. Você pratica Spring Security 6 & JWT Authentication com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Spring Security 6 & JWT Authentication?
Nenhuma experiência prévia é necessária. Spring Security 6 & JWT Authentication no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Autenticação de usuários em memória”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Spring Security 6 & JWT Authentication?
Sim. Cada aula de Spring Security 6 & JWT Authentication inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Introdução ao Spring Security 6
- Configuração do projeto e dependências
- Autenticação de usuários em memória
- Entendendo a cadeia de filtros do Spring Security