인증과 인가란?
로그인·세션·토큰 차이
사용자가 누구이며 어떤 작업을 할 수 있는지 안전하게 확인합니다.
인증은 무엇인가요?
인증(authentication)은 사용자가 누구인지 확인하는 과정이고 인가(authorization)는 확인된 사용자가 특정 행동을 할 수 있는지 판단하는 과정입니다.
로그인 화면이 있다고 보안이 완성되는 것은 아닙니다. 모든 서버 경로에서 세션과 권한을 다시 확인하고 토큰과 비밀정보의 수명과 저장 위치를 관리해야 합니다.
먼저 이해할 핵심 개념
도구 이름보다 각 요소가 맡는 책임과 서로 연결되는 방식을 먼저 이해하는 것이 좋습니다.
세션
서버가 로그인 상태를 보관하고 브라우저는 식별 쿠키를 전달합니다.
토큰
정해진 범위와 만료 시간을 가진 자격 정보를 요청과 함께 전달합니다.
OAuth·OIDC
비밀번호를 직접 공유하지 않고 외부 제공자의 인증과 권한 위임을 사용합니다.
접근 제어
역할뿐 아니라 리소스의 소유자와 작업 조건을 서버에서 확인합니다.
실무에서 함께 쓰는 기술
한 제품을 완성할 때는 한 가지 도구가 아니라 역할이 다른 여러 기술을 조합합니다.
브라우저
Secure·HttpOnly·SameSite 쿠키
표준
OAuth 2.0·OpenID Connect·WebAuthn
계정 보안
MFA·Passkeys·Rate limiting
운영
세션 폐기·감사 로그·키 교체
실무에서는 이렇게 진행합니다
- 01
위협 모델
보호할 정보와 공격자가 시도할 경로를 먼저 정리합니다.
- 02
세션 전략
앱 형태와 인프라에 맞는 저장·만료 방식을 고릅니다.
- 03
서버 권한 검사
UI 노출 여부와 별개로 모든 데이터 작업을 검증합니다.
- 04
수명 관리
로그아웃, 기기 분실, 비밀번호 변경 때 자격을 폐기합니다.
선택하고 구현할 때 확인할 것
- 01비밀번호를 검증된 해시 방식으로 저장하는가
- 02세션 쿠키에 안전 속성이 적용되는가
- 03모든 변경 API에서 권한을 확인하는가
- 04오류 메시지가 계정 존재 여부를 과하게 노출하지 않는가
- 05토큰 만료·폐기·키 교체 절차가 있는가
자주 묻는 질문
JWT가 세션보다 더 안전한가요?
형식만으로 안전성이 결정되지는 않습니다. 저장 위치, 만료, 폐기, 키 관리와 서비스 구조에 맞는 선택이 중요합니다.
소셜 로그인을 쓰면 인증 보안을 신경 쓰지 않아도 되나요?
외부 제공자가 신원 확인 일부를 맡지만 콜백 검증, 계정 연결, 세션 관리와 서비스 내부 권한은 직접 안전하게 구현해야 합니다.