๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€43

[Spring Security] JWT Tutorial (2) Security ์„ค์ •, Data ์„ค์ • - 401 unauthorized ํ•ด๊ฒฐ์„ ์œ„ํ•œ Security ์„ค์ • - Datasuorce, JPA ์„ค์ • - Entity ์ƒ์„ฑ - H2 Console ๊ฒฐ๊ณผ ํ™•์ธ SecurityConfig ํด๋ž˜์Šค ์ƒ์„ฑ config ํŒจํ‚ค์ง€ ๋‚ด์— ์ƒ์„ฑ package com.oliviarla.tutorial.config; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web... 2022. 4. 28.
[Spring Security] JWT Tutorial (1) JWT ๊ฐœ๋…, ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ JWT JSON ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ† ํฐ ์ž์ฒด์— ์ •๋ณด๋“ค์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” Web Token - ๊ตฌ์„ฑ Header: signature๋ฅผ ํ•ด์‹ฑํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณด ์ €์žฅ Payload: ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃผ๊ณ ๋ฐ›๋Š” ์‹œ์Šคํ…œ์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋  ์ •๋ณด๋“ค์— ๋Œ€ํ•œ ๋‚ด์šฉ ์ €์žฅ Signature: ํ† ํฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•œ ๋ฌธ์ž์—ด - ์žฅ์  ์ค‘์•™์˜ ์ธ์ฆ์„œ๋ฒ„, ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด์— ๋Œ€ํ•œ ์˜์กด์„ฑ ์—†์Œ, ์‹œ์Šคํ…œ ์ˆ˜ํ‰ ํ™•์žฅ ์œ ๋ฆฌ Base64 URL Safe Encoding์„ ์‚ฌ์šฉํ•ด URL, Cookie, Header์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ - ๋‹จ์  Payload์˜ ์ •๋ณด๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ๋Ÿ‰ ์ฆ๊ฐ€ -> ๋ฐ์ดํ„ฐ ์„ค๊ณ„ ๊ณ ๋ ค ํ•„์š” ํ† ํฐ์ด ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๋ฏ€๋กœ ์„œ๋ฒ„์—์„œ ๊ฐ ํด๋ผ์ด์–ธํŠธ์˜ ํ† ํฐ ์กฐ์ž‘ ๋ถˆ๊ฐ€ dependencies ์„ค์ • intell.. 2022. 4. 28.
[SQL ๋ ˆ๋ฒจ์—…] 6์žฅ: ๊ฒฐํ•ฉ ๊ธฐ๋Šฅ์  ๊ด€์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒฐํ•ฉ์˜ ์ข…๋ฅ˜ ๋“ฑ๊ฐ€ ๊ฒฐํ•ฉ: ๊ฒฐํ•ฉ ์กฐ๊ฑด์œผ๋กœ ๋“ฑํ˜ธ(=)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋น„๋“ฑ๊ฐ€ ๊ฒฐํ•ฉ: ๊ฒฐํ•ฉ ์กฐ๊ฑด์œผ๋กœ ๋ถ€๋“ฑํ˜ธ(>=, < ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ž์—ฐ ๊ฒฐํ•ฉ: ๋‚ด๋ถ€ ๊ฒฐํ•ฉ์ด๋ฉด์„œ ๋“ฑ๊ฐ€ ๊ฒฐํ•ฉ - ์ž์—ฐ ๊ฒฐํ•ฉ ์˜ˆ์‹œ SELECT * FROM Employees NATURAL JOIN Departments; ๋‚ด๋ถ€ ๊ฒฐํ•ฉ+ ๋“ฑ๊ฐ€ ๊ฒฐํ•ฉ ์ฟผ๋ฆฌ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ ๋„์ถœ SELECT * FROM Employees E INNER JOIN Departments D ON E.dept_id=D.dept_id; USING ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ SELECT * FROM Employees INNER JOIN Departments USING(dept_id); 1. ํฌ๋กœ์Šค ๊ฒฐํ•ฉ SELECT * FROM Employees CROSS JOIN D.. 2022. 4. 25.
[์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ์›น ํ”„๋กœ์ ํŠธ] 10. Spring Boot์™€ Spring Security ์—ฐ๋™ (2) 3. ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ JPA ์ฒ˜๋ฆฌ 4. ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ์œ„ํ•œ UserDetailsService 5. Controller์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ 3. ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ JPA ์ฒ˜๋ฆฌ ClubMember: ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค ClubMemberRole: ์—”ํ‹ฐํ‹ฐ enum ํด๋ž˜์Šค ClubMemberRepository: repository ์ธํ„ฐํŽ˜์ด์Šค ClubAuthMemberDTO: DTO ํด๋ž˜์Šค(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ User ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•จ) ClubUserDetailsService: service ํด๋ž˜์Šค, AuthenticationManager๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •๋ณด ๊ฐ€์ ธ์˜ค๋Š” ํด๋ž˜์Šค (UserDetailsService ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†ํ•จ) User: ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํšŒ์›, ๊ณ„์ •์— ๋Œ€ํ•œ ์šฉ์–ด usernam.. 2022. 4. 22.
[์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ์›น ํ”„๋กœ์ ํŠธ] 10. Spring Boot์™€ Spring Security ์—ฐ๋™ (1) 1. ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ 2. ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• - ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ์ดํ•ด - JPA์™€ ์—ฐ๋™ํ•˜๋Š” ์ปค์Šคํ…€ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ - Thymeleaf์—์„œ ๋กœ๊ทธ์ธ ์ •๋ณด ํ™œ์šฉํ•˜๊ธฐ 1. ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ Dependencies ์ถ”๊ฐ€ Selected Dependencies Spring Boot DevTools Lombok Spring Web Spring Security Thymeleaf Spring Data JPA security - Spring Security ํ•ญ๋ชฉ ํฌํ•จํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ JDK Version: 11 Java Version: 11 build.gradle์— ํ™•์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€ implementation group: 'org.mariadb.jdbc.. 2022. 4. 19.
[SQL ๋ ˆ๋ฒจ์—…] 5์žฅ: ๋ฐ˜๋ณต๋ฌธ ๋ฐ˜๋ณต๋ฌธ ์˜์กด 1. ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ ๋ฐ˜๋ณต๋ฌธ์— ์ต์ˆ™ํ•œ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋‹ค์Œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ๋ ˆ์ฝ”๋“œ์— ํ•˜๋‚˜์”ฉ ์ ‘๊ทผํ•˜๊ณ  ํ˜ธ์ŠคํŠธ ์–ธ์–ด(์ ˆ์ฐจํ˜• ์–ธ์–ด)์—์„œ ๋ฐ˜๋ณต ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ„ํ˜น ์žˆ์Œ ์˜จ๋ผ์ธ ์ฒ˜๋ฆฌ์—์„œ ํ™”๋ฉด์— ๋ช…์„ธ๋ฅผ ์ถœ๋ ฅํ•˜์กฐ๊ฐ€ ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜์”ฉ ์ ‘๊ทผํ•˜๋Š” SELECT ๊ตฌ๋ฌธ ๋ฐ˜๋ณต ์‚ฌ์šฉ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ์—์„œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ˜ธ์ŠคํŠธ ์–ธ์–ด์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ…Œ์ด๋ธ”์— ๊ฐฑ์‹  ๋ฐ˜๋ณต๊ณ„์˜ ๊ณตํฌ 1. ๋ฐ˜๋ณต๋ฌธ์— ์˜์กดํ•œ ์ฝ”๋“œ์˜ ๋‹จ์  - Sales: ๋งค์ถœ ๊ณ„์‚ฐํ•˜๋Š” ํ…Œ์ด๋ธ” - Sales2: ๋งค์ถœ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” var ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ…Œ์ด๋ธ” - ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๋น„๊ต ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„: (์ฒ˜๋ฆฌ ํšŸ์ˆ˜) * (ํ•œ ํšŒ์— ๊ฑธ๋ฆฌ๋Š” ์ฒ˜๋ฆฌ ์‹œ๊ฐ„) ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„: SQL ํŒจํ„ด์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ค.. 2022. 4. 18.
[SQL ๋ ˆ๋ฒจ์—…] 4์žฅ: ์ง‘์•ฝ๊ณผ ์ž๋ฅด๊ธฐ ์ง‘์•ฝ 1. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•œ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋กœ ์ง‘์•ฝ - GROUP BY๋ฅผ ์‚ฌ์šฉํ•ด ์ง‘์•ฝ - ์ง‘์•ฝ ํ•จ์ˆ˜: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•œ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋กœ ์ง‘์•ฝํ•˜๋Š” ํ•จ์ˆ˜, COUNT, SUM, AVG, MAX, MIN - ์ง‘์•ฝ ์‹œ SELECT ๊ตฌ์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ: ์ƒ์ˆ˜, GROUP BY์—์„œ ์‚ฌ์šฉ๋œ ์ง‘์•ฝ ํ‚ค, ์ง‘์•ฝ ํ•จ์ˆ˜ CASE ์‹๊ณผ GROUP BY ์‘์šฉ ๋น„์ง‘์•ฝ ํ…Œ์ด๋ธ”์„ ์ง‘์•ฝ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“œ๋Š” SQL ๊ตฌ๋ฌธ SELECT id, MAX(CASE WHEN data_type='A' THEN data_1 ELSE NULL END) AS data_1, MAX(CASE WHEN data_type='A' THEN data_2 ELSE NULL END) AS data_2, MAX(CASE WHEN data_type='B' THEN .. 2022. 4. 18.
์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ ์„ ํƒ ์ •๋ ฌ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ์•„ ๋งจ ๋งˆ์ง€๋ง‰์˜ ์›์†Œ์™€ swap O(N^2) int arr[10] = {2, 53, 76, 4, 5, 3, 13, 32, 88, 25}; int n=10; for(int i=n-1;i>0;i--){ swap(*max_element(arr, arr+i+1), arr[i]); } ๋ฒ„๋ธ” ์ •๋ ฌ ์•ž์—์„œ๋ถ€ํ„ฐ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ํฐ ๊ฐ’์„ ๋’ค๋กœ ๋ณด๋ƒ„ -> ์ ์ฐจ ๊ฐ€์žฅ ํฐ ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๊ฒŒ ๋จ O(N^2) int arr[5] = {-2, 2, 4, 6, 13}; int n=5; for(int i=0;i 2022. 4. 14.
IT ๊ธฐ์ˆ ๋ฉด์ ‘ ํ•„์ˆ˜ ์งˆ๋ฌธ ์ •๋ฆฌ ์›น - HTTP, HTTPS(TLS(SSL)) ๋”๋ณด๊ธฐ HTTP๋Š” ๋”ฐ๋กœ ์•”ํ˜ธํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ํŒจํ‚ท์„ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด ๋ณด์•ˆ์ด ์ทจ์•ฝํ•ด์ง HTTPS๋Š” ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๊ฐ„์— ์•”ํ˜ธํ™” ๊ณ„์ธต์„ ๊ฑฐ์ณ์„œ ํŒจํ‚ท์„ ์•”ํ˜ธํ™”ํ•จ - HTTP 1.1 2.0 3.0 - HTTP RESTFUL ๋”๋ณด๊ธฐ Representational State Transfer์˜ ์•ฝ์ž ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ(๋˜๋Š” ์ •๋ณด)๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธ ์›น์˜ ๊ธฐ์กด ๊ธฐ์ˆ ๊ณผ HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉ -> ์›น์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ - HTTP ์‘๋‹ต์ฝ”๋“œ ๋”๋ณด๊ธฐ 200๋ฒˆ๋Œ€: ํ†ต์‹  ์„ฑ๊ณต 300๋ฒˆ๋Œ€: ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ 400๋ฒˆ๋Œ€: ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜ 500๋ฒˆ๋Œ€: ์„œ๋ฒ„ ์˜ค๋ฅ˜ - ์›น๋ธŒ๋ผ์šฐ์ €์— .. 2022. 4. 14.