인증,보안 5

OAuth 2.0

여러분이 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현됩니다. 전통적으로 직접 작성한 서버에서 인증을 처리해 주는 것과는 달리, OAuth는 인증을 중개해 주는 메커니즘입니다. 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜입니다. 즉, 이미 사용자 정보를 가지고 있는 웹 서비스(GitHub, google, facebook 등)에서 사용자의 인증을 대신해 주고, 접근 권한에 대한 토큰을 발급한 후, 이를 이용해 내 서버에서 인증이 가능해집니다. OAuth가 모든 것을 해결해 주는 솔루션은 아닙니다. 여전히 사용자 정보가 내 서버에 저장되는 것은 변함이 없습니다. OAuth는 인증(Authentication)..

인증,보안 2022.03.20

토큰 기반 인증

토큰 기반 인증은 왜, 그리고 언제 쓸까요? 세션 기반 인증은 서버(혹은 DB)에 유저 정보를 담는 인증 방식이었습니다. 서버에서는 유저가 민감하거나 제한된 정보를 요청할 때마다 "지금 요청을 보낸 유저에게 우리가 정보를 줘도 괜찮은가?"를 확인하기 위해 가지고 있는 세션 값과 일치하는지 확인합니다. 매 요청마다 데이터베이스를 살펴보는 것이 불편하고, 이 부담을 덜어내고 싶다면 어떤 방법이 있을까요? 이럴 때 사용할 수 있는 토큰 기반 인증 중 대표적인 JWT (JSON Web Token)에 대해서 알아봅시다. 클라이언트에서 인증 정보 보관하기 토큰이 뭐죠? 라는 질문을 한다면 여러분들은 동전을 흔하게 떠올리실 수 있을 것 같습니다. 오락실 게임에 사용하는 토큰 행사에 입장하기 위해서 주최 측에서 나누어..

인증,보안 2022.03.20

세션기반 인증

로그인 본격적으로 로그인을 통해 인증 정보가 저장되고, 인증된 사용자가 어떤 식으로 웹사이트를 이용하는지 간단하게 알아봅시다. 사용자가 웹사이트에서 아이디 및 비밀번호를 이용해서 로그인을 시도하면(그림 1), 과연 어떤 일이 벌어질까요? 사용자가 만일 정확한 아이디와 비밀번호를 입력했다면, 서버는 인증(Authentication)에 성공했다고 판단할 것입니다. 그렇다면, 다음번에 인증을 필요로 하는 작업(그림에서와 같이, 장바구니에 물품 추가)을 요청할 경우, 또 로그인 과정을 거쳐야 할까요? 아닙니다. 서버는 아이디 및 비밀번호의 해시를 이미 알고 있기 때문에, "인증에 성공했음"을 서버가 알고 있다면, 매번 로그인할 필요가 없을 것입니다. 인증에 따라 리소스의 접근 권한(Authorization)이 ..

인증,보안 2022.03.20

사설 인증서 발급 및 HTTPS 서버 구현

이번 시간에는 아래 설명을 참고하여 HTTPS를 학습하고 서버를 직접 구현합니다. 별도의 테스트는 존재하지 않지만 아래 설명을 따라 직접 HTTPS 서버를 구축해야 다음 Part를 진행하실 수 있습니다. 현업에서는 HTTPS 프로토콜을 사용하는 것이 일반적이고, 특히 HTTPS 프로토콜은 인증의 중요한 부분을 차지하기 때문에, 앞으로 진행될 스프린트에서는 HTTPS 통신으로 진행합니다. 설치 mkcert라는 프로그램을 이용해서 로컬 환경(내 컴퓨터)에서 신뢰할 수 있는 인증서를 만들 수 있습니다. Ubuntu 우분투의 경우 다음 명령어를 이용해 설치합니다. $ sudo apt install libnss3-tools $ wget -O mkcert https://github.com/FiloSottile/mk..

인증,보안 2022.03.20

HTTPS

HTTPS 프로토콜 HTTPS는 Hyper Text Transfer Protocol Secure Socket layer 의 약자입니다. HTTP over SSL(TLS), HTTP over Secure라고 부르기도 합니다. HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법입니다. 질문: SSL, TLS는 무엇인가요? SSL과 인증기관(CA)은 어떤 관계가 있나요? 인증에서 HTTPS 프로토콜을 사용해야만 하는 이유는 HTTP보다 상대적으로 안전한 방법이고, 데이터 제공자의 신원을 보장받을 수 있기 때문입니다. 데이터 제공자의 신원을 확인하고 보장받는 게 인증에서 중요한 이유는 다음과 같습니다. 클라이언트는 데이터..

인증,보안 2022.03.20