본문 바로가기
책을 읽겠습니다!/Spring Security in Action

[Spring Security in Action] 3장 사용자 관리

by Unagi_zoso 2023. 9. 20.

UserDetailsService를 공부하자

  • 스프링 시큐리티에서 사용자를 기술하는 UserDetails
  • 사용자가 실행할 수 있는 작업을 정의하는 GrantedAuthority
  • UserDetailsService 계약을 확장하는 UserDetailsManager. 상속된 동작 외에 사용자 만들기. 사용자의 암호 수정이나 삭제 등의 작업도 지원

이번 장에서 다음을 배운다

  • 스프링 시큐리티에 있는 구현과 이를 이용하는 방법
  • 계약을 위한 맞춤형 구현을 정의하는 방법과 시기
  • 실제 애플리케이션에서 볼 수 있는 인터페이스를 구현하는 방법
  • 이러한 인터페이스 이용의 모범 사례

스프링 시큐리티가 사용자 정의를 이해하는 방법

3.1 스프링 시큐리티의 인증 구현

3.1에 스프링 시큐리티의 인증 흐름이 나온다. 스프링 시큐리티가 구현하는 인증 프로세스의 근간이며 모든 스프링 시큐리티 구현이 이에 의존하므로 정확히 이해하자.

UserDetailsService와 PasswordEncoder는 종종 사용자 관리 부분이라고 불린다. 이번 장에선 UserDetailsService를 볼 것이다.

사용자 관리를 위해서 UserDetailsService 및 UserDetailsManager 인터페이스를 이용한다. UserDetailsService는 사용자 이름을 사용자를 검색하는 역할만 한다. 이 작업은 프레임워크가 인증을 완료하는데 반드시 필요한 유일한 작업이다.
UserDetailsManager는 대부분의 애플리케이션에 필요한 사용자 추가, 수정, 삭제 작업을 추가한다. 두 계약 간의 분리는 인터페이스 분리 원칙의 훌륭한 예다.
인터페이스를 분리하면 앱에 필요 없는 동작을 구현하도록 프레임워크에서 강제하지 않기 때문에 유연성이 향상된다.
사용자를 인증하는 기능만 필요한 경우 UserDetailsService 계약만 구현하면 필요한 기능을 제공할 수 있다.
사용자를 관리하려면 UserDetailsService 및 UserDetailsManager 구성 요소에 사용자를 나타내는 방법이 필요하다.

UserDetails 계약을 구현해서 프레임워크가 이해할 수 있게 사용자를 기술해야한다. 스프링 시큐리티에서 사용자는 사용자가 수행할 수 있는 작업을 나타내는 이용 권리의 집합을 가진다.

이는 다음에 배운다. 사용자가 수행할 수 있는 작업을 GrantedAuthority 인터페이스로 나타낸다는 것만 알자. 이를 권한이라 하며 사용자는 하나 이상의 권한을 가진다.

사용자 관리를 수행하는 구성 요소 간의 종속성. UserDetailsService는 사용자 이름으로 찾은 사용자 세부 정보를 반환한다. UserDetails 계약은 사용자를 기술한다. 사용자는 GrantedAuthority 인터페이스로 나타내는 권한을 하나 이상 가진다. UserDetailsManager 계약은 UserDetailsService를 확장해서 암호 새엉, 삭제, 변경 등의 작업을 추가한다.

 

사용자 기술하기

댓글