0Pricing
Spring Security 6 & JWT Authentication · Lección

Autenticación de usuarios en memoria

Implemente autenticación básica mediante detalles de usuario almacenados en memoria, configurando directamente nombres de usuario, contraseñas y roles.

Autenticación de usuarios en memoria es una lección gratuita de Spring Security 6 & JWT Authentication en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Spring Security 6 & JWT Authentication, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Spring Security 6 & JWT Authentication incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en 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.

Preguntas frecuentes

¿La lección «Autenticación de usuarios en memoria» es gratis?

Sí — el texto completo de «Autenticación de usuarios en memoria» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Spring Security 6 & JWT Authentication, actualiza a CoddyKit PRO. El curso de Spring Security 6 & JWT Authentication incluye 4 lecciones en total.

¿Qué aprenderé en «Autenticación de usuarios en memoria»?

Implemente autenticación básica mediante detalles de usuario almacenados en memoria, configurando directamente nombres de usuario, contraseñas y roles. Practicas Spring Security 6 & JWT Authentication con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Spring Security 6 & JWT Authentication?

No se requiere experiencia previa. Spring Security 6 & JWT Authentication en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Autenticación de usuarios en memoria»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Spring Security 6 & JWT Authentication?

Sí. Cada lección de Spring Security 6 & JWT Authentication incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Introducción a Spring Security 6
  2. Configuración del proyecto y dependencias
  3. Autenticación de usuarios en memoria
  4. Comprender la cadena de filtros de Spring Security
← Volver a Spring Security 6 & JWT Authentication