728x90

Spring๐Ÿƒ/Spring Security๐Ÿ›ก๏ธ 7

์ •์ˆ˜์›์˜ 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..

Spring Security Architecture(1~5) + Form Login + Servlet Authenticaion Architecture(1~3) ํ•ด์„

https://docs.spring.io/spring-security/reference/servlet/architecture.html Architecture :: Spring SecuritySpring Securityโ€™s Servlet support is based on Servlet Filters, so it is helpful to look at the role of Filters generally first. The following image shows the typical layering of the handlers for a single HTTP request. The client sends a request to the apdocs.spring.io์ถœ์ฒ˜ : ์Šคํ”„๋ง ๊ณต์‹๋ฌธ์„œ 6.0.1 ๋ฒ„์ „ ์ œ..

Spring Security

์ถœ์ฒ˜ : ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์ ์šฉ๋ฐฉ๋ฒ•// ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐimplementation 'org.springframework.boot:spring-boot-starter-security'Config ํŒจํ‚ค์ง€์— WebSecurityConfig ํด๋ž˜์Šค ์ƒ์„ฑ//์Šคํ”„๋ง ๋ถ€ํŠธ 2.7 ์ด์ƒpackage com.sparta.springsecurity.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import or..

728x90