가입·인증 데이터 인벤토리
“화면에서 한 번 보이는 값”과 “회원 프로필로 오래 저장되는 값”은 다릅니다. 아래 표는 수집원, 실제 처리, 보관 위치, 현재 코드에서 확인 가능한 보유 상태를 분리했습니다.
실제 값은 조회하지 않음운영 회원의 개인정보·보유 건수·채움률은 확인하지 않았습니다.
PASS는 서버 결과가 기준이메일 가입 body의 CI·실명 등은 호환용이며 서버가 tx로 재조회합니다.
로그인 ≠ 자격인증계정이 생겨도 기본 USER이며, 별도 법조 자격 승인이 필요합니다.
이메일 가입
직접 입력 + 이메일 인증 + PASS 본인확인 + 약관 동의
| 정보 | 수집원·시점 | 필수 | 용도 | 실제 처리·저장 | 위치 | 보유 상태 | v3 검토 |
|---|---|---|---|---|---|---|---|
| 이메일 | 가입폼 직접 입력 | 예 | 계정 ID·로그인·연락 | 중복 확인 후 Member 저장 | Member.email | 스키마·저장 확인 | 정규화·중복 정책 명시 |
| 비밀번호 | 가입폼 직접 입력 | 예 | 이메일 로그인 | 서버 해시만 장기 저장 | Member.password | 해시 저장 확인 | PASS 왕복 재개 방식 개선 |
| 비밀번호 확인 | 가입폼 직접 입력 | 예 | 입력 오타 확인 | 비교 후 장기 저장 안 함 | 요청 body/브라우저 상태 | 처리용 | 전송 필요성 재검토 |
| 이메일 인증코드 | 메일 발송·폼 입력 | 예 | 이메일 소유 확인 | 6자리 검증, 완료 Redis 키는 가입 후 삭제 | Redis + 요청 body | 일시 확인 | TTL·시도 제한·감사 기준 |
| PASS tx | NICE 본인확인 시작/완료 | 예 | 서버 신원 재조회 | 신원 확정용 트랜잭션 값 | 브라우저 저장소·서버 PASS 처리 | 일시 처리 | 만료·재사용 방지 명시 |
| CI | 서버가 PASS tx로 조회 | 사실상 예 | 개인 동일성 | body 값은 무시하고 PASS 결과 저장 | Member.ci | 저장 확인 | 동일인 중복 가입 차단 키 |
| 실명 | 서버가 PASS tx로 조회 | 예 | 본인·자격 확인 | PASS 결과 우선 저장 | Member.name | 저장 확인 | 변경·재인증 이력 |
| 휴대폰 | 서버가 PASS tx로 조회 | 예 | 연락·본인확인 | PASS 결과 우선 저장 | Member.phone | 저장 확인 | 정규화·변경 검증 |
| 생년월일 | 서버가 PASS tx로 조회 | 예 | 신원·연령 확인 | 날짜 정규화 후 저장 | Member.birthdate | 저장 확인 | KST/UTC 기준 고정 |
| 성별 | 서버가 PASS tx로 조회 | 응답 의존 | 회원 기본 정보 | enum 변환 후 저장, 없으면 null | Member.gender | 저장 경로 확인 | 필요성·최소수집 재검토 |
| 회원 코드 | 서버 자동 생성 | 자동 | 외부 노출용 회원 식별 | TSID 생성 | Member.code | 저장 확인 | 전역 식별 규칙 유지 |
| 닉네임 | 서버 자동 생성 | 자동 | 커뮤니티 표시 | 중복 확인한 랜덤 닉네임 | Member.nickname | 저장 확인 | 변경·금칙어 자동화 |
| 기본 역할 | 서버 자동 생성 | 자동 | 가입 직후 제한 권한 | USER 역할 생성 | MemberRole | 저장 확인 | 정책표에서 역할·상태 분리 |
| 약관 동의 | 가입폼 선택 | 항목별 | 법적 동의·수신 설정 | LEGAL_AGE, TERMS, PRIVACY, MARKETING, PROPOSAL 최신 버전 이력 | AgreementHistory | 이력 저장 확인 | 화면 문구·버전·증거 통합 |
| 가입 초안 | 모바일 PASS 왕복 전 | 조건부 | 리로드 뒤 폼 복구 | 이메일·평문 비밀번호·확인값·코드·인증상태 저장 후 복구 시 삭제 | sessionStorage | 일시 보관 확인 | 평문 비밀번호 미보관 방식 |
| 호환용 body 신원 | 클라이언트 요청 | 일부 DTO 필수 | 기존 클라이언트 호환 | CI·이름·전화·생일·성별은 신원 근거로 사용하지 않음 | 요청 body | 서버 무시 확인 | v3 계약에서 제거/정리 |
카카오 가입·로그인
카카오 id는 필수이며 나머지는 카카오 응답과 동의 범위에 따라 없을 수 있습니다.
| 정보 | 수집원·시점 | 필수 | 용도 | 실제 처리·저장 | 위치 | 보유 상태 | v3 검토 |
|---|---|---|---|---|---|---|---|
| 인가코드 | 카카오 callback | 예 | Kakao token 교환 | 교환 요청에 사용, Member 저장 코드 없음 | 서버 요청 처리 | 일시 처리 | 로그 마스킹·재사용 차단 |
| Kakao access token | 카카오 토큰 API | 예 | 사용자 정보 조회 | 조회 헤더에 사용, Member 저장 코드 없음 | 서버 메모리 | 일시 처리 | 오류 로그 비노출 검증 |
| Kakao id | 카카오 사용자 응답 | 예 | 기존 카카오 회원 조회 | BigInt로 신규 Member 저장 | Member.kakaoId | 저장 확인 | 로그인 수단 테이블 분리 검토 |
| 이메일 | 카카오 계정 선택 응답 | 아니오 | 회원 연락·표시 | 제공된 경우 신규 Member 저장 | Member.email | 저장 경로 확인 | 검증 여부·중복 정책 |
| 이름/프로필 닉네임 | 카카오 계정 선택 응답 | 아니오 | 회원 이름 후보 | name 우선, 없으면 profile nickname 저장 | Member.name | 저장 경로 확인 | 실명과 표시명 분리 |
| 휴대폰 | 카카오 계정 선택 응답 | 아니오 | 연락처 | +82를 국내 형식으로 정규화 | Member.phone | 저장 경로 확인 | PASS 검증 연락처와 구분 |
| 성별 | 카카오 계정 선택 응답 | 아니오 | 회원 기본 정보 | MALE/FEMALE enum 변환 | Member.gender | 저장 경로 확인 | 최소수집 재검토 |
| 생년월일 | birthyear + birthday | 아니오 | 회원 기본 정보 | 둘 다 있을 때 Date 생성 | Member.birthdate | 저장 경로 확인 | 날짜대 기준 통일 |
| CI | 카카오 계정 선택 응답 | 아니오 | 개인 동일성 후보 | 제공된 경우 저장 | Member.ci | 저장 경로 확인 | 서버 검증 PASS CI와 신뢰등급 구분 |
| 회원 코드·닉네임·역할 | 서버 자동 생성 | 자동 | 회원 식별·표시·기본 권한 | TSID, 랜덤 닉네임, USER 역할 | Member + MemberRole | 저장 확인 | 이메일 경로와 동일 정책화 |
| 기본 약관 | 신규 카카오 회원 생성 | 자동 | 서비스 이용 근거 | TERMS·PRIVACY 동의=true 이력 생성 | AgreementHistory | 저장 확인 | 명시 화면·버전·선택동의 감사 |
| LegalCrew 토큰 | 로그인 완료 | 예 | 세션 유지 | access/refresh 발급, refresh 식별자 Redis 저장 | 쿠키/응답 + Redis | 세션 보관 | 기기·폐기·회전 정책 |
| 로그인 분석·최근접속 | 로그인 완료 | 자동 | 활동 측정 | LOGIN 이벤트, lastAccessAt | AnalyticsEvent + Member | 저장 확인 | 실패·누락률 측정 |
| 실제 제공 동의 범위 | 카카오 개발자 콘솔 | 운영 설정 | 어떤 선택값이 오는지 결정 | 로컬 코드만으로 현재 설정 확인 불가 | 외부 콘솔 | 미확인 | 정기 스냅샷·변경 감사 |
법조 자격 인증
| 정보 | 수집 시점 | 용도 | 저장·상태 | 서비스 영향 | 확인 |
|---|---|---|---|---|---|
| 인증 유형 | 가입 후 `/auth/*` | 변호사·로스쿨 등 심사 분기 | Verification.type | 승인될 역할 결정 | 코드 확인 |
| 자격 구분·회차 | 변호사 인증 요청 | 변호사시험/사법연수원 자격 | qualificationType, round | 승인 후 프로필·지원 문서에 사용 | 코드 확인 |
| 로스쿨명·기수 | 로스쿨 인증 요청 | 재학/졸업 자격 확인 | lawschoolName, round | 로스쿨 역할·게시판 | 코드 확인 |
| 인증서류 | 인증 요청 중 업로드 | 운영자 심사 증거 | 파일 메타 + 업로드 SUCCESS/FAILED | 서류 없음/실패를 운영자가 식별 | 코드 확인 |
| 심사 상태 | 요청·검토 | 진행·승인·반려 관리 | DRAFT/PENDING/APPROVED/REJECTED/DELETED | 직역 기능 활성/차단 | 코드 확인 |
| 반려 사유 | 운영 검토 | 보완 안내 | rejectReason | 재인증 경로 제공 | 코드 확인 |
현재 확인된 위험 지점
- 모바일 PASS 왕복을 위해 평문 비밀번호가 sessionStorage에 잠시 저장됩니다.
- 카카오 신규가입은 kakaoId 기준 조회이며 이메일/PASS 계정과 자동 동일인 연결이 확인되지 않습니다.
- 카카오 기본 동의 생성과 실제 동의 화면·외부 제공범위 사이의 운영 일치는 미확인입니다.
v3 후보
- PASS로 검증한 CI 기준 동일인 중복 개인 가입 차단
- 로그인 수단과 회원·자격 상태를 분리하고 연결 이력 보존
- 평문 비밀번호 없는 가입 재개 토큰
- 수집항목·약관버전·제공자 응답·예외 처리를 감사 가능한 이벤트로 기록