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

728x90

Spring๐Ÿƒ

(35)
์ •์ˆ˜์›์˜ Spring Security Oauth2 (5) : CORS CORS- Http ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•ด ํ•œ ์ถœ์ฒ˜์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์„ ํƒํ•œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์— ์•Œ๋ ค์ฃผ๋Š” ์ฒด์ œ- ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž์‹ ์˜ ์ถœ์ฒ˜์™€ ๋‹ค๋ฅผ ๋•Œ ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญ ํ—ค๋”์— Origin ํ•„๋“œ์— ์š”์ฒญ ์ถœ์ฒ˜๋ฅผ ํ•จ๊ป˜ ๋‹ด์•„ ๊ต์ฐจ ์ถœ์ฒ˜ Http ์š”์ฒญ์„ ์‹คํ–‰ํ•œ๋‹ค- ์ถœ์ฒ˜ ๋น„๊ต ๋กœ์ง์€ ์„œ๋ฒ„ ๊ตฌํ˜„ ์ŠคํŽ™์ด ์•„๋‹Œ ๋ธŒ๋ผ์šฐ์ €์— ๊ตฌํ˜„๋œ ์ŠคํŽ™ ๊ธฐ์ค€์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ํด๋ผ์ด๋˜ํŠธ์˜ ์š”์ฒญ ํ—ค๋”์™€ ์„œ๋ฒ„์˜ ์‘๋‹ต ํ—ค๋”๋ฅผ ๋น„๊ตํ•ด ์ตœ์ข… ์‘๋‹ต์„ ๊ฒฐ์ •ํ•œ๋‹ค- ๋‘ ๊ฐœ์˜ ์ถœ์ฒ˜๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์€ URL์˜ ๊ตฌ์„ฑ์š”์†Œ ์ค‘ Protocol, Host, Port ์„ธ ๊ฐ€์ง€๊ฐ€ ๋™์ผํ•œ์ง€๋ฅผ ํ™•์ธํ•จ์œผ๋กœ ๋น„๊ต ex) http://abc.com ์—์„œ XMLHttpRequst, ajax(๋˜๋Š” FetchAPI) ..
์ •์ˆ˜์›์˜ Spring Security Oauth2 (4) : Http Basic ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ Http์˜ ์ธ์ฆ๋ฐฉ์‹์€ Basic ์ธ์ฆ ๋ฐฉ์‹์ด๋‹ค RFC 7235 ํ‘œ์ค€์œผ๋กœ, ์ธ์ฆ์— ํ•„์š”ํ•œ ์ธ์ฆ ์ •๋ณด๋ฅผ Base 64๋กœ ์ธ์ฝ”๋”ฉํ•ด ์„œ๋ฒ„์— ์ธ์ฆ์„ ์š”์ฒญํ•œ๋‹ค(Base 64๋Š” ๋””์ฝ”๋”ฉ์ด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— Https์™€ ๊ฐ™์€ TLS๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค) 1. HttpBasicConfigurer- Basic ์ธ์ฆ ์ดˆ๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์†์„ฑ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •- ๊ธฐ๋ณธ AuthenticationEntryPoint๋Š” BasicAuthenticationEntryPoint์ด๋‹ค- ํ•„ํ„ฐ๋Š” BasicAuthenticaionFilter๋ฅผ ์‚ฌ์šฉ 2. BasicAuthenticaionFilter๊ธฐ๋ณธ ์ธ์ฆ ์„œ๋น„์Šค ์ œ๊ณต, ์š”์ฒญ ํ—ค๋”์˜ ์ธ์ฆ์ •๋ณด ์œ ํšจ์„ฑ์„ ์ฒดํฌํ•˜๋ฉฐ ์ธ์ฆ์ •๋ณด์ธ ์•„์ด๋””์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ถ”์ถœํ•œ๋‹ค. ์ธ์ฆ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ Authentica..
์ •์ˆ˜์›์˜ Spring Security Oauth2 (3) : ์‹œํ๋ฆฌํ‹ฐ ์ธ์ฆ ์ธ๊ฐ€ ํ๋ฆ„ 1. DelegatingFilterProxy์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜์Œ์œผ๋กœ ๋ฐ›๋Š”๋‹ค.- ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ FilterChain์„ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก, DelegatingFilterProxy๊ฐ€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ ํ•„ํ„ฐ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ์œ„์ž„ํ•œ๋‹ค 2. FilterChainProxy๋ณด์•ˆ์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ํ•„ํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•„ํ„ฐ ์ฒด์ธ. ํ•ด๋‹น ํ•„ํ„ฐ ์ฒด์ธ์—์„œ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•„ํ„ฐ๋ฅผ ํ˜ธ์ถœํ•ด ์ธ์ฆ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„๋ฅผ ํ•œ๋‹ค- ์ธ์ฆ ์˜์—ญ3. AuthenticationFilterAuthentication ๊ฐ์ฒด ์ƒ์„ฑ : ์ธ์ฆ์„ ์œ„ํ•œ ์ •๋ณด(ex ์•„์ด๋””, ํŒจ์Šค์›Œ๋“œ)๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด4.AuthenticationManager : ๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„ ๋‚ด๋ถ€ ์ธ์ฆ๋กœ์ง ์ˆ˜ํ–‰์œผ๋กœ ์ด์–ด์ง€๋Š” ์ธํ„ฐ..
์ •์ˆ˜์›์˜ Spring Security Oauth2 (2) : Spring Security ์ดˆ๊ธฐํ™” ๊ณผ์ • ์ดํ•ด AuthenticationEntryPoint ์ดํ•ด์ž๋™์„ค์ •์— ์˜ํ•œ ์ดˆ๊ธฐํ™” ํ”„๋กœ์„ธ์ŠคFormLoginConfigurer - ExceptionHandlingConfigurer - defaultEntryPointMappings.put - HttpBasicConfigurer - defaultEntryPointMappings.put *FormLogin1) FormLoginConfigurer -> ExceptionHandlingConfigurer - ํผ ๋กœ๊ทธ์ธ์—์„œ ์˜ˆ์™ธ ๋ฐœ์ƒ- ExceptionHandlingConfigurer์—์„œ AuthenticationEntryPoint ๊ตฌํ˜„์ฒด ์ƒ์„ฑ-> LoginUrlAuthenticationEntryPoint 2) ExceptionHandlingConfigurer -> defaul..
์ •์ˆ˜์›์˜ Spring Security Oauth2 (1) : Spring Security ์ดˆ๊ธฐํ™” ๊ณผ์ • ์ดํ•ด SecurityBuilder๋Š” ๋นŒ๋” ํด๋ž˜์Šค๋กœ์„œ ์›น ๋ณด์•ˆ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋นˆ ๊ฐ์ฒด์™€ ์„ค์ • ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• - WebSecurity์™€ HttpSecurity๊ฐ€ ์žˆ๋‹ค SecurityConfigurer๋Š” Http ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋ณด์•ˆ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ•„ํ„ฐ๋“ค์„ ์ƒ์„ฑํ•˜๊ณ  ์—ฌ๋Ÿฌ ์ดˆ๊ธฐํ™” ์„ค์ •์— ๊ด€์—ฌํ•œ๋‹คSecurityBuilder๋Š” SecurityConfigurer๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์ดˆ๊ธฐํ™” ์ž‘์—…์€ SecurityConfigurer์— ์˜ํ•ด ์ง„ํ–‰๋œ๋‹ค ์ž๋™ ์„ค์ •์— ์˜ํ•ด ๋นŒ๋” ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ์ดํ›„ ์„ค์ • ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ๋œ ํ›„ init(B builder), configure(B builder)๋กœ ์ดˆ๊ธฐํ™” ์ž‘์—… ์ง„ํ–‰ ๋นŒ๋”๋Š” HttpSecurity, WebSecurity๋ฅผ ์ดˆ๊ธฐํ™” ์ง„ํ–‰ํ•œ๋‹ค. ์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋ ๋•Œ Secuirt..
์Šคํ”„๋ง ์ž…๋ฌธ ๊ฐ•์˜ ๋…ธํŠธ ์ •๋ฆฌ (6) : AOP AOP : ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ AOP๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ - ๋ชจ๋“  ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? - ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ vs ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ - ํšŒ์› ๊ฐ€์ž… ์‹œ๊ฐ„, ํšŒ์› ์กฐํšŒ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? ๋ชจ๋“  ๋ฉ”์„œ๋“œ์— ์‹œ๊ฐ„ ์ธก์ • ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ผ์ผํžˆ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์žก์•„๋จน๋Š”๋‹ค ํšŒ์›๊ฐ€์ž…, ํšŒ์› ์กฐํšŒ์— ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ์ด ์•„๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋กœ์ง์€ ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์ด๋‹ค. ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋กœ์ง๊ณผ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๋กœ์ง์ด ์„ž์—ฌ์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค. ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋กœ์ง์„ ๋ณ„๋„์˜ ๊ณตํ†ต ๋กœ์ง์œผ๋กœ ๋งŒ๋“ค๊ธฐ ๋งค์šฐ ์–ด๋ ต๋‹ค. ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋กœ์ง์„ ๋ณ€๊ฒฝํ•  ๋•Œ ๋ชจ๋“  ๋กœ์ง์„ ์ฐพ์•„๊ฐ€๋ฉด์„œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. AOP ์ ์šฉํ•˜๊ธฐ ๋ชฉํ‘œ : ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ๊ณผ ๋ถ„๋ฆฌํ•˜๊ธฐ ํ•ด๊ฒฐ ํšŒ์›๊ฐ€์ž…, ํšŒ์› ์กฐํšŒ..
์Šคํ”„๋ง ์ž…๋ฌธ ๊ฐ•์˜ ๋…ธํŠธ ์ •๋ฆฌ (5) : ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  1) H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์น˜ ์œˆ๋„์šฐ ์‹คํ–‰ : h2.bat ์ฝ˜์†”์—์„œ test.mv.db ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ ์ ‘์† ์‹œ jdbc:h2:tcp://localhost/~/test ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— sql/ddl.sql ํŒŒ์ผ๋กœ sql ๋ช…๋ น์–ด ๊ด€๋ฆฌํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. 2) ์ˆœ์ˆ˜ JDBC build.gradle ํŒŒ์ผ์— jdbc, h2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ • ์ถ”๊ฐ€ spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource...
์Šคํ”„๋ง ์ž…๋ฌธ ๊ฐ•์˜ ๋…ธํŠธ ์ •๋ฆฌ(4) : ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ์›น MVC ๊ฐœ๋ฐœ ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ์›น MVC ๊ฐœ๋ฐœ 1) ํ™ˆ ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ ํ™ˆ html package hello.helloSpring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } Hello Spring ํšŒ์› ๊ธฐ๋Šฅ ํšŒ์› ๊ฐ€์ž… ํšŒ์› ๋ชฉ๋ก *์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ •์  ํŒŒ์ผ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค! ์š”์ฒญ์ด ์˜ค๋ฉด ๋จผ์ € ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ์žˆ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ํ•œ๋‹ค. ์—†๋Š” ๊ฒฝ์šฐ static ํŒŒ์ผ ๊ฒ€..

728x90