Authentication : 인증(자신을 증명)
- 시스템 접근 시, 등록된 사용자인지 여부를 확인하는 것
- ex) 로그인
Authorization : 인가(권한을 부여)
- 접근 후, 인증된 사용자에게 권한을 부여하는 것
- 남에 의해서 자격이 부여된 것
- 권한에 따라 사용 가능한 기능이 제한됨
- ex) 사용자 등급(일반/VIP/관리자)
서버로 들어오는 request를 처리하기 전에 보안체크부터 해야함.
=> Spring security는 서블릿 프로그래밍의 filter 객체를 사용하여 이를 구현한다.
- Security와 관련한 서블릿 필터도 실제로는 연결된 여러 필터들로 구성 되어 있음.
- 스프링 시큐리티에서 말하는 Username 은 다름 아닌 id를 말하는 것
- 일단 시큐리티가 적용되면, Security Filter Chain이 가동되면서 모든 페이지가 '인증'이 필요한 페이지로 동작하게 된다.
- ==> 어떠한 url로의 request 접근도 시큐리티가 낚아챈다.
- Q) 만약 /login 핸들러 추가하고 /login 시도하면?
- A) 시큐리티가 제공하는 기본 로그인 폼이 뜬다. 후에 SecurityConfig가 설정되면 낚아 채지 않게 된다.
- 로그인 폼은 아래의 조건을 만족해야 한다.
- HTTP POST
- loginProcessingUrl(String) 에 제출
- username을 가지고 있어야함.
- password을 가지고 있어야함.
- 현재 로그인 중인 사용자의 정보 보는 법
return : json
=> 로그인 후 "/auth"로 들어가보면...
====> 현재 인증(로그인) 한 정보는 Authentication 객체로 받아올 수 있음.
- 시큐리티가 /loginOk 요청이 오면 낚아채서 로그인을 진행시킴.
- 로그인 진행이 완료되면, 'security session'에 넣어줌
- Security ContextHolder라는 키 값에다가 session 정보를 저장함.
- 여기에 들어갈 수 있는 객체는 Authentication 객체여야 함.
- Authentication 안에 User 정보가 있어야 함.
- User 정보 객체는 UserDetails 타입 객체여야 함.
== > 로그인한 user 정보를 꺼내려면
- Security Session 에서 Authentication 객체를 꺼낸 후,
- 그 안에서 UserDetails 정보를 꺼낸다.
'웹개발 > Spring' 카테고리의 다른 글
[Security] spring security가 제공하는 디폴트 계정의 username, password 변경하기 (0) | 2022.01.10 |
---|---|
[Security] 회원 가입 (0) | 2021.12.13 |
data.sql (0) | 2021.12.07 |
1: N 관계 매핑 (0) | 2021.12.06 |
[JPA] Auto-Generated + PK 만드는 법 (0) | 2021.12.06 |