Backend
Algorithm
Project
ETC
codescheโs blog
/
Project
/
miniblog
Backend
Algorithm
Project
ETC
codescheโs blog
/
Project
/
miniblog
Share
Backend
Algorithm
Project
ETC
๐
miniblog
์์ฑ์ผ
2024/07/08 04:33
ํ๊ทธ
๊ฐ์ธ ํ๋ก์ ํธ
miniblog
Search
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
OAuth ์ธ์ฆ ์ ์ฉ ์ํ ํ ์คํธ ์ฝ๋ ์์ฑ
โข
ํ ์คํธ์ฝ๋ ์์ - ๊ตต์ ๊ธ์จ๋ก ํ์ํ ๋ถ๋ถ ์ฐธ๊ณ
ํต์ฌ ์์ฝ
18์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
์คํ๋ง ์ํ๋ฆฌํฐ๋ก OAuth2๋ฅผ ๊ตฌํํ๊ณ ์ ์ฉํ๊ธฐ
โข
์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ OAuth2 ๊ตฌํ ์์
โข
๊ฐ์ฅ ๋จผ์ ์ฟ ํค ๊ด๋ฆฌ ํด๋์ค๋ฅผ ๊ตฌํํ๊ณ , OAuth2์์ ์ ๊ณต๋ฐ์ ์ธ์ฆ ๊ฐ์ฒด๋ก ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์ญํ ์ ํ๋ ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ
โข
๊ธฐ์กด โ์ํ๋ฆฌํฐ ์ค์ ํ๊ธฐโ ์์ ๊ตฌํํ๋ WebSecurityConfig ํด๋์ค ๋์ ์ฌ์ฉํ OAuth2 ์ค์ ํ์ผ์ ๊ตฌํํ๊ธฐ
โข
๋ง์ง๋ง์๋ ์ง์ ํ ์คํธํ ์ ์๋๋ก ๋ทฐ๋ฅผ ๊ตฌ์ฑ
17์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
ํ ํฐ ๋ฐ๊ธ๋ฐ๊ธฐ
โข
๊ตฌ๊ธ ํด๋ผ์ฐ๋ ์ฝ์์ ์ ์ํ์ฌ ๊ตฌ๊ธ ํด๋ผ์ฐ๋ ์ฌ์ฉ ๋์ ์ ์ฐจ๋ฅผ ์งํํ ์ดํ์ ์ ํ๋ก์ ํธ ์์ฑํ๊ธฐ
โข
ํ๋ก์ ํธ ์ด๋ฆ ์ง์ ๋ค์์ ๋ง๋ค๊ธฐ ๋ฒํผ ํด๋ฆญ
16์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
OAuth๋?
OAuth๋ ์ 3์ ์๋น์ค์ ๊ณ์ ๊ด๋ฆฌ๋ฅผ ๋งก๊ธฐ๋ ๋ฐฉ์์ด๋ค. ํํ ๋ณผ ์ ์๋ ๋ค์ด๋ฒ๋ก ๋ก๊ทธ์ธํ๊ธฐ, ๊ตฌ๊ธ๋ก ๋ก๊ทธ์ธํ๊ธฐ ๊ฐ์ ๊ฒ์ด๋ค.
โข
๋ฆฌ์์ค ์ค๋(resource owner)
โข
๋ฆฌ์์ค ์๋ฒ(resource server)
15์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
JWTย ์๋น์ค ๊ตฌํ - ํ ์คํธ ์ฝ๋
โข
ํ ์คํธ ์ฝ๋ ์์ฑ
14์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
JWTย ์๋น์ค ๊ตฌํ
โข
์์กด์ฑ ์ถ๊ฐ
13์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
ํ์๊ฐ์ , ๋ก๊ทธ์ธ ๋ทฐ ์์ฑํ๊ธฐ
โข
๋ทฐ ์ปจํธ๋กค๋ฌ ๊ตฌํ
12์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
ํ์๊ฐ์ ๊ตฌํํ๊ธฐ
โข
์ฌ์ฉ์ ์ ๋ณด ๋ด๊ณ ์๋ ๊ฐ์ฒด ์์ฑ
โข
AddUserRequest ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ๋ ํ์ ์ ๋ณด ์ถ๊ฐ ๋ฉ์๋ ์์ฑ - ์๋น์ค
11์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
์ํ๋ฆฌํฐ ์ค์ ํ๊ธฐ
โข
requestMathcers(): ํน์ ์์ฒญ๊ณผ ์ผ์นํ๋ url์ ๋ํ ์ก์ธ์ค๋ฅผ ์ค์ ํ๋ค.
โข
permitAll(): ๋๊ตฌ๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ฒ ์ค์ ํ๋ค.
โข
anyRequest(): ์์์ ์ค์ ํ url ์ด์ธ์ ์์ฒญ์ ๋ํด ์ค์ ํ๋ค.
โข
loginPage(): ๋ก๊ทธ์ธ ํ์ด์ง ๊ฒฝ๋ก ์ค์ ํ๋ค.
10์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
ํ์ ๋๋ฉ์ธ ๋ง๋ค๊ธฐ
โข
์์กด์ฑ ์ถ๊ฐํ๊ธฐ
9์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
์์ฑ ๊ธฐ๋ฅ ๋ง๋ฌด๋ฆฌ
โข
article.js ์ ์ฝ๋ ์์ฑ
โข
article.js ํ์ผ์ ์ด์ด [๋ฑ๋ก] ๋ฒํผ์ ๋๋ฅด๋ฉด ์ ๋ ฅ ์นธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ฒ์๊ธ ์์ฑ API์ ๊ธ ์์ฑ ๊ด๋ จ ์์ฒญ์ ๋ณด๋ด์ค๋ค.
โข
id๊ฐ create-btn์ธ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์ ๊ทธ ์๋ฆฌ๋จผํธ์์ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์ ์ id๊ฐ title, content์ธ ์๋ฆฌ๋จผํธ์ ๊ฐ์ ๊ฐ์ ธ์ fetch() ๋ฉ์๋๋ฅผ ํตํด ์์ฑ API๋ก /api/articles/ POST ์์ฒญ์ ๋ณด๋ธ๋ค.
8์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
ํธ๋ฌ๋ธ์ํ
โข
์คํ๋ง ๋ถํธ 3.2 ๋ฒ์ ๋งค๊ฐ๋ณ์ ์ด๋ฆ ์ธ์ ๋ฌธ์
โข
์๋ฌ ํด๊ฒฐ ํ ์ ์์ ์ผ๋ก ๊ธ ์์ธ ํ๋ฉด์ด ์ ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
7์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
๋ธ๋ก๊ทธ ๊ธ ๋ชฉ๋ก ๋ทฐ ๊ตฌํ
โข
์์ฒญ์ ๋ฐ์ ์ฌ์ฉ์์๊ฒ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ค๋ฉด ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ํ์ํจ
โข
๋ทฐ ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ ๋ทฐ์ ์ด๋ฆ์ ๋ฐํํ๊ณ , ๋ชจ๋ธ ๊ฐ์ฒด์ ๊ฐ์ ๋ด์
โข
๋ทฐ์ ์ ๋ฌํ๊ธฐ ์ํ ๊ฐ์ฒด ์์ฑ
6์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
ํ์๋ฆฌํ
โข
๋ทฐ ์์ฑ - example.html
5์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
ํ์๋ฆฌํ
โข
ํ์๋ฆฌํ๋ ํ ํ๋ฆฟ ์์ง์ด๋ค.
โข
๋ฌธ๋ฒ
4์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
๋ธ๋ก๊ทธ ๊ธ ์ญ์ API ๊ตฌํ
โข
BlogService.java
3์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
๋ธ๋ก๊ทธ์ ๋ชจ๋ ๊ธ ์กฐํํ๋ API ๊ตฌํ
โข
BlogService.java
์๋ต์ ์ํ DTO ์์ฑ
2์ผ์ฐจ
๋ณธ ํ๋ก์ ํธ๋ โ์คํ๋ง๋ถํธ 3 ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋๊ธฐโ ์์ ์ ์ฐธ๊ณ ํ์ฌ ์งํํ์์
์ํฐํฐ ๊ตฌ์ฑ
๋ฆฌํฌ์งํ ๋ฆฌ ๋ง๋ค๊ธฐ
1์ผ์ฐจ