https://github.com/likelasttime/auth-service
JWT 인증 서비스
https://github.com/likelasttime/auth-service
java jwt msa spring-boot spring-security
Last synced: about 2 months ago
JSON representation
JWT 인증 서비스
- Host: GitHub
- URL: https://github.com/likelasttime/auth-service
- Owner: likelasttime
- Created: 2022-12-06T11:23:41.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-05-22T15:56:18.000Z (about 3 years ago)
- Last Synced: 2025-01-20T12:25:16.553Z (over 1 year ago)
- Topics: java, jwt, msa, spring-boot, spring-security
- Language: Java
- Homepage:
- Size: 3.78 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# [완료] Auth-Service
[](https://sonarcloud.io/project/overview?id=likelasttime_Auth-Service)
JWT를 이용한 인증 서비스 개인 프로젝트
MSA 아키텍처(📁auth-server 📁eureka-server 📁front-server 📁gateway 📁user-server)
Monolithic 아키텍처(📁 src)
🟥 MSA 인증 서버 실행 영상
https://youtu.be/ARxAACi77Lw
📘기록 일지
https://desert-echidna-283.notion.site/Auth-Service-b3dd5d28044541e6a8e520f7d1f1abaa
### 기술스택
🟧 Backend
- Java 11
- Spring Boot 2.6.14
- MySQL
- Spring Data JPA
- Redis
- Junit5
- H2
- Spring Cloud 2021.0.0
- Eureka
- Spring Cloud Gateway
🟨 Frontend
- HTML
- CSS
- JavaScript
- JQuery
- BootStrap
- Thymeleaf
## MSA 아키텍처

*eureka-server* : 인스턴스들의 정보를 가지고 있는 서버
*gateway* : 라우팅, 토큰 검증
*user-server* : 사용자와 관련된 다양한 서비스(회원가입, 유저 관리 등)
*auth-server* : 로그인 및 토큰 생성
*front-server* : view
## ERD

## 기능
- 가입, 로그인
- 로그인에 성공하면 JWT 발급
- Access Token, Refresh Token은 Cookie에 저장
- 유저 관리 페이지
- 관리자 권한을 가진 사람만 인가
- NOT_PERMITTED가 아닌 회원들만 조회(USER, ADMIN, MANAGER)
- 인증 서버 API
- 세션 대신에 JWT로 판단하도록 CustomFilter 생성
- CustomFilter는 UsernamePasswordAuthenticationFilter 앞단에 위치
- RDBMS 사용(MySQL)
- Password Encryption
- 랜덤 값 salt를 추가해서 해쉬 함수 생성
- salt는 회원 테이블과 1:1 매핑으로 SALT 테이블에 저장
- BCrypt 사용
- 비밀번호 찾기
- 새로운 비밀번호를 설정할 수 있는 링크를 담아 이메일을 전송
- 캐시
- Refresh Token 저장
- 이메일 인증, 비밀번호 찾기 메일 URL 파라미터 key를 저장
- 해당 URL은 임의의 시간 동안만 유효함
- 이메일 인증
- 로그인 시 NOT_PERMITTED 유저라면 이메일 인증 페이지로 이동
## API 명세
|Method|URI|설명|
|---|---|----|
|POST|/auth-server/auth/login|로그인|
|POST|/user-server/auth/signup |회원 가입|
|POST|/user-server/auth/verify|인증 메일 전송|
|POST|/user-server/auth/verify/{key}|인증 메일 검증|
|PUT|/user-server/auth/password|비밀번호 변경|
|POST|/user-server/auth/password/{key}|새 비밀번호 설정 URL 검증|
|POST|/user-server/auth/password|새 비밀번호 설정 메일 발송|
|GET|/user-server/user/email/{username}|사용자가 가입한 이메일 찾기|
|PUT|/user-server/user/info|개인 정보 수정|
|POST|/user-server/user/remove|탈퇴|
|GET|/user-server/admin/manage|사용자 관리(조회)|
## 📸 Screenshot
✔️ 메인

✔️ 회원 가입

✔️ 로그인

✔️ 비밀번호 찾기

✔️ 사용자 관리
