๋ณธ ํ๋ก์ ํธ๋ ์นด์นด์ค ๋ก๊ทธ์ธ API๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
-
์ฌ์ฉ์๊ฐ ์นด์นด์ค ๋ก๊ทธ์ธ์ ์๋ํ๋ฉด, ์๋ฒ๋ OAuth2User ๊ฐ์ฒด๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์ฅํฉ๋๋ค.
- ์ด๋ฉ์ผ
- ๋๋ค์
- ์นด์นด์ค ID
-
์นด์นด์ค๋ก๋ถํฐ ์ธ์ฆ ์ฝ๋๋ฅผ ๋ฐ์ ํ, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก JWT ํ ํฐ์ ๋ฐ๊ธํฉ๋๋ค:
AccessToken
์ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค์ ์ ์ฅ๋ฉ๋๋ค.- XSS ๊ณต๊ฒฉ ๋ฐฉ์ง:
HttpOnly
์์ฑ์ ์ ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํ ์ ๊ทผ์ ์ฐจ๋จํ๊ณ ๋ณด์์ฑ์ ๊ฐํํฉ๋๋ค. - ํธ์์ฑ: ์ฟ ํค๋ ๋์ผ ๋๋ฉ์ธ ์์ฒญ ์ ์๋์ผ๋ก HTTP ์์ฒญ์ ํฌํจ๋๋ฏ๋ก, ํ๋ก ํธ์๋์์ ํ ํฐ์ ์ง์ ํค๋์ ์ถ๊ฐํ ํ์๊ฐ ์์ต๋๋ค.
- XSS ๊ณต๊ฒฉ ๋ฐฉ์ง:
RefreshToken
์ Redis์ ์ ์ฅ๋์ด ์์ ํ๊ฒ ๊ด๋ฆฌ๋ฉ๋๋ค.
-
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์์ํ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์ฒ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค:
- ์ฟ ํค์ ์ ์ฅ๋
AccessToken
์ ์ฆ์ ๋ง๋ฃ์ํต๋๋ค. - ํด๋น
AccessToken
์ Redis ๋ธ๋๋ฆฌ์คํธ์ ๋ฑ๋ก๋์ด ๋ ์ด์ ์ฌ์ฉํ ์ ์๋๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฟ ํค์ ์ ์ฅ๋
์นด์นด์ค ๊ณต์ API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ํํธ๋๊ฐ ์ฝ๊ฒ ์ฐ๋๋ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
-
์จ๋ณด๋ฉ ๊ณผ์ ์์ ์ฌ์ฉ์๋ ํํธ๋์ ๊ณต์ ํ ์ ์๋ ์ปค์คํ URL์ ์์ฑํ ์ ์์ต๋๋ค.
-
ํํธ๋๋ ์ด URL์ ํด๋ฆญํด ๊ฐํธํ๊ฒ ์ฐ๋ ์ ์ฐจ๋ฅผ ์์ํ๋ฉฐ, ์ฐ๋์ด ์๋ฃ๋๋ฉด ๋ ์ฌ์ฉ์๋ ๊ฐ์ ์บ๋ฆฐ๋๋ฅผ ๊ณต์ ํ๊ฒ ๋ฉ๋๋ค.
-
์ด์ ๋ ์ฌ์ฉ์๋ ๊ฐ์์ ์ญํ ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ก์ ํจ๊ป ๋จ๊ธฐ๊ณ ์ด์ค ํผ์์ ์ค์ฒํ ์ ์์ต๋๋ค:
- ํผ์์ฝ ๋ณต์ฉ
- ๊ฐ์ ๊ธฐ๋ก
- ๊ด๊ณ ์ฌ๋ถ
- ์ฝ๋ ์ฌ์ฉ ์ฌ๋ถ
ํํธ๋์ ์ฌ์ฉ์๊ฐ ๊ฐ์ ์บ๋ฆฐ๋๋ฅผ ๊ณต์ ํ์ฌ ํจ๊ป ๊ธฐ๋ก์ ์์ฑํ ์ ์์ต๋๋ค.
-
์นด์นด์ค ๊ณต์ API๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ์ฌ์ฉ์์ ํํธ๋๋ ํ๋์ ์บ๋ฆฐ๋์์ ์๋์ ๊ฐ์ ๊ธฐ๋ก์ ํจ๊ป ์์ฑํฉ๋๋ค:
- ํผ์์ฝ ๋ณต์ฉ ๊ธฐ๋ก
- ๊ฐ์ ๊ธฐ๋ก
- ๊ด๊ณ ์ฌ๋ถ
- ์ฝ๋ ์ฌ์ฉ ์ฌ๋ถ
-
์ฌ์ฉ์์
role
๊ฐ(ROLE_USER
,ROLE_PARTNER
)์ ๋ฐ๋ผ ๊ธฐ๋ก ๊ฐ๋ฅํ ํญ๋ชฉ๊ณผ ์ ๊ทผ ๊ถํ์ด ๋ค๋ฆ ๋๋ค.- ์ฌ์ฑ(ROLE_USER): ๊ด๊ณ ์ฌ๋ถ, ํผ์์ฝ ๋ณต์ฉ ์ฌ๋ถ, ๊ฐ์ ๊ธฐ๋ก
- ๋จ์ฑ(ROLE_PARTNER): ๊ด๊ณ ์ฌ๋ถ, ์ฝ๋ ์ฌ์ฉ ์ฌ๋ถ
์์คํ ๋ฐ ์ฐ๋๋ ์ฌ์ฉ์์์ ์ํธ์์ฉ์ ์๋ฆผ ์คํ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
-
SseEmitter๋ฅผ ํ์ฉํ **SSE(Server-Sent Events)**๋ฅผ ํตํด ์ค์๊ฐ ์๋ฆผ์ ์ ์กํฉ๋๋ค.
-
์ฌ์ฉ์๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฆผ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ ์ ์์ต๋๋ค:
- ํผ์์ฝ ๋ณต์ฉ ์๋ฆผ
- ๊ฐ์ ๊ธฐ๋ก ์๋ฆผ
- ์ฝ ๊ตฌ๋งค ์๋ฆผ
- ํํธ๋ ์ฐ๋ ์๋ฝ ์๋ฆผ
ํญ๋ชฉ | ๋ฐ์ค์ | ์์น์ฐ |
---|---|---|
ํ๋กํ | ![]() |
![]() |
GitHub | @goodjunseon | @Lims |
โโโ java
โย ย โโโ com
โย ย โโโ together
โย ย โโโ backend
โย ย โโโ ToGetHerApplication.java
โย ย โโโ domain
โย ย โย ย โโโ calendar
โย ย โย ย โย ย โโโ controller
โย ย โย ย โย ย โย ย โโโ CalendarController.java
โย ย โย ย โย ย โโโ dto
โย ย โย ย โย ย โย ย โโโ CalendarDetailResponse.java
โย ย โย ย โย ย โย ย โโโ CalendarRecordRequest.java
โย ย โย ย โย ย โย ย โโโ CalendarRecordResponse.java
โย ย โย ย โย ย โย ย โโโ CalendarSummaryResponse.java
โย ย โย ย โย ย โโโ model
โย ย โย ย โย ย โย ย โโโ entity
โย ย โย ย โย ย โย ย โโโ BasicRecord.java
โย ย โย ย โย ย โย ย โโโ CondomUsage.java
โย ย โย ย โย ย โย ย โโโ IntakeRecord.java
โย ย โย ย โย ย โย ย โโโ IntakeType.java
โย ย โย ย โย ย โย ย โโโ MoodType.java
โย ย โย ย โย ย โย ย โโโ RelationRecord.java
โย ย โย ย โย ย โโโ repository
โย ย โย ย โย ย โย ย โโโ BasicRecordRepository.java
โย ย โย ย โย ย โย ย โโโ IntakeRecordRepository.java
โย ย โย ย โย ย โย ย โโโ RelationRecordRepository.java
โย ย โย ย โย ย โโโ service
โย ย โย ย โย ย โโโ CalendarService.java
โย ย โย ย โย ย โโโ IntakeRecordInitService.java
โย ย โย ย โโโ couple
โย ย โย ย โย ย โโโ controller
โย ย โย ย โย ย โย ย โโโ CoupleController.java
โย ย โย ย โย ย โโโ model
โย ย โย ย โย ย โย ย โโโ entity
โย ย โย ย โย ย โย ย โย ย โโโ Couple.java
โย ย โย ย โย ย โย ย โย ย โโโ CoupleStatus.java
โย ย โย ย โย ย โย ย โโโ request
โย ย โย ย โย ย โย ย โย ย โโโ ConnectRequest.java
โย ย โย ย โย ย โย ย โย ย โโโ CoupleRequest.java
โย ย โย ย โย ย โย ย โโโ response
โย ย โย ย โย ย โย ย โโโ ConnectResponse.java
โย ย โย ย โย ย โย ย โโโ CoupleResponse.java
โย ย โย ย โย ย โโโ repository
โย ย โย ย โย ย โย ย โโโ CoupleRepository.java
โย ย โย ย โย ย โโโ service
โย ย โย ย โย ย โโโ CoupleService.java
โย ย โย ย โโโ notification
โย ย โย ย โย ย โโโ controller
โย ย โย ย โย ย โย ย โโโ NotificationSettingsController.java
โย ย โย ย โย ย โย ย โโโ NotificationSseController.java
โย ย โย ย โย ย โโโ model
โย ย โย ย โย ย โย ย โโโ Notification.java
โย ย โย ย โย ย โย ย โโโ NotificationSettings.java
โย ย โย ย โย ย โย ย โโโ NotificationType.java
โย ย โย ย โย ย โย ย โโโ intake
โย ย โย ย โย ย โย ย โย ย โโโ request
โย ย โย ย โย ย โย ย โย ย โย ย โโโ IntakeRequest.java
โย ย โย ย โย ย โย ย โย ย โโโ response
โย ย โย ย โย ย โย ย โย ย โโโ IntakeResponse.java
โย ย โย ย โย ย โย ย โโโ notification
โย ย โย ย โย ย โย ย โโโ request
โย ย โย ย โย ย โย ย โย ย โโโ NotificationDayRequest.java
โย ย โย ย โย ย โย ย โย ย โโโ NotificationEnabledRequest.java
โย ย โย ย โย ย โย ย โย ย โโโ NotificationTimeRequest.java
โย ย โย ย โย ย โย ย โโโ response
โย ย โย ย โย ย โย ย โโโ NotificationDayResponse.java
โย ย โย ย โย ย โย ย โโโ NotificationEnabledResponse.java
โย ย โย ย โย ย โย ย โโโ NotificationTimeResponse.java
โย ย โย ย โย ย โโโ repository
โย ย โย ย โย ย โย ย โโโ NotificationRepository.java
โย ย โย ย โย ย โย ย โโโ NotificationSettingsRepository.java
โย ย โย ย โย ย โโโ service
โย ย โย ย โย ย โโโ NotificationService.java
โย ย โย ย โย ย โโโ NotificationSettingsService.java
โย ย โย ย โย ย โโโ NotificationSseService.java
โย ย โย ย โโโ pill
โย ย โย ย โย ย โโโ controller
โย ย โย ย โย ย โย ย โโโ UserPillController.java
โย ย โย ย โย ย โโโ model
โย ย โย ย โย ย โย ย โโโ IntakeInfo.java
โย ย โย ย โย ย โย ย โโโ IntakeOption.java
โย ย โย ย โย ย โย ย โโโ UserPill.java
โย ย โย ย โย ย โย ย โโโ request
โย ย โย ย โย ย โย ย โย ย โโโ UserPillRequest.java
โย ย โย ย โย ย โย ย โโโ response
โย ย โย ย โย ย โย ย โโโ TodayPillResponse.java
โย ย โย ย โย ย โย ย โโโ UserPillRemainResponse.java
โย ย โย ย โย ย โย ย โโโ UserPillResponse.java
โย ย โย ย โย ย โโโ repository
โย ย โย ย โย ย โย ย โโโ IntakeInfoRepository.java
โย ย โย ย โย ย โย ย โโโ UserPillRepository.java
โย ย โย ย โย ย โโโ service
โย ย โย ย โย ย โโโ UserPillService.java
โย ย โย ย โโโ sharing
โย ย โย ย โย ย โโโ controller
โย ย โย ย โย ย โย ย โโโ SharingController.java
โย ย โย ย โย ย โโโ model
โย ย โย ย โย ย โย ย โโโ Sharing.java
โย ย โย ย โย ย โย ย โโโ request
โย ย โย ย โย ย โย ย โย ย โโโ ConfirmRequest.java
โย ย โย ย โย ย โย ย โย ย โโโ SaveUrlRequest.java
โย ย โย ย โย ย โย ย โโโ response
โย ย โย ย โย ย โย ย โโโ ConfirmResponse.java
โย ย โย ย โย ย โย ย โโโ SaveUrlResponse.java
โย ย โย ย โย ย โโโ repository
โย ย โย ย โย ย โย ย โโโ SharingRepository.java
โย ย โย ย โย ย โโโ service
โย ย โย ย โย ย โโโ SharingService.java
โย ย โย ย โโโ user
โย ย โย ย โโโ controller
โย ย โย ย โย ย โโโ MainPageController.java
โย ย โย ย โย ย โโโ UserAuthController.java
โย ย โย ย โย ย โโโ UserController.java
โย ย โย ย โย ย โโโ UserRedirectionController.java
โย ย โย ย โโโ model
โย ย โย ย โย ย โโโ entity
โย ย โย ย โย ย โย ย โโโ Role.java
โย ย โย ย โย ย โย ย โโโ User.java
โย ย โย ย โย ย โโโ request
โย ย โย ย โย ย โย ย โโโ UserRequest.java
โย ย โย ย โย ย โโโ response
โย ย โย ย โย ย โโโ MyPageResponse.java
โย ย โย ย โย ย โโโ UserResponse.java
โย ย โย ย โย ย โโโ mainpageinfo
โย ย โย ย โย ย โโโ PartnerInfoResponse.java
โย ย โย ย โย ย โโโ PillInfoResponse.java
โย ย โย ย โย ย โโโ UserInfoResponse.java
โย ย โย ย โโโ repository
โย ย โย ย โย ย โโโ UserRepository.java
โย ย โย ย โโโ service
โย ย โย ย โโโ MainPageService.java
โย ย โย ย โโโ UserAuthService.java
โย ย โย ย โโโ UserDeleteService.java
โย ย โย ย โโโ UserProfileService.java
โย ย โโโ global
โย ย โโโ common
โย ย โย ย โโโ BaseResponse.java
โย ย โย ย โโโ BaseResponseStatus.java
โย ย โย ย โโโ model
โย ย โย ย โโโ BaseEntity.java
โย ย โโโ config
โย ย โย ย โโโ CorsMvcConfig.java
โย ย โย ย โโโ RedisConfig.java
โย ย โย ย โโโ SecurityConfig.java
โย ย โโโ security
โย ย โโโ jwt
โย ย โย ย โโโ JWTFilter.java
โย ย โย ย โโโ model
โย ย โย ย โย ย โโโ BlackListToken.java
โย ย โย ย โย ย โโโ RefreshToken.java
โย ย โย ย โโโ service
โย ย โย ย โย ย โโโ BlackListTokenService.java
โย ย โย ย โย ย โโโ JwtTokenService.java
โย ย โย ย โโโ util
โย ย โย ย โโโ CookieUtil.java
โย ย โย ย โโโ JWTUtil.java
โย ย โโโ oauth2
โย ย โโโ CustomOAuth2UserService.java
โย ย โโโ CustomSuccessHandler.java
โย ย โโโ dto
โย ย โโโ CustomOAuth2User.java
โย ย โโโ KakaoResponse.java
โย ย โโโ OAuth2Response.java
โย ย โโโ UserDTO.java
โโโ resources
โโโ application-dev.yml
โโโ application-prod.yml
โโโ application.yml