개발/Spring Boot

[로그인 기능 만들기] 3. 비즈니스 로직

졔졔311 2024. 5. 3. 11:17
728x90
반응형

로그인 기능이라는게 몹시 전형적인 서비스 로직을 가지고 있다고 생각해, DB 구조만 정하고 개발에 착수하려 했다.

그런데 아무리 전형적이어도 내 머릿속에서만 가지고 있으면 알아보기 힘들다는 피드백을 받아,

동작 흐름을 그려보았다.

(나중에 변경될 수 있다는 점!)

(flow chart나 usecase diagram 등을 정확히 배운 것은 아니라서, 흐름 표현 외적인 세세한 표현은 틀릴 수 있음!)


 

DB 스키마


1.1. 서버에 id, pw를 입력해 회원가입하는 상황

 

User가 화면에서 ID, PW를 입력하고, 기본 정보(이름, 전화번호, 이메일 등)를 작성하면 유효성을 체크하여 새로운 회원을 등록한다.

기본 정보 중 전화번호나 이메일을 이용해 본인인증을 받고,

본인 인증된 정보로 중복 가입을 막는 방식을 취하고 싶은데, 사실 이게 구현이 어떻게 되는지 정확하게 몰라서 현재는 계획만 가진 상태..

본격적인 구현은 로그인 시 인증에 더 집중할 예정이므로 이 부분에 대해서는 좀더 알아보고 나중에 구현을 추가하는 방식으로 진행할 예정!

 

 

 

1.2. 서버에 id, pw를 입력해 로그인 하는 상황

 

 

이 경우, LoginServer(메인 서버)에서 id/pw에 대한 자체적인 검증을 통해 로그인이 완료된다.

로그인을 위한 추가적인 과정은 전부 LoginServer 안의 LoginAPI 에서 일어난다.

비밀번호 암호화/복호화 과정이 서버 내부에 들어갈 것이고,

다른 서버와의 연계가 필요없다.

 

 

 

2.1. 서버에서 인증 사이트를 선택해 회원가입하는 상황

user가 회원가입 시 원하는 계정 연동 사이트를 선택하면, 해당 사이트 AuthServer를 통해 인증을 진행한다.

인증이 완료되면 그 user에 대해 LoginServer에서 사용하는 고유한 ID를 자동 부여한다.

고민되는 부분은 AuthServer에서 인증을 통해 로그인이 되었다 쳐도, 그럼 특정 개인에 대해서는 토큰이 매번 동일해서 알아볼 수 있는 특징이 있는가?에 대해 궁금하다. 이게 된다면 문제가 없지만, 아니라면 어떤 방식으로 구동되는지 더 조사해야 할 것 같다.

 

2.2. 서버에서 인증 사이트를 선택해 로그인 하는 상황

 

LoginServer에서는 화면을 통해 auth type(인증 사이트)를 선택할 수 있도록 한다.

카카오, 네이버 등을 선택하면, LoginServer에서 AuthServer와의 통신을 통해 인증 화면을 불러오게 되고,

해당 인증 화면에서 카카오, 네이버 등에 로그인하여 인증을 받으면 LoginServer에서 로그인 처리가 완료된다.

728x90
반응형