Skip to content

Commit b6d0897

Browse files
authored
[8주차/미키] 워크북 제출합니다
[8주차/미키] 워크북 제출합니다
2 parents 71c8b0c + e51a0fd commit b6d0897

9 files changed

Lines changed: 116 additions & 0 deletions

File tree

keyword/chapter08/img.png

109 KB
Loading

keyword/chapter08/img_1.png

150 KB
Loading

keyword/chapter08/keyword.md

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
- Spring Security가 무엇인가?
2+
3+
**자바 기반 웹 애플리케이션의 인증과 인가,
4+
그리고 보안 위협으로부터의 보호를 처리하는 강력한 보안 프레임워크**
5+
6+
- 특징
7+
- Filter 기반으로 동작하여 MVC와 구분하여 관리 및 동작한다.
8+
- 어노테이션을 통해 간단하게 설정할 수 있다.
9+
- 세션 & 쿠키방식으로 인증한다.
10+
- 다양한 인증 매커니즘 지원
11+
- HTTP 기본, OAuth2 등
12+
- CSRF 보호
13+
- CSRF토큰을 사용하여 공격에 대해 보호한다.
14+
15+
- 용어
16+
- Authentication: 인증
17+
- Authorization: 인가
18+
- Principal: 접근주체 / 시스템에 접근하는 사용자
19+
- Role: 권한
20+
21+
인증→접근주체 생성 / 접근주체 → 권한 부여 / 권한 → 인가 결정
22+
23+
- 장단점
24+
- Servlet API 통합
25+
- 자바 confiduration 지원
26+
- 인증, 인가를 확장 가능
27+
- 프레임워크 종속
28+
- 많은 설정 파일과 커스터마이징 요구
29+
- 학습곡선이 높다
30+
31+
- 인증(Authentication)vs 인가(Authorization)
32+
33+
### 인증
34+
35+
본인이 누구인지 확인
36+
37+
- 인증방식
38+
- 쿠키방식
39+
- 사용자 인증에 대해 브라우저에서 사용자 정보를 저장하는 방식
40+
- 세션방식
41+
- 사용자 인증에 대해 서버 특에서 유저의 인증정보(세션)를 생성하고
42+
클라이언트 측에 인증정보 ID를 전달하여 쿠키가 저장하는 방식
43+
- Stateful 방식이다. 클라이언트의 상태를 서버에 유지한다.
44+
- 토큰방식
45+
- 사용자의 인증에 대해 서버 측에서 유저에게 토큰을 발급해주고,
46+
클라이언트 측에서는 토큰을 저장해서 요청 시마다 토큰을 함께 서버에 전달하는 방식
47+
- 쿠키를 사용하지 않으므로 Stateless 상태로 확장성 증가 가능
48+
49+
- 대표적인 토큰 기반 인증 방식
50+
- OAuth
51+
- JWT
52+
53+
### 인가
54+
55+
특정 리소스에 권한이 있는지 확인
56+
57+
- 인가방식
58+
- Access Control List(ACL)
59+
- 사용자에게 직접 권한을 부여하는 방식
60+
- RBAC(role-based access control)
61+
- 역할에 따른 접근 가능한 리소스를 할당하고 그에 따라 각각의
62+
클라이언트들에게 적절한 권한을 조합하여 부여하는 방식
63+
- ex) 일반 관리자에게 할당된 리소스: 사용자 관리, 게시물 관리, 회원가입 승인
64+
65+
- 차이점
66+
- 신분증 → 계좌에 접근하기 위한 인가에도 사용한다.
67+
- **⇒ 인증은 인가로 이어지지만, 인가는 인증으로 이어지지 않는다는 점이다.**
68+
- 인가가 개체를 식별하는 데 사용할 수 있는 것이 아니다.
69+
70+
- Stateful vs Stateless
71+
72+
### stateful 상태유지
73+
74+
서버가 클라이언트의 상태를 보존한다.
75+
76+
서버에서 클라이언트가 이전 단계에서 제공한 값을 저장하고 다음 단계에서도 저장한 상태이다.
77+
78+
이러한 정보들은 브라우저의 쿠키에 저장되거나 서버의 세션 메모리에 저장되어 상태를 유지하게 된다.
79+
80+
- TCP 3-way handshaking
81+
- syn(client) → syn/ack(server) →ack(client)
82+
83+
- 문제점
84+
- 해당 서버가 멈추거나 여러 이유로 해당 서버를 못 쓰게 되었을 때 문제가 발생한다.
85+
- ex) 글쓰기 버튼을 눌렀는데 다시 로그인하라는 화면이 뜬다.
86+
87+
![img.png](img.png)
88+
89+
90+
### stateless 무상태성
91+
92+
서버가 클라이언트의 상태를 보존하지 않는다.
93+
94+
서버는 단순히 요청이 오면 응답을 보내는 역할만 수행
95+
96+
통신에 필요한 모든 상태 정보들은 클라이언트에서 가지고 있다가 서버와 통신할 때 데이터를 실어 보내는 것
97+
98+
![img_1.png](img_1.png)
99+
100+
- 서버 확장을 통해 대용량 트래픽에도 대응할 수 있다.
101+
- UTP, HTTP 프로토콜
102+
- 토큰
103+
- 로그인 유지와 같은 상태는 stateful한 상태여야 한다.
104+
⇒ stateless 특징을 유지하면서도 로그인 상태 유지를 가능하게 하는 기술 JWT
105+
클라이언트가 암호화된 로그인 정보를 지니고 있다가 서버에 통신할 때 넘겨준다.
106+
107+
- 문제점
108+
- 최종 목적을 위해 지나는 과정마다 점점 전달해야 하는 내용이 많아진다.

mission/chapter08/img.png

54.4 KB
Loading

mission/chapter08/img_1.png

31.1 KB
Loading

mission/chapter08/img_2.png

58.8 KB
Loading

mission/chapter08/img_3.png

29 KB
Loading

mission/chapter08/img_4.png

57.7 KB
Loading

mission/chapter08/mission.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-피어리뷰(A팀 빈)
2+
![img_4.png](img_4.png)
3+
4+
-미션기록
5+
![img.png](img.png)
6+
![img_1.png](img_1.png)
7+
![img_2.png](img_2.png)
8+
![img_3.png](img_3.png)

0 commit comments

Comments
 (0)