스프링 시큐리티
스프링 시큐리티는 스프링에 login을 처리하는 모듈이다.
같은 시큐리티 기반이라도 코딩이 버전별로, 로그인방식에 따라 모두 다르다.
시큐리티는 방대한 스프링 모듈이다.
로그인의 방식
- 시큐리티 없는 일반로그인 (일반세션 사용)
- 시큐리티 일반로그인 (시큐리티 세션 사용)
- 시큐리티 JWT 로그인 (서버가 다를 때)
- 시큐리티 OAuth2방식 로그인(제 3자 인증로그인)
- SSO로그인
용어
- 인증(Authentication) - 로그인 된 사람
- 권한(Role) - 로그인 된 사람 + role(권한)이 있는사람
- 인가(Authorization) - 권한을 부여하는 행위
- 사용자가 로그인 정보와 함께 인증 요청을 한다.(Http Request)
- AuthenticationFilter(필터)가 요청을 가로채고, 가로챈 정보를 통해 UsernamePasswordAuthenticationToken(시큐리티세션이 쓰는 인증토큰)의 인증용 객체를 생성한다.
- AuthenticationManager(인증매니저)의 구현체인 ProviderManager에게 생성한 UsernamePasswordAuthenticationToken(시큐리티세션이 쓰는 인증토큰)객체를 전달한다.
- AuthenticationManager는 등록된 AuthenticationProvider(들)을 조회하여 인증을 요구한다.
- 실제 DB에서 사용자 인증정보를 가져오는 UserDetailsService(서비스영역)에 사용자 정보를 넘겨준다.
- 넘겨받은 사용자 정보를 통해 DB에서 찾은 사용자 정보인 UserDetails(유저정보) 객체를 만든다.
- AuthenticationProvider(들)은 UserDetails를 넘겨받고 사용자 정보를 비교한다.
- 인증이 완료되면 권한 등의 사용자 정보를 담은 Authentication(이게 있다면 인증됨)객체를 반환한다.
- 다시 최초의 AuthenticationFilter에 Authentication(이게 있다면 인증됨)객체가 반환된다.
- Authenticaton 객체를 SecurityContext(시큐리티세션) 에 저장한다.
시큐리티 세션의 모형⭐⭐⭐⭐⭐
new 시큐리시세션(new 인증객체(new 유저객체)))
new SecurityContextHolder( new Authentication( new UserDetails() ) )
시큐리티 라이브러리 추가
//시큐리티 버전은 스프링버전에 따라 사용방법이 완전히 다릅니다.
//시큐리티 5버전 => 스프링 부트 2버전 (수업)
//시큐리티 6버전 => 스프링 부트 3버전 (문법이 완전 변경되니 주의)
implementation 'org.springframework.boot:spring-boot-starter-security'
//시큐리티 타임리프에서 사용
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
//시큐리티 테스트
testImplementation 'org.springframework.security:spring-security-test'
- 시큐리티가 처음 설정 되면 모든 요청에 대해서 시큐리가 기본 제공하는 로그인 화면이 보이게 됩니다.
- 기본아이디는 user / 비밀번호는 console창에 비밀번호를 발급합니다.
- 로그아웃의 경로는 /logout이 기본이 됩니다.
- 로그아웃 이후에는 다시 /hello 요청으로 진입이 불가능해 집니다.
로드시 비밀번호 발급
시큐리티 설정파일 만들기
공식문서 https://docs.spring.io/spring-security/reference/5.7/servlet/configuration/java.html
728x90
'Programming > Spring Boot' 카테고리의 다른 글
[Spring Boot] JWT HMAC 암호화 (0) | 2024.05.30 |
---|---|
[Spring Boot] JWT (1) | 2024.05.30 |
[Spring Boot] 어노테이션을 활용해 권한 설정하기 (0) | 2024.05.29 |
[Spring Boot] Spring Security 로그인 처리 (1) | 2024.05.29 |
[Spring Boot] Spring Security 설정 (0) | 2024.05.29 |