Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로젝트진행
- java
- OAuth
- 내돈내산
- maven
- YBM전화영어
- 탄력근무
- 백엔드스쿨
- 자바스크립트
- Queue
- 교육철학과 교육사
- 백엔드공부
- OpenAPI프로젝트
- JavaScript
- 시급합니다
- Spring
- 자료구조
- 백엔드
- 탐색알고리즘
- npm
- webServlet
- 전화영어
- array
- 개발자
- 최단경로문제
- Node.js
- 원격근무
- BFS
- 제로베이스
- 그래프탐색
Archives
- Today
- Total
개발자취
TIL | 로그인 프로젝트 1 본문
1. 프로젝트 설계
1.1 프로젝트 개요
본 프로젝트는 앞서 배운 개념을 바탕으로 하여 OAuth를 이용한 소셜 로그인 구현 및
블로그 포스팅 웹앱을 만드는 것입니다. 본 앱을 만들기 위해 수강한 강의에서는 모바일에
최적화된 앱으로 제작하였으나, 쓰니의 개발 능력 향상을 위해 웹에 최적화된 앱의 형태로
변형하여 제작하였습니다.
1.2 아키텍처 설계
1.2.1 OAuth flow
- Vendor
- Naver
- Facebook
- Kakao
- 각각의 OAuth provider에 개발자 계정을 만들어서 그에 따른 설정을 해야함.
- access token -> (platformUserId, platform) -> 회원가입 / 로그인 처리
- 위 vendor를 통한 로그인 처리를 위해서는 HTTPS 상에서만 처리가 가능함. HTTPS -> ngrok
1.2.2 이메일 가입
- 인증 상태를 확인할 필요가 있음 -> 유저 정보에 `verified`라는 필드가 있어야 됨.
- 이메일 인증과정
1) user의 이메일에 특수한 코드를 전송
(ex) "다음 링크로 들어와 인증을 완료해주세요.
https://webservice.com/verify_email?code=rulru-ralra"
2) 위 링크로 접속시 링크를 `GET`하였으므로, `verified`가 `true`로 바뀜.
- AWS(Amazon Web Services) -> SES(Simple Email Service)로 인증 메일을 보냄.
- 비밀번호 초기화
- 비밀번호를 찾을 수 있다는 것은 plane text로 저장이 되어있다는 의미로
암호의 양방향(암호화, 복호화) 변환 이슈가 발생할 수 있어 보안에 취약해질 수 있다.
따라서 본 프로젝트에서는 최초 가입시 암호의 형태를 one-way hash function으로 사용하여
해시된 값으로 db에 저장함.
- 비밀번호 찾기는 유저가 가입시 인증한 방법과 동일하게 user의 이메일로 비밀번호를
초기화할 수 있는 링크를 전송함.
- user에게 전송된 메일의 링크로 접속하면, 그 때 바꾸고자 하는 비밀번호로 갱신을 가능하게 함.
1.2.3 DB 모델링 및 배포
- 데이터베이스는 AWS EC2에서 접근 가능한 DB면 가능한 MongoDB를 사용함.
(타 DB의 경우 EC2 접근만 만족하면 가능).
- AWS를 통해 본 애플리케이션을 배포함.
- EC2 (server) / node server를 띄울 수 있는 서버
- git 레포지토리를 clone해서 배포함.
- HTTPS를 지원을 위한 Amazon 인증서를 사용함.
- ELB(Elastic Load Balancer)를 사용하여 인증서가 위치하도록 하고,
ELB가 EC2와 기본적인 HTTP 통신을 함(plane text 통신).
- plane text 통신이지만, 보안상 격리된 곳에서 통신하므로 보안상으로는 안전함.
1.3 프론트엔드 UI 디자인
1.4 백엔드 디자인
'개발 > Dev | 웹개발' 카테고리의 다른 글
TIL | Git Command 총정리 (0) | 2022.08.19 |
---|---|
TIL | 로그인 프로젝트 2 (0) | 2022.07.31 |
TIL | RDB / Postgres / GraphQL / OAuth / 쿠키 / JWT (0) | 2022.07.30 |
TIL | 토이프로젝트 4 - npm package maker (0) | 2022.07.27 |
TIL | 토이프로젝트 3 - Github 관리 CLI 만들기 (0) | 2022.07.27 |
Comments