Spring Security ๋ฐ Jwt๋ฅผ ์ด์ฉํ์ฌ ๋ก๊ทธ์ธ ๋ก์ง์ ๊ตฌํํ๋ ์ค, ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค. org.springframework.security.authentication.BadCredentialsException: ์๊ฒฉ ์ฆ๋ช
์ ์คํจํ์์ต๋๋ค. at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:80) at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(Ab..
Backend Language/Spring boot(Java)
์ฑ ๋ฐ์นญ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์, ๋ก๊ทธ์์ api๋ฅผ ์์ฑํ๋ค. JWT๋ก User์ ์ ๋ณด๋ฅผ ์ ๊ทผํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์, ๋ก๊ทธ์์์ ํ๊ธฐ ์ํด์๋ AccessToken์ ์๊ฐ์ ๋ง๋ฃํด์ผํ๋ค. ์์ฑํ Token์ ๋ง๋ฃํ๊ธฐ ์ํด์๋ Redis๋ฅผ ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๊ณ , ๋ธ๋ก๊ทธ์ ์์ฑํ๋ฉฐ ๋ณต์ตํด๋ณด๊ณ ์ ํ๋ค. 1. build.gradle implementation 'org.springframework.boot:spring-boot-starter-data-redis' build.gradle์ ์์ ๊ฐ์ dependencies ์ถ๊ฐ 2. RedisRepositoryConfig @RequiredArgsConstructor @Configuration @EnableRedisRepositories public c..
spring security๋ฅผ ๊ณต๋ถํ๊ณ ์, spring boot file์ ์์ฑํ์๋๋ฐ build ์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค. ํ๋ก์ ํธ ๋ฒ์ ์ด 17์ด์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๊ณ , 11๋ก downgrade๋ฅผ ํด์ฃผ์ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค. # build.gradle file ์์ group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' ----------------------------------------------- group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' #๋ณ๊ฒฝ
์ง๋ UMC 1๊ธฐ ์ฑ ๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ฌ์ฉํ ๊ตฌ์กฐ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. ์ปจํธ๋กค๋ฌ: ์น MVC(Model, View, Controller)์ ์ปจํธ๋กค๋ฌ ์ญํ ์๋น์ค: ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ ๋ฆฌํฌ์งํ ๋ฆฌ: ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ๊ทผ, ๋๋ฉ์ธ ๊ฐ์ฒด๋ฅผ DB์ ์ ์ฅํ๊ณ ๊ฐ๋ฆฌ ๋๋ฉ์ธ: ๋น์ฆ๋์ค ๋๋ฉ์ธ ๊ฐ์ฒด ์) ํ์, ์ฃผ๋ฌธ, ์ฟ ํฐ, ๋ฑ๋ฑ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ๊ด๋ฆฌ๋จ
# ํ๋ก์ ํธ ํ์ผ๋ก ์ด๋ cd //project file path # ๋น๋ ์ ๊ฑฐ ํ ๋น๋ gradlew clean build # ๋น๋ # gradlew.bat ํ์ผ ์คํ ๋ช
๋ น์ด $gradlew build # ์คํํ๊ธฐ java -jar (ํ๋ก์ ํธ ๋ช
)-0.0.1-SNAPSHOT.jar ํ๋ก์ ํธ ์คํํ๊ธฐ์ํ ํ์ผ์ ํ๋ก์ ํธํ์ผ/build/libs์ ๋ค์ด์๋ค. path๋ก ์ด๋ํ์ฌ java -jar + ์ด๋ฅผ ๋ณต์ฌ, ๋ถ์ฌ๋ฃ๊ธฐ ํด์ฃผ๋ฉด ๋๋ค.
์ ์ฌ์ดํธ์์ ์ํ๋ Project, dependencies๋ฅผ ์ ํํ ํ, Generate๋ฅผ ํ๊ฒ ๋๋ฉด zipํ์ผ์ ๋ค์ด ๋ฐ๊ฒ ๋๋ค. ์์ถ์ ํ๊ณ ์ํ๋ IDE์์ ํ๋ก๊ทธ๋จ(build gradle ํ์ผ)์ ์ด๋ฉด ๋๋ค. ๋๋ Intellj๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ค. ํ๋ก์ ํธ๋ฅผ ์์ฑํ ํ, build gradle ํ์ผ์ ๋ณด๋ฉด ์ ํํ dependencies๊ฐ ๋ค์ด์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ํ๋ก์ ํธ๋ฅผ run ํ๊ฒ ๋๋ฉด localhost:8080์ ํตํด ์ ํ๋ฉด์ด ๋ํ๋๊ฒ ๋๋ค. ์ด๋ผ ์ฑ๊ณต์ด๋ค.
์ฑ ๊ฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ User๊ฐ ์ด ๊ธ์ ๋ถ๋ฌ์ฌ ๋, ๋ชจ๋ ๊ธ์ด ๋ถ๋ฌ์์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์ผ์ ๋ถ๋ถ์ ๊ธ๋ง ๋ถ๋ฌ์์ง๊ฒ api๋ฅผ ์์ ํด๋ฌ๋ผ๋ ๋ถํ์ ๋ฐ์๋ค. ์ธํฐ๋ท์ ์ฐพ์๋ณด๋, FrontEnd์ ์ญํ ์ธ ๊ฒ ๊ฐ์์ง๋ง ์ผ๋จ ์๊ฒ ๋ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ต๋ํ api๋ฅผ ์์ ํด๋ณด๊ณ ์ํ๋ค. (์์ผ๋ก๋ ์ด๊ฒ ์๋ฒ์ ์ญํ ์ธ์ง, ํ๋ก ํธ์ ์ญํ ์ธ์ง ๋ค์ ํ์ธํ ํ api๋ฅผ ์์ฑํด์ผ๊ฒ ๋ค) Jpa Repository๋ฅผ ํตํด์ User๊ฐ ์ด ๊ธ์ ๊ฐ์ ๋ถ๋ฌ์ค๊ฒ ๋๋ค. ์ด๋, Return variable์ด List๊ฐ ๋๋ฏ๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋๋ฐ for๋ฌธ์ ์ฌ์ฉํด์ List์ ์๋ ๊ฐ์ ๋๋ค๋ฅธ List๋ก ์ฎ๊ฒจ์ผํ๊ธฐ ๋๋ฌธ์ ๋ณต์กํ ๋ฐ๋ณต๋ฌธ์ด ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ์์๋์๋ค. for๋ฌธ์ผ๋ก List๋ฅผ ๋ ๋ค๋ฅธ List๋ก ์ฎ๊ธฐ๋ฉด์ ์์ ์๋ ๊ฐ์ ๋ณ๊ฒฝํ๋..
๊ทธ ์ ๊น์ง๋ api์์ ์ง์ userid๋ฅผ ๊ฑด๋ด๊ณ JPA CRUD FindByUserId๋ฅผ ํตํด ์ ์ ์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์์๋ค. ํ์ง๋ง ํ์๊ฐ์
์ ํ๊ณ , ๋ก๊ทธ์ธ์ ํ๊ฒ ๋๋ฉด token์ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก UMC APP API๋ฅผ ํ์๋ถ๊ป์ ์์ฑํด์ฃผ์
จ๋ค. ๊ทธ๋ ๋ค๋ฉด, token(authorization์ ์๋)๋ฅผ ๊ณ์ ์ฌ์ฉํด์ json์ ๋ฐ์์์ผํ๋ ์ํฉ์์๋ userId๋ฅผ ๋ณด๋ด์ง ์๊ณ jwt๋ฅผ ํตํด์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์ง ์์๊นํ๋ ์๋ฌธ์ด ๋ค์๋ค. ์ด์ ๋ฐ๊ฒฌํ๊ฒ ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ ์ค, ๐ป๋์๋ฆฌ ์ฑ ํ๋ก์ ํธ์์๋ Principal์ ์ฌ์ฉํ๊ฒ ๋์๋ค. (@AuthenticationPrincipal ์ด๋ SecurityContextHolder, Authentication ๋ชจ๋ ์ฌ์ฉํ๋๋ฐ ์๋ฌ ๋จ,, ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์,,..
โป ํด๊ฒฐ ๋ด์ฉ์ ๋งจ ๋ง์ง๋ง์ ์์ โป ๊ฐ์ฒด์งํฅ์ ์ฌ๊ณ ์ ํ๋ก๊ทธ๋๋ฐ ์์
์ ๋ฃ๋ ์ค ์ด์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค. ๊ต์๋์ด ์ค๋ช
ํด์ฃผ์ ์ฝ๋๋ฅผ ๋๊ฐ์ด ์์ฑํ๋๋ฐ, ๋๋ง ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค. ํนํ @RestController๋ฅผ ์ฃผ์์ฒ๋ฆฌ ํด์ ํ๊ณ ์งํํ๋๋ ๋ฐ์ํ ์ค๋ฅ์๋ค,,, ( ๊ทธ ์ ์๋ ์๋ง ๋๋๋ฐ,, ์๊ทธ๋ ค,,) ์ค๋ฅ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2021-12-02 13:15:47.039 ERROR 28612 --- [ main] o.s.boot.SpringApplication : Application ru..
ํ๊ต ์ ๊ณต ์์
์๊ฐ์ Sping boot๋ฅผ ์ฌ์ฉํ๋ฉด์, Httpie๋ฅผ ์ค์น๋ฅผ ํด์ผ๋ง ํ๋ค. Mac OS์์๋ ๋ค์ด๋ก๋๊ฐ ์ฝ์ง๋ง, Winodw OS์์๋ Python์ด ์ค์น๋์ด ์์ง ์์ ์ค์น๊ฐ ์ฉ์ดํ์ง ์๊ธฐ ๋๋ฌธ์ Winodw OS์์ Httpie๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์์ฑํ๊ณ ์ ํ๋ค. https://luji.tistory.com/99 httpie Windows์์ ์ค์นํ๊ธฐ httpie๋? ํ์ด์ ์์ ๊ฐ๋ฐ๋ ์ ํธ๋ฆฌํฐ๋ก http ๊ฐ๋ฐ์ด๋ ๋๋ฒ๊น
์ฉ๋๋ก ์ฌ์ฉ๋๋ค. ์ฌ์ฉ์ฑ์ด ์ฌ์ฐ๋ฉด์ json์ด ๋ด์ฅ๋์ด์๋ค. ๊ฐ๋
์ฑ์ด ๋ฐ์ด๋๋ฉฐ ๊ธฐํ ์ฅ์ ๋ค์ด ์์. ๋ณดํต ๋ฆฌ๋
์ค๋ ๋งฅ์์ yum, apt, bre luji.tistory.com ์ด ๋ธ๋ก๊ทธ๋ฅผ ํตํด์ Httpie ์ค์น๋ฅผ ์งํํ๋ค. 1. ๋ฐ ๋งํฌ์ ๋ค์ด๊ฐ์ Python์ ..