Security 복습하기 전에 유저기능 복습하기
- 유저 기능이 웹 서비스에서 어떤 역할을 하는가
- 유저 식별을 통해 맞춤형 서비스를 제공하는법
- 유저 기능이 필요한 서비스 사례
- 인증(Authentication) 개념의 기본원리
- 실무에서 자주 사용하는 인증법과 비교
유저 기능의 필요성과 활용
유저(User) 기능은 대부분 웹 서비스에서 가장 기본적이면서 필수적인 기능임
단순 서비스를 방문하는 익명 사용자가 아니라, 개인별로 식별 가능한 계정을 통해 서비스를 이용하게 함
1. 웹 서비스에서 유저 기능의 역할
웹 서비스는 크게 비회원(익명 사용자)과 회원(로그인 사용자)으로 구분됨
- 비회원(Guest User) : 사이트를 자유롭게 둘러볼 수 있지만, 제한된 기능만 이용 가능
- 회원(Registered User) : 계정을 만들고 로그인해야 하며, 개인화된 서비스(장바구니, 프로필, 주문 내역 등) 이용 가능
온라인 쇼핑몰이라고 했을 때
- 비회원은 상품만 둘러볼 수 있음
- 회원은 장바구니에 물건을 담거나, 배송지를 저장하고 결제까지 진행할 수 있음
회원 가입과 로그인 기능이 곧 서비스의 핵심 가치로 이어질 수 있다
2. 유저 식별을 통한 맞춤형 서비스 제공
유저 기능을 통해 서비스는 사용자별로 다른 경험을 제공한다. 이것을 개인화(Personalization)라고 함
- 넷플릭스 : 로그인하면 본인의 시청 기록과 취향에 맞는 영화가 추천됨
- 쿠팡 : 로그인하면 자주 구매한 상품, 배송 주소, 결제 수단이 자동으로 불러와짐
- 유튜브 : 로그인하면 개인 구독 목록과 추천 영상이 표시됨
// 간단한 User 클래스 예시
public class User {
private Long id; // 고유 ID
private String name; // 이름
private String email; // 이메일, 로그인시 ID 역할
private String password; // 비밀번호
}
User 클래스는 사용자의 고유한 정보를 저장하는 기본적인 구조를 가짐
3. 유저 기능이 필요한 서비스 사례 분석
| 서비스 유형 | 유저 기능 필요 여부 | 이유 |
| 뉴스 사이트 | 선택적 | 단순 기사 열람은 가능하지만, 댓글 작성이나 구독 기능을 위해 필요함 |
| 온라인 쇼핑몰 | 필수 | 장바구니, 주문내역, 배송관리 등 유저별 기능이 핵심임 |
| 은행 서비스 | 필수 | 계좌 조회, 송금, 이체 등 민감한 개인정보 처리 |
| 커뮤니티 서비스 | 필수 | 글 작성, 댓글 작성, 팔로우등 참여형 기능 필요 |
4. 팁
- 유저 기능은 서비스 확장의 출발점임. 초기에는 단순 로그인 / 로그아웃만 구현하더라도 나중에 프로필 수정, 알림, 친구관계, 결제 등으로 확장될 수 있음
- 데이터베이스 설계 시 반드시 고려해야하는 부분임. user 테이블은 거의 모든 다른 테이블과 연결(관계)을 맺는다
- user - order, user - post, user - comment
5. 정리
| 항목 | 설명 |
| 유저 기능 | 웹 서비스의 필수 기능, 회원과 비회원을 구분함 |
| 개인화 | 유저 정보를 활용해 맞춤형 서비스를 제공함 |
| 필요 서비스 사례 | 쇼핑몰, 은행, 커뮤니티, 스트리밍 등 |
인증(Authentication) 개념
유저 기능을 구현할 때 가장 중요한 과정이 인증(Authentication)임
"이 사용자가 정말 본인이 맞는가?"
1. 인증의 기본 원리
인증은 보통 ID(식별자)와 Password(비밀번호)로 이루어짐
- ID : 사용자를 구분하기 위한 식별자(이메일, 아이디, 휴대전화)
- Password : 사용자가 본인임을 증명하기 위한 비밀값
// 로그인 로직 예시
public boolean login(String email, String password) {
User user = userRepository.findByEmail(email);
if(user == null) {
return false; // 등록되지 않은 유저 필터링
}
return user.getPassword().equals(password); // 비밀번호 일치 필터링
}
실제 서비스에서는 비밀번호를 평문으로 저장하지 않고 암호화(Hashing)하는 기법을 사용한다
2. 다양한 인증 방식
| 인증 방식 | 설명 | 예시 |
| ID + Password | 가장 기본적인 방식 | 이메일 + 비밀번호 로그인 |
| 소셜 로그인 | 외부 서비스 계정 활용 | 구글, 네이버, 카카오 로그인 |
| 2단계 인증(2FA) | 추가 보안 수단 | 문자 인증, OTP |
| 생체인증 | 사용자의 신체 정보를 활용 | 지문, 얼굴 인식 |
3. 인증 vs 인가
- 인증(Authentication) : 너는 누구야? (사용자가 본인임을 확인하는 과정)
- 인가(Authorization) : 너에게 무엇을 허용해줄까? (특정 자원에 접근할 수 있는 권한을 확인하는 과정)
은행 앱에서 :
- 로그인시 인증함(본인 확인)
- 송금 가능 여부 확인시 인가함(권한 확인)
4. 팁
- 비밀번호는 반드시 암호화해서 저장해야함(SHA-256, bcrypt 등등)
- 세션 기반 인증과 토큰 기반 인증(JWT)의 차이를 반드시 이해해야함
- 모바일 서비스라면 소셜 로그인이나 2단계 인증을 제공하는게 일반적이다
'Spring Boot > 유저 관리 기능' 카테고리의 다른 글
| 쿠키와 세션 기반 인증 : 쿠키와 세션 보안 설정 (0) | 2026.03.08 |
|---|---|
| 쿠키와 세션 기반 인증 : 세션 기반 인증 (0) | 2026.03.07 |
| 쿠키와 세션 기반 인증 : 쿠키의 개념과 특성 (0) | 2026.03.05 |
| 유저 기능의 이해, 인증 개념 : 인증 워크플로우 (0) | 2026.03.04 |
| 유저 기능의 이해, 인증 개념 : 인증(Authentication) (0) | 2026.03.02 |