인증요소, OTP/MOTP, Oauth, Oauth 2.0

dropKick·2023년 9월 14일
0

스터디

목록 보기
19/20

목표

어디까지나 웹 개발자를 위한 인증요소

  • 인증요소
  • OTP/MOTP
  • OAuth
  • OAuth 2.0

인증요소

  1. 인증요소
    인증요소는 사용자가 자신의 신원을 확인하고 인증하는 데 사용하는 정보나 방법을 가리키며, 이러한 인증요소는 보안과 관련된 여러 상황에서 중요한 역할을 수행

1.1. 개요
인증요소는 사용자가 누구인지 확인하기 위해 사용
주요 인증요소에는 무엇을 알고 있는 것(비밀번호), 무엇을 소유하고 있는 것(스마트카드, 토큰), 무엇을 그릴 수 있는 것(생체 인식) 등이 존재

1.2. 다중 인증요소(Multi-Factor Authentication)
다중 인증요소(Multi-Factor Authentication, MFA)는 사용자 인증을 위해 두 개 이상의 인증요소를 사용하는 접근 방법
예를 들어, 비밀번호와 스마트폰으로 전송되는 일회용 인증번호(OTP)를 함께 사용하는 것이 MFA의 한 예시
MFA는 보안을 강화하며, 단일 인증요소(Single-Factor Authentication)만 사용하는 경우에 비해 더 안전한 인증 절차를 제공

OTP (One-Time Password) / MOTP (Mobile OTP)

2.1. OTP 개요
OTP(One-Time Password)는 말 그대로 한 번만 사용할 수 있는 비밀번호를 의미
사용자가 로그인 또는 인증을 시도할 때마다 새로운 OTP가 생성되며, 이를 통해 사용자의 신원을 확인
OTP는 물리적인 디바이스(토큰) 또는 모바일 앱을 통해 생성되며, 주요 특징은 보안성이 높고 사용자 경험이 비교적 편리하다는 점이 있음

2.2. OTP 동작 원리
OTP는 주로 시간 기반(TOTP) 또는 이벤트 기반(HOTP) 알고리즘을 사용하여 생성됩니다.
시간 기반 OTP는 일정 시간 간격마다 변경되는 OTP를 생성하며, 이를 위해 공유된 비밀키와 현재 시간 정보가 필요
이벤트 기반 OTP는 이벤트가 발생할 때마다 변경되며, 이벤트 카운터와 공유된 비밀키가 필요

2.3. MOTP 동작 원리
MOTP(Mobile OTP)는 사용자의 스마트폰에 모바일 앱을 설치하고, 해당 앱은 서버와 동기화하여 OTP를 생성
MOTP의 원리는 주로 TOTP와 유사하며, 사용자의 모바일 앱을 통해 동작

2.4. OTP와 MOTP의 주요 차이점
OTP는 물리적인 토큰 또는 소프트웨어 앱을 통해 생성될 수 있으며, MOTP는 모바일 앱을 통해 생성
OTP와 MOTP는 원리적으로는 유사하지만, MOTP는 사용자가 항상 스마트폰을 가지고 다녀야 하므로 휴대성이 뛰어나다는 점에서 차이가 있음

OAuth

OAuth는 온라인 서비스와 웹 및 모바일 애플리케이션에서 안전하게 사용자의 리소스에 대한 접근 권한을 부여하기 위한 오픈 표준 프로토콜로 OAuth를 사용하면 사용자는 다른 서비스나 앱에서 자신의 데이터에 대한 제어를 유지하면서 서비스 간 연결을 허용

3.2. 동작 원리
OAuth의 동작 원리는 크게 "인증 서버"와 "리소스 서버" 그리고 "클라이언트 애플리케이션"으로 구성

  • 클라이언트 애플리케이션은 사용자 인증 후 인증 서버로부터 엑세스 토큰을 받아 리소스 서버에 제공하여 데이터에 접근
  • 인증 서버는 사용자 인증을 수행하고, 클라이언트 애플리케이션에 엑세스 토큰을 발급
  • 엑세스 토큰은 클라이언트 애플리케이션이 리소스 서버에 요청을 보낼 때 사용되며, 리소스 서버는 엑세스 토큰을 검증하여 데이터에 접근을 허용

3.4. 사용 사례
소셜 미디어 로그인: 사용자는 자신의 소셜 미디어 계정을 사용하여 다른 웹 사이트나 앱에 로그인
외부 서비스 연동: 앱 또는 서비스는 사용자의 다른 계정(예: 구글 또는 페이스북)을 통해 데이터를 가져오거나 공유
API 접근 권한 부여: 사용자는 앱에 자신의 데이터에 대한 접근 권한을 부여하고, 해당 앱은 사용자 데이터를 사용하여 추가 기능을 제공

OAuth 2.0

  • OAuth 2.0은 OAuth 프로토콜의 두 번째 버전으로, 다양한 인증 및 권한 부여 시나리오를 지원하는 오픈 스탠더드 프로토콜
  • OAuth 2.0은 웹 및 모바일 애플리케이션 간의 안전한 인증 및 권한 부여를 위한 강력한 프레임워크를 제공

주요 개선 사항

  • 간편한 사용: OAuth 2.0은 ID와 비밀번호로 간편한 클라이언트 등록 및 사용을 지원
  • 토큰 기반: OAuth 2.0에서 가장 큰 변경점으로 액세스 토큰 및 리프레시 토큰을 사용하여 인증 및 권한 부여를 처리
  • 프로토콜의 유연성: OAuth 2.0은 다양한 스토리지 및 플로우를 지원하여 다양한 사용 사례에 적용 가능

구성 요소

  • Authentication: 접근 자격이 있는지 검증하는 단계
  • Authorization: 자원에 접근할 권한을 부여, 인가가 완료되면 리소스 접근 권한이 담긴 Access Token이 클라이언트에게 부여
  • Access Token: 리소스 서버에게서 리소스 소유자의 자격과 자원에 사용되는 만료 기간이 있는 Token
  • Refresh Token: Access Token 만료시 이를 갱신하기 위한 용도로 사용하는 Token

프로세스

  • 인가(Authorization): 클라이언트가 사용자에게 권한을 요청하고, 사용자가 권한을 부여
  • 토큰 발급(Token Issuance): 사용자의 인가를 기반으로 인증 서버에서 엑세스 토큰을 발급
  • 액세스(Access): 클라이언트가 리소스 서버에 엑세스 토큰을 제출하여 사용자의 데이터에 접근

4.5. 사용 사례

  • 싱글 싸인온(SSO): 다른 서비스에 대한 로그인 및 권한 부여를 한 번의 인증으로 처리

SSO

  • OAuth 2.0은 SSO를 구현하기 위한 프로토콜

SSO 프로세스

  • OAuth 2.0의 토큰 로그인 방식을 사용
  • 사용자가 애플리케이션에 로그인하면 앱은 SSO Token을 생성하고, 인증 요청을 SSO 서비스로 전송
  • SSO Token은 사용자가 이전에 시스템에서 인증된 경우, 애플리케이션에 인증 확인 응답을 전송하여 사용자에게 액세스 권한을 부여
  • 사용자에게 유효한 보안 인증 정보가 없는 경우 SSO Service는 사용자를 로그인 서비스로 리다이렉션
  • 사용자가 로그인 정보를 제출하면 SSO Service가 보안 인증 정보를 확인하고 응답을 애플리케이션 전송하여 로그인 처리

0개의 댓글