Spring

[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ๋™์‹œ ์„ธ์…˜ ์ œ์–ด, ์„ธ์…˜ ๊ณ ์ • ๋ณดํ˜ธ, ์„ธ์…˜ ์ •์ฑ…

2023. 11. 6. 10:35
๋ชฉ์ฐจ
  1. ๐ŸŽ  ๋™์‹œ ์„ธ์…˜ ์ œ์–ด
  2. ๋™์‹œ ์„ธ์…˜ ์ œ์–ด API
  3. ์„ธ์…˜ ๊ณ ์ • ๋ณดํ˜ธ
  4. ์„ธ์…˜ ์ •์ฑ…

๐ŸŽ  ๋™์‹œ ์„ธ์…˜ ์ œ์–ด

๋™์‹œ ์„ธ์…˜ ์ œ์–ด๋Š” ํ˜„์žฌ ๋™์ผํ•œ ๊ณ„์ •์œผ๋กœ ์ธ์ฆ์„ ๋ฐ›์„ ๋•Œ ์ƒ์„ฑ๋˜๋Š” ์„ธ์…˜์˜ ํ—ˆ์šฉ ๊ฐœ์ˆ˜๊ฐ€ ์ดˆ๊ณผ๋˜์—ˆ์„ ๊ฒฝ์šฐ์— ์–ด๋–ป๊ฒŒ ๊ทธ ์„ธ์…˜์„ ๊ณ„์†์ ์œผ๋กœ ์ดˆ๊ณผํ•˜์ง€ ์•Š๊ณ  ์„ธ์…˜์„ ์œ ์ง€ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ œ์–ด๋ฅผ ๋งํ•œ๋‹ค.

 

 

ํ—ˆ์šฉ ๋ธŒ๋ผ์šฐ์ € ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ๋ผ๊ณ  ๊ฐ€์ •ํ•  ๊ฒฝ์šฐ์— (์‚ฌ์šฉ์ž 1, 2๋Š” ๋™์ผํ•œ ๊ณ„์ •)

1.์ด์ „ ์‚ฌ์šฉ์ž ์„ธ์…˜ ๋งŒ๋ฃŒํ•˜๋Š” ๋ฐฉ๋ฒ•

2. ํ˜„์žฌ ์‚ฌ์šฉ์ž ์ธ์ฆ ์‹คํŒจ 

 

 

๋™์‹œ ์„ธ์…˜ ์ œ์–ด API

 

  • maximumSessions : ์„ค์ •ํ•œ ์ˆ˜๋งŒํผ ์ตœ๋Œ€ ํ—ˆ์šฉ ๊ฐ€๋Šฅ ์„ธ์…˜ ์ˆ˜๋ฅผ ์„ค์ •
  • maxSessionPreventsLogin : true๋กœ ์„ค์ •ํ•˜๋ฉด ๋™์‹œ ๋กœ๊ทธ์ธ ์ฐจ๋‹จํ•จ -> ์œ„์—์„œ 2๋ฒˆ์งธ ๋ฐฉ๋ฒ•, false๋Š” 1๋ฒˆ์งธ ๋ฐฉ๋ฒ•
  • invalidSessionUrl
  • expireUrl

๐Ÿ‘‰ ๋ฐ‘์— ๋‘ ๊ฐœ ๋‹ค ์„ค์ •ํ•˜๋ฉด invalidSessionUrl์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋œ๋‹ค. 

 

 

 

 

1. ์ด์ „ ์‚ฌ์šฉ์ž ์„ธ์…˜ ๋งŒ๋ฃŒ

 

SecurityConfig

http
                .sessionManagement()
                .maximumSessions(1)
                .maxSessionsPreventsLogin(false);

 

maxSessionPreventsLogin(false)๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‘˜ ๋‹ค ์ธ์ฆ์— ์„ฑ๊ณต์„ ํ•˜๊ฒŒ ๋˜์ง€๋งŒ, ์ฒซ ๋ฒˆ์งธ ๋ธŒ๋ผ์šฐ์ €๋Š” ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋˜์–ด์„œ ์ ‘์†ํ•˜๋ฉด ๋งŒ๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

 

2. ํ˜„์žฌ ์‚ฌ์šฉ์ž ์ธ์ฆ ์‹คํŒจ

 

SecurityConfig

http
                .sessionManagement()
                .maximumSessions(1)
                .maxSessionsPreventsLogin(true);

 

๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹คํ–‰ํ•ด์„œ localhost:8080์— ์ ‘์†ํ–ˆ์„ ๋•Œ ํ•˜๋‚˜๋Š” ๋กœ๊ทธ์ธ์ด ๋˜์ง€๋งŒ ๋‹ค๋ฅธ ํ•œ ๋ธŒ๋ผ์šฐ์ €๋Š” ์„ธ์…˜ maximum์ด ์ดˆ๊ณผ๋˜์—ˆ๋‹ค๊ณ  ๋œฌ๋‹ค.

 

 

 

 

์„ธ์…˜ ๊ณ ์ • ๋ณดํ˜ธ

 

 

 

 

  • ๊ณต๊ฒฉ์ž๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†์„ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ๊ณต๊ฒฉ์ž์—๊ฒŒ JSESSIONID๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค.
  • ๊ณต๊ฒฉ์ž๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž์‹ ์ด ๋ฐ›์€ ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ์‹ฌ์–ด๋†“๋Š”๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์‹ฌ์–ด๋†“์€ ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„๋กœ ์ ‘๊ทผํ•œ๋‹ค.
  • ๊ณต๊ฒฉ์ž์™€ ์‚ฌ์šฉ์ž ๋ชจ๋‘๊ฐ€ ์„ธ์…˜์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฒฉ์ž๊ฐ€ ํ•ด๋‹น ์„ธ์…˜์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. -> ์‚ฌ์šฉ์ž ์ •๋ณด ๊ณต์œ 

๐Ÿ‘‰ ํ•ด๋‹น ๋ฐฉ์‹์ด ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๊ฐ€ ์„ธ์…˜ ๊ณ ์ • ๋ณดํ˜ธ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

  • ์ธ์ฆํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์ƒ์„ฑ๋œ๋‹ค. -> ์ƒˆ๋กœ์šด ์ฟ ํ‚ค๋„ ์ƒ์„ฑ

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ์‹ฌ์–ด๋†“์€ ์„ธ์…˜์„ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

์•„๋ž˜ API๋ฅผ ํ†ตํ•ด์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

http
                .sessionManagement()
                .sessionFixation().changeSessionId();

 

  • changeSessionId : ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์„ ์‹œ๋„ํ•˜๊ณ  ์„ฑ๊ณตํ•˜๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์„ธ์…˜ ์•„์ด๋””๋งŒ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค. (์„ธ์…˜ ์•„์ด๋””์— ๋”ฐ๋ผ์„œ ์„ธ์…˜์„ ์ฐพ์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ๋‹ค!)
  • none : ์•„๋ฌด ์„ค์ •๋„ ์•ˆํ•จ (๊ณต๊ฒฉ์ž๊ฐ€ ๊ณต๊ฒฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.)
  • migrationSession : ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์ƒ์„ฑ๋˜๊ณ  ์ƒˆ๋กœ์šด ์„ธ์…˜ ์•„์ด๋””๋กœ ์ƒ์„ฑ๋œ๋‹ค
  • newSession : ์„ธ์…˜์ด ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜๊ณ  ์„ธ์…˜ ์•„์ด๋””๋„ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜์ง€๋งŒ ๊ทธ ์„ธ์…˜์—์„œ ์„ค์ •ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์†์„ฑ์˜ ๊ฐ’๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ƒˆ๋กญ๊ฒŒ ์†์„ฑ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ๋œ๋‹ค.

 

changeSessionId์™€ migrationSession์€ ์†์„ฑ๊ฐ’์ด ์œ ์ง€๋œ๋‹ค.
changeSessionId๋Š” ์„œ๋ธ”๋ฆฟ 3.1 ์ด์ƒ์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ , migrationSession์€ ๊ทธ ์ดํ•˜์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

 

 

์„ธ์…˜ ์ •์ฑ…

 

 

 


ํ•ด๋‹น ๊ธ€์€ ์ธํ”„๋Ÿฐ์˜ ์Šคํ”„๋ง์‹œํ๋ฆฌํ‹ฐ-Spring Boot ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” Spring Security๋ฅผ ๋ณด๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ExceptionTraslationFilter, RequestCacheAwareFilter  (0) 2023.11.15
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ๊ถŒํ•œ์„ค์ •๊ณผ ํ‘œํ˜„์‹  (0) 2023.11.09
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ์ต๋ช…์‚ฌ์šฉ์ž ์ธ์ฆ : AnonymousAuthenticationFilter  (0) 2023.11.04
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) Remember-Me ์ธ์ฆ  (0) 2023.11.03
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) Logout์ฒ˜๋ฆฌ, LogoutFilter  (2) 2023.11.02
  1. ๐ŸŽ  ๋™์‹œ ์„ธ์…˜ ์ œ์–ด
  2. ๋™์‹œ ์„ธ์…˜ ์ œ์–ด API
  3. ์„ธ์…˜ ๊ณ ์ • ๋ณดํ˜ธ
  4. ์„ธ์…˜ ์ •์ฑ…
'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ExceptionTraslationFilter, RequestCacheAwareFilter
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ๊ถŒํ•œ์„ค์ •๊ณผ ํ‘œํ˜„์‹
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ์ต๋ช…์‚ฌ์šฉ์ž ์ธ์ฆ : AnonymousAuthenticationFilter
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) Remember-Me ์ธ์ฆ
DAHLIA CHOI
DAHLIA CHOI
DAHLIA CHOI
๐ŸŒผ dali's log ๐ŸŒผ
DAHLIA CHOI
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (103)
    • Spring (42)
    • JAVA & OOP (8)
    • AWS (2)
    • DevOps (5)
    • Network (7)
    • DB (5)
    • Algorithm (9)
      • BOJ (6)
      • PROGRAMMERS (2)
      • LEETCODE (0)
    • Books (5)
    • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… (5)
    • ํšŒ๊ณ  (0)
    • ๊ธฐํƒ€ (5)
    • FRENCH (1)
    • ํ•„์‚ฌ (2)
    • ๊ฒฝํ—˜ (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
DAHLIA CHOI
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ๋™์‹œ ์„ธ์…˜ ์ œ์–ด, ์„ธ์…˜ ๊ณ ์ • ๋ณดํ˜ธ, ์„ธ์…˜ ์ •์ฑ…
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.