κ°μ
ν μ΄νλ‘μ νΈλ₯Ό μ§ννλ λμ€μ μ€νλ§ μν리ν°λ₯Ό μ€μ νκ³ λμ, λ‘κ·ΈμΈ μΈμ¦μ λ§μ³€λλ°λ 403 Forbidden μλ¬κ° κ³μν΄μ λ°μνμμ΅λλ€. μλ¬κ° λ°μνλ μμ μ΄ GET μμ²μ 무리μμ΄ μ λλλ°, POST μμ²μΌλ‘ 보λ΄λ©΄ μ΄μνκ² 403 μλ¬κ° λλλ° μ΄μ λ₯Ό λͺ¨λ₯΄κ² μ΅λλ€.
SecurityConfigλ₯Ό μ΄ν΄λ³΄μ
μλλ κΈ°μ‘΄ μνλ¦¬ν° μ€μ μ½λμ λλ€.
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/").authenticated()
.antMatchers("/user/**").permitAll()
.and()
.formLogin()
.disable()
.and()
.logout()
.logoutSuccessUrl("/")
.and()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService)
.and()
.defaultSuccessUrl("/");
}
νΉμ λͺ°λΌμ "/user/**"μμ²μ permitAll() μμΌμ€¬λλ°λ κ³μ 403 μλ¬κ° λ°μνμ΅λλ€.
μκ³ λ³΄λκΉ λ¬Έμ λ http.csrf().disable(); λ₯Ό μ€μ ν΄μ£Όμ§ μμμ
μ€νλ§ μν리ν°λ₯Ό μΆκ°νλ©΄ κΈ°λ³Έμ μΌλ‘ csrfμ λν΄ μ²΄ν¬νκΈ° λλ¬Έμ νλ‘ νΈμμ CSRF ν ν°μ μ²λ¦¬ν΄μ£Όμ§ μμκΈ° λλ¬Έμ POSTκ° μ μμ μΌλ‘ μνλμ§ μμλ κ²μ λλ€.
μλμ²λΌ http.csrf() λ₯Ό disable() ν΄μ£Όλλ‘ ν©μλ€!
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/").authenticated()
.antMatchers("/user/**").permitAll()
.and()
.formLogin()
.disable()
.and()
.logout()
.logoutSuccessUrl("/")
.and()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService)
.and()
.defaultSuccessUrl("/");
}
μ μ΄λ° νμμ΄ λ°μνμκΉ?
κ·Έ μ μ λ¨Όμ CSRFμ λν΄μ μμμΌ ν©λλ€. CSRF(Cross Site Request Forgery)λ μ¬μ΄νΈ κ° μμ² μμ‘° μ¦, μ¬μ©μκ° μμ μ μμ§μ μκ΄μμ΄ κ³΅κ²©μκ° μλν νμ(μμ , μμ , μμ±)λ₯Ό νΉμ μ¬μ΄νΈλ‘ μμ²νλλ‘ νλ 곡격μ λλ€.
(μμΈν κ°λ κ³Ό ν΄κ²°λ°©λ²μ λν΄μλ μΆνμ ν¬μ€ν νκ² μ΅λλ€)
μ€νλ§ μν리ν°μμλ csrf ν ν°μ μ΄μ©ν΄μ λ°©μ΄λ₯Ό νκ³ μμ΅λλ€. 맀 μμ²λ§λ€ csrf ν ν°μ μλ²μμ μμμ λμλ₯Ό μμ±νμ¬ ν΄λΌμ΄μΈνΈμκ² λ겨주λ κ²μ λλ€. κ·ΈλΌ μ΄μ ν΄λΌμ΄μΈνΈλ μλ²λ‘ μμ²ν λ λ°κΈλ°μ csrf ν ν°κ³Ό ν¨κ» μμ²μ νλ©΄ μλ²μμλ csrf ν ν°μ λΉκ΅νμ¬ μμ‘°λ μμ²μΈμ§ νλ³νκ² λλ κ²μ λλ€.
CSRFλ₯Ό λλ©΄ 보μμ μ·¨μ½νμ§ μμκΉ
λ§μ½ JWTμ κ°μ΄ ν ν° μΈμ¦ λ°©μμ μ¬μ©νλ€λ©΄, μλ²μ μνκ° μ μ₯λμ§ μκΈ° λλ¬Έμ CSRFμ λν΄ λ³΄νΈκ° νμνμ§ μμ΅λλ€. νμ§λ§ μΈμ μΏ ν€ λ°©μμ μΈμ¦λ°©μμ μ¬μ©νλ€λ©΄ κΌ CSRFλ₯Ό λλΉν΄μΌ ν©λλ€. λΈλΌμ°μ μ μ μ₯λ μΏ ν€κ° CSRF 곡격μ 맀κ°μ²΄κ° λκΈ° λλ¬Έμ λλ€.
κ°μ¬ν©λλ€.
μ°Έκ³