[java] 스프링 시큐리티 구성 요소

스프링 시큐리티는 애플리케이션의 인증(Authentication)과 권한 부여(Authorization)에 대한 보안을 제공하는 프레임워크입니다. 다양한 구성 요소를 활용하여 애플리케이션의 보안을 설정할 수 있습니다.

AuthenticationManager

AuthenticationManager는 스프링 시큐리티의 인증 메커니즘을 처리하는 핵심 인터페이스입니다. 인증 요청이 들어오면 AuthenticationManager는 해당 인증 정보를 기반으로 인증 과정을 처리합니다. 기본적으로 인증 매니저는 사용자 이름과 암호를 검증하는 인증 과정을 수행합니다.

UserDetailsService

UserDetailsService는 인증 매니저에게 사용자 정보를 제공하는 인터페이스입니다. 사용자 정보는 데이터베이스, LDAP 등 다양한 소스에서 가져올 수 있습니다. UserDetailsService를 구현하여 애플리케이션에 맞는 사용자 정보를 제공할 수 있습니다.

PasswordEncoder

PasswordEncoder는 사용자의 암호를 암호화 및 복호화하는 인터페이스입니다. 스프링 시큐리티에서는 사용자 암호를 평문으로 저장하지 않기 위해 PasswordEncoder를 사용합니다. 여러 가지 암호화 알고리즘을 제공하며, 개발자는 필요에 따라 적절한 알고리즘을 선택할 수 있습니다.

UserDetails

UserDetails는 인증에 필요한 사용자 정보를 나타내는 인터페이스입니다. 사용자의 권한 정보, 비밀번호, 계정이 만료되었는지 여부 등의 세부 정보를 포함합니다. UserDetailsService는 이 UserDetails 인터페이스를 구현한 객체를 반환하여 인증 과정에 사용합니다.

AccessDecisionManager

AccessDecisionManager는 스프링 시큐리티에서 권한 부여 결정을 하는 인터페이스입니다. 인증된 사용자의 권한과 요청된 리소스의 권한을 비교하여 접근을 허용할지 여부를 결정합니다. 다양한 권한 부여 전략을 구현하여 애플리케이션의 보안 정책을 설정할 수 있습니다.

참고 문서