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 ํ์ผ ๊ฒ.. ์ด์ 1 2 3 4 5 ๋ค์