Spring Security JDBC ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ (BCryptPasswordEncoder ์•”ํ˜ธํ™”)

2021. 12. 3. 16:47ใ†Spring

728x90

์ด๋ฒˆ์—๋Š” Spring Security ์—์„œ JDBC๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค. 

https://hyejin.tistory.com/281

 

Spring Security ๋กœ๊ทธ์ธ ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ (Security ํ™˜๊ฒฝ์„ค์ •, AuthenticationManger, AutenticationProvider)

1. Spring Security ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ Spring ๋ฒ„์ „ : 5.2.13 java : 1.8 1๏ธโƒฃ Spring Security Web https://mvnrepository.com/artifact/org.springframework.security/spring-security-web 2๏ธโƒฃ Spring Securi..

hyejin.tistory.com

์—ฌ๊ธฐ์„œ ํ–ˆ๋˜ ๋ฐฉ์‹์€ InMemory ๋ฐฉ์‹์œผ๋กœ 

id์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ–ˆ๋˜ ๋ฐฉ์‹์ด๋‹ค. 

 

1๏ธโƒฃ root-context.xml์— dataSource ๋นˆ ์„ค์ • 

์ด๋ฒˆ์—๋Š” JDBC๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— pom.xml์— jdbc ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์ฃผ๊ณ , 

root-context.xml์— DataSource ๋นˆ์„ ์„ค์ •ํ•œ๋‹ค. 

(root-context.xml์— ์„ค์ •ํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค๋ฅธ ์„ค์ •ํŒŒ์ผ์ธ security-context.xml์—์„œ ์‚ฌ์šฉ(๊ณต์œ )ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

 

username๊ณผ password๋Š” ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค id์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์‹œ๊ธธ..

 

 

2๏ธโƒฃ ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ 

JDBC๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ/๊ถŒํ•œ ์ฒดํฌ ๋ฐฉ์‹์œผ๋กœ๋Š” ์šฐ์„  Spring์—์„œ ์ง€์ •๋œ ํ˜•์‹์˜ ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹๊ณผ 

๊ธฐ์กด์— ์ž‘์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. 

 

- Spring Security๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์˜ ํ…Œ์ด๋ธ” 

์ด ํ…Œ์ด๋ธ”์ด Spring์—์„œ ์ง€์ •๋œ ํ˜•์‹์˜ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์ด๋‹ค! (ํ…Œ์ด๋ธ”๋ช…, ์ปฌ๋Ÿผ๋ช… ๋“ฑ ๊ผญ ๊ฐ™๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.)

๊ทธ๋ฆฌ๊ณ  security-context.xml์— <jdbc-user-service>๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , dataSource๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ๋™์ž‘์„ ํ™•์ธํ•˜๋ฉด ๋˜๋Š”๋ฐ 

์ด์ œ passwordEncoder๋ฅผ ํ†ตํ•ด ํŒจ์Šค์›Œ๋“œ ์ธ์ฝ”๋”ฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  PasswordEncoder ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  security-context.xml์— ๋นˆ ์ƒ์„ฑํ•˜๊ณ , 

 

passwordEncoder ๋นˆ ๋“ฑ๋ก ํ•ด์ค€๋‹ค. 

 

- ๊ธฐ์กด์— ์ž‘์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹ 

์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”
๊ถŒํ•œ ํ…Œ์ด๋ธ”

์ด๋ ‡๊ฒŒ tbl_member์™€ tbl_member_auth๋กœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด์ค€๋‹ค. 

์ด๋ ‡๊ฒŒ ๊ธฐ์กด์— ํšŒ์› ๊ด€๋ฆฌ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด spring-security์—์„œ๋Š” ์ง€์ •ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๋Š” ์ž‘์—…์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 

<security:jdbc-user-service>ํƒœ๊ทธ์— <users-by-username-query>์™€ <authorities-by-username-query> ํƒœํฌ์— ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค. 

security-context.xml์— ์ถ”๊ฐ€

๊ทธ๋ฆฌ๊ณ  BcryptPasswordEncoder ๋ฅผ ํ†ตํ•ด ์•”ํ˜ธํ™” ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค„ ๊ฒƒ์ด๋‹ค. 

 

โ— bcrypt๋Š” ๋Œ€ํ‘œ์ ์ธ ์•”ํ˜ธ ์ธ์ฝ”๋”ฉ ์ „์šฉ ํ•ด์‹œ ํ•จ์ˆ˜๋กœ ํŠน์ • ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™” ๋ฐ ์•”ํ˜ธํ™”๋œ ํŒจ์Šค์›Œ๋“œ ์ฒดํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ์—ญ์œผ๋กœ ์›๋ž˜ ํŒจ์Šค์›Œ๋“œ๋กœ๋Š” ๋ชป๋Œ๋ฆฐ๋‹ค๋Š” ํŠน์ง•์ด์žˆ๋‹ค. 

security-context.xml์— ๋นˆ ์„ค์ •

BCryptPasswordEncoder๋ฅผ ๋นˆ ์„ค์ •ํ•ด์ฃผ๊ณ , 

security-context.xml

<security:authentication-manager> ํƒœ๊ทธ์•ˆ์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 

 

tbl_member์™€ tbl_member_auth์— ์‚ฌ์šฉ์ž๋“ค์€ ์•Œ์•„์„œ ์ถ”๊ฐ€ํ•˜๊ณ , 

๋กœ๊ทธ์ธ์„ ํ•ด์ค€๋‹ค. 

์ด๋ ‡๊ฒŒ /sample/admin ์ ‘์†ํ•˜๋ฉด ๋กœ๊ทธ์ธ ์ฐฝ์ด ๋œจ๊ณ  

tbl_member์— ์ €์žฅ๋œ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. 

์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ๋˜๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

728x90