μ€νλ§ μν리ν°

μ΄ νμ΄μ§μ λ΄μ©μ Spring Security 6 μ΄μ λ²μ μ κΈ°μ€μΌλ‘ μ€λͺ
νκ³ μμ΅λλ€.
β’
Spring Security 6 μ΄μ
β’
Spring Boot 3.x.x
β’
MySQL
β’
MyBatis
Spring Security
SpringSecurity6
SecurityFilterChain

μ΄ νμ΄μ§μ λ΄μ©μ Spring Security 5.7 λ―Έλ§ λ²μ μ κΈ°μ€μΌλ‘ μ€λͺ
νκ³ μμ΅λλ€.
β’
Spring Security 5.7 λ―Έλ§
β’
Spring Boot 2.x.x
β’
MySQL
β’
MyBatis
Spring Security
SpringSecurity5.7
WebSecurityConfigurerAdapter

AJAX + Spring Security

μλ¬ λ©μμ§
νμ
HTML μμ form μ csrf ν ν°μ μΆκ°νλ κ²½μ°μ,
HTML μ΅μλ¨ λΆν° ν ν° input hidden νκ·ΈκΉμ§ μ½λκ° μμ² κΈΈλ©΄, κ·ΈλΆλΆμ ν ν°μ νμνμ§ λͺ»νκ³ κ·Έ μ΄ν μ½λλΆν° μΆλ ₯λμ§ μλ μλ¬κ° λ°μν¨.
CSRF ν ν° μλ¬

Boot3 x security6

Boot2.7 x security5.7

Boot2 x Security5

OAuth (Open Authorization)
μ¬μ©μ μ 보μ μ κ·ΌνκΈ° μν κ°λ°©ν μΈμ¦ νμ€
OAuth

μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ
1.
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ μκ°
a.
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ νΉμ§
b.
μΉ΄μΉ΄μ€ μ 곡 κΈ°λ₯
c.
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - Kakao developers
2.
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ μμνκΈ°
b.
μμνκΈ°
c.
μ ν리μΌμ΄μ
μΆκ°νκΈ°
3.
μΉ΄μΉ΄μ€ μ ν리μΌμ΄μ
μ€μ νκΈ°
a.
μ± μ€μ
i.
μ± ν€
1.
REST API ν€ λ³΅μ¬
ii.
νλ«νΌ
1.
μ¬μ΄νΈ λλ©μΈ λ±λ‘
b.
μ ν μ€μ
i.
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ
1.
νμ±ν μ€μ ON
2.
Redirect URI λ±λ‘
ii.
λμ νλͺ©
1.
λλ€μ
2.
νλ‘ν μ¬μ§
3.
μΉ΄μΉ΄μ€ κ³μ (μ΄λ©μΌ)
c.
보μ
i.
Client Secret ν€ λ°κΈ
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ

λ€μ΄λ² λ‘κ·ΈμΈ

κ΅¬κΈ λ‘κ·ΈμΈ
β’
Google Cloud
β’
μ νλ‘μ νΈ μμ±
κ΅¬κΈ λ‘κ·ΈμΈ

μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - INDEX
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - INDEX
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - κΈ°λ³Έ μ€μ

μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ κΈ°λ³Έ νλ‘μ νΈ
νλ‘μ νΈ λͺ©ν
Spring Security, OAuth2 Client μμ‘΄μ±μ μ¬μ©νμ¬, λ¨μν OAuth μΈμ¦ μ€μ μ ν΅ν΄ μΉ΄μΉ΄μ€ λ‘κ·ΈμΈμ ꡬν
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - κΈ°λ³Έ νλ‘μ νΈ
SpringSecurity5.8

μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - νμκ°μ
νλ‘μ νΈ λͺ©ν
Spring Security, OAuth2 Client μμ‘΄μ±μ μ¬μ©νμ¬, OAuth μΈμ¦ μ±κ³΅ μ, νμ κ°μ
μ²λ¦¬λ₯Ό ꡬν
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - νμκ°μ
SpringSecurity5.8

μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - 컀μ€ν λ‘κ·ΈμΈ νμ΄μ§
μ΄μ νμ΄μ§
μ΄μ νμ΄μ§ λ΄μ©μ μ΄μ΄μ μ§νν©λλ€.
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ - 컀μ€ν
λ‘κ·ΈμΈ νμ΄μ§
SpringSecurity5.8

JWT(JSON Web Token)
βμΈμ¦ λ° κΆνβ κ³Ό κ΄λ ¨λ μ 보λ₯Ό μμ νκ² μ λ¬νκΈ° μν JSON νμμ μνΈνλ λ¬Έμμ΄

JWT

SpringBoot λ‘ JWT ν ν° μμ± λ° ν΄μνκΈ°
JWT λΌμ΄λΈλ¬λ¦¬
JWT x SpringBoot
Spring Boot 3
Spring Security 6

JWT x SpringSecurity
β’
build.gradle
β’
νμκ°μ
λ° λ‘κ·ΈμΈ
β¦
Users.java
β¦
UserAuth.java
β¦
UserMapper.xml
β¦
UserMapper.java
β¦
UserServicejava
β¦
UserServiceImpl.java
JWT x SpringSecurity
Spring Boot 3
Spring Security 6

μ¬μ©μ μ μ μΈμ¦
μ΄μ νμ΄μ§
μ¬μ©μ μ μ μΈμ¦

JWT Provider
JWT λ₯Ό μμ±, ν΄μ, κ²μ¦νλ κΈ°λ₯μ μ 곡νλ ν΄λμ€
μ£Όμ κΈ°λ₯
β’
JWT μμ±
β’
JWT ν΄μ
JWT Provider

JWT x μΈμ¦ νν°

JWT x μΈμ¦ νν°

JWT x μμ² νν°

JwtRequestFilter
JWT x μμ² νν°

JWT μ¬μ©μ μ 보
JWT λ₯Ό ν΅ν μ¬μ©μ μ 보 μ‘°ν νλ‘μΈμ€
1.
μΈμ¦ μμ²
JWT λ₯Ό μλ΅ λ°μ΅λλ€.
2.
JWT λ₯Ό Authorization μμ² ν€λμ λ΄μ΅λλ€
a.
Authorization : Bearer {jwt}
JWT μ¬μ©μ μ 보 μ‘°ν

JWT κΆν μ μ΄
JWT λ₯Ό ν΅ν μμ² λ° μΈμ¦ νν°λ‘ μΈμ¦μ²λ¦¬κ° λ μ΄νμ, λ©μλ κΆν κ΄λ¦¬λ‘ κΆν μ μ΄λ₯Ό ν΄λ³΄κ² μ΅λλ€.
ν΅μ¬ λ΄μ©
β’
JWT κΆν μ μ΄

React x JWT x SpringSecurity
React x JWT x SpringSecurity
Spring Boot 3
Spring Security 6
React

JWT(JSON Web Token)
βμΈμ¦ λ° κΆνβ κ³Ό κ΄λ ¨λ μ 보λ₯Ό μμ νκ² μ λ¬νκΈ° μν JSON νμμ μνΈνλ λ¬Έμμ΄

JWT

SpringBoot λ‘ JWT ν ν° μμ± λ° ν΄μνκΈ°
JWT λΌμ΄λΈλ¬λ¦¬
JWT x SpringBoot
Spring Boot 2
Spring Security 5

JWT x SpringSecurity
β’
build.gradle
β’
νμκ°μ
λ° λ‘κ·ΈμΈ
β¦
Users.java
β¦
UserAuth.java
β¦
UserMapper.xml
β¦
UserMapper.java
β¦
UserServicejava
β¦
UserServiceImpl.java
β’
μΈμ¦
β¦
JWT ν ν° μΈμ¦
βͺ
SecurityConstants.java
βͺ
AuthenticationRequest.java
βͺ
JwtProps.java
βͺ
SecurityConfig.java
βͺ
CustomUser.java
βͺ
CustomUserDetailService.java
β¦
ν ν° Provider
βͺ
JwtTokenProvider.java
β’
ν ν° μμ±
β’
ν ν° ν΄μ
β’
ν ν° μ ν¨μ± κ²μ¬
β¦
νν° μ€μ
βͺ
JWT ν ν° μμ² νν°
β’
JwtRequestFilter.java
βͺ
JWT ν ν° μΈμ¦ νν°
β’
JwtAuthenticationFilter.java
JWT x SpringSecurity
Spring Boot 2
Spring Security 5
React x JWT x SpringSecurity
Spring Boot 2
Spring Security 5
μ΄λ¦
νκ·Έ
ν
μ€νΈ
URL
Spring Security 5.7.0-M2
WebSecurityConfigurerAdapter μμνμ¬ κ΅¬ννλ λ°©μμ΄ λ μ΄μ κΆμ₯λμ§ μκ³ , SecurityFilterChainBean λ±λ‘ λ°©μμ΄ λμ
λ¨.
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter







