Spring.15_Spring Security(3)

์ดํ˜œ๋ฏผยท2024๋…„ 9์›” 24์ผ

spring

๋ชฉ๋ก ๋ณด๊ธฐ
16/18
post-thumbnail

< ์ˆ˜์—… ์ˆœ์„œ - 2024.09.24 >

๐Ÿ“์ž๋™๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ

01. security-context.xml

  • remember_me ํƒœ๊ทธ ์ž‘์„ฑ

  • [remember-me]๋ผ๋Š” ์ด๋ฆ„์˜ ์ฟ ํ‚ค์—๋Š” ์ž๋™ ๋กœ๊ทธ์ธ ๊ด€๋ จ ํ† ํฐ์ด ์ž๋™ ์ƒ์„ฑ๋˜์–ด ์ €์žฅ - ์ฟ ํ‚ค ์œ ์ง€ ์‹œ๊ฐ„ : ๊ธฐ๋ณธ๊ฐ’ 2์ฃผ

  • token-validity-seconds ์†์„ฑ : ์ธ์ฆ ๊ด€๋ จ ํ† ํฐ์˜ ์œ ์ง€์‹œ๊ฐ„(์ดˆ) ์ž…๋ ฅ

02. form_login.jsp

  • ์ž๋™ ๋กœ๊ทธ์ธ input ํƒœ๊ทธ ์ถ”๊ฐ€

  • ๋ฐ˜๋“œ์‹œ input ํƒœ๊ทธ์˜ type ์†์„ฑ๊ฐ’์„ [checkbox]๋กœ ์„ค์ •ํ•˜๊ณ  name ์†์„ฑ๊ฐ’์„ [remember-me]๋กœ ์„ค์ •

  • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ณ  ๋‹ค์‹œ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•ด๋„ ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€

๐Ÿ“์ธ์ฆ ๊ด€๋ จ ํ† ํฐ์„ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜์—ฌ ์ €์žฅ

  • ์ธ์ฆ ๊ด€๋ จ ํ† ํฐ์„ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ์ƒ ์œ„ํ—˜ํ•˜๋ฏ€๋กœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด ์ธ์ฆ ๊ด€๋ จ ํ† ํฐ์„ ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ

03. persistent_logins ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑ

create table persistent_logins(username varchar2(100), series varchar2(100) primary key, token varchar2(100), last_used timestamp);

04. security-context.xml

  • data-source-ref ์†์„ฑ : DataSource ๊ด€๋ จ ํด๋ž˜์Šค์˜ Spring Bean ์‹๋ณ„์ž

  • Spring Security ๊ฐ€ ์ธ์ฆ ๊ด€๋ จ ํ† ํฐ์„ ๋ฐœ๊ธ‰ ๋ฐ›์•„ ํ…Œ์ด๋ธ”์˜ ํ–‰์œผ๋กœ ์ž๋™ ์‚ฝ์ž…ํ•˜๊ณ  ์ธ์ฆ ์ฒ˜๋ฆฌ์‹œ ์ž๋™ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์‚ฌ์šฉ

  • ์ž๋™๋กœ๊ทธ์ธ ์‹œ insert ๋ช…๋ น์ด ์ž‘์„ฑ๋˜์–ด ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…, ์ธ์ฆ ์ฒ˜๋ฆฌ์‹œ ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์ž๋™ ๊ฒ€์ƒ‰, ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•˜๋ฉด ๊ธฐ์กด์— ์žˆ๋˜ ํ–‰์„ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์‚ฝ์ž…

  • ๋กœ๊ทธ์•„์›ƒ ์‹œ [remember-me] ์ฟ ํ‚ค ์‚ญ์ œ

๐Ÿ“๋‹ค์ค‘ ๋กœ๊ทธ์ธ ๋ฐฉ์ง€

05. security-context.xml

  • session-management : ์‚ฌ์šฉ์ž ์ •๋ณด ๋ฐ ๊ถŒํ•œ์ •๋ณด๊ฐ€ ์ €์žฅ๋œ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ

  • concurrency-control : ์„ธ์…˜์˜ ํ—ˆ์šฉ ๊ฐฏ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ - ๋‹ค์ค‘ ๋กœ๊ทธ์ธ ๋ฐฉ์ง€(๋™์‹œ ์ ‘์† ์ฐจ๋‹จ)

    • max-sessions ์†์„ฑ : ์„ธ์…˜์˜ ์ตœ๋Œ€ ํ—ˆ์šฉ ๊ฐฏ์ˆ˜๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ • - ๊ธฐ์กด ์„ธ์…˜ ๋ฌดํšจํ™” ์ฒ˜๋ฆฌ(์–ธ๋ฐ”์ธ๋”ฉ) : ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š” ์„ธ์…˜์ด ๋‹ค๋ฆ„
    • expired-url ์†์„ฑ : ์„ธ์…˜์˜ ์ตœ๋Œ€ ํ—ˆ์šฉ ๊ฐฏ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ์š”์ฒญํ•  ํŽ˜์ด์ง€
    • error-if-maximum-exceeded ์†์„ฑ : false(๊ธฐ๋ณธ๊ฐ’) - ๊ธฐ์กด ์„ธ์…˜์„ ๋ฌดํšจํ™” ์ฒ˜๋ฆฌํ•˜๊ณ  ์ƒˆ๋กœ์šด ์„ธ์…˜์„ ์‚ฌ์šฉ/ ๋˜๋Š” true - ๊ธฐ์กด ์„ธ์…˜์„ ์œ ์ง€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ์„ธ์…˜์„ ๋ฏธ์ƒ์„ฑํ•˜์—ฌ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ๋ถˆ๊ฐ€๋Šฅ

06. LoginController

  • /session_error ํŽ˜์ด์ง€ get ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ ์‹œ ํ˜ธ์ถœ๋˜๋Š” ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ฉ”์†Œ๋“œ ์ž‘์„ฑ

07. session_error.jsp : ์—๋Ÿฌ ํŽ˜์ด์ง€

0๊ฐœ์˜ ๋Œ“๊ธ€