일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 객체지향
- 알고리즘
- 모두를 위한 컴퓨터 과학(CS50)
- CS50
- edwith
- WebProgramming
- 상속
- SSAFY 9기
- 삼성청년SW아카데미
- w3schools
- 이진법
- CS 기초지식
- 부스트코스
- CS 기초
- 데이터베이스 모델링
- ERD
- 예외처리
- 모두를 위한 컴퓨터 과학
- Computer Science
- til
- Compute Science
- 관계형 데이터베이스
- CS기초지식
- ssafy
- SW
- Java Programming
- 면접을 위한 CS 전공지식 노트
- exception
- java
- 기초프로그래밍
- Today
- Total
Joslynn의 하루
Spring Security_221118 본문
웹보안
: 사용자가 웹 어플리케이션을 접속하면 허가된 사용자만 접근 할 수 있도록 제한하기 위해서 현재 사용자가 누구 인지 확인이 필요함.
: 보통 웹 어플리케이션에서는 로그인을 통해 인증을 수행하여 로그인 성공하면 인증정보를 세션이나 쿠키 같은 곳에 보관하고 이후 요청에서는 동일 인증정보를 이용해서 사용자가 누구인지 식별함.
: 일단 사용자가 누구인지 식별하면 그 사용자가 현재 기능을 사용할 수 있는지 여부를 검사함.( 웹에서는 URL별로 접근 권한을 부여 함) – Role개념
인증(Authentication)
: 현재 사용자가 누구인지 확인하는 과정으로 일반적인 웹 어플리케이션 아이디/암호를 이용해서 인증을 처리
1) 크리덴션(Credential-자격) 기반 인증
2) 이중 인증(Two-factor authentication)
3) 물리적 인증 ex) 지문, 페이스, 동공...
인가(Authorization)
: 현재 사용자가 접근하려는 자원에 대한 권한이 있는지 확인 절차가 필요한데, 특정 대상(URL, 기능)을 사용(접근)할 권한이 있는지 검사하는 절차.( 항상 인증 선행 프로세스가 필요하다)
1) 부여된 권한(Granted Authority)
2) 리소스 권한(Intercept)
인증 방식
: 세션,쿠키 방식 : 사용자의 정보를 세션에 저장하여 서버에 관리
: 토큰(jwt - JSON WEB TOKEN) 방식 : 사용자의 정보를 JSON객체로 안전하게 전송하기 위한 방법
: 다른 채널을 통해 인증(Oauth) : 로그인 open API
Spring Security 특징
: PasswordEncoder의 종류
- BCryptPasswordEncoder : 해시함수를 사용한 구현체. 단순히 해시를 하는 것 뿐만 아니라 Salt를 넣는 작업까지 함으로 입력값이 같음에도 매번 다른 encoded 된 값이 나온다.
- DelegatingPasswordEncoder : PasswordEncoder를 여러 개 선언 한뒤, 상황에 맞게 골라 쓸 수 있도록 지원
- SCryptPasswordEncoder,
- Pbkdf2PasswordEncoder
Sping Security는 inmemory제공 → 간단한 정보들은 DB 없이도 Spring Security 자체에서 저장 가능