0%

OAuth

하나의 세션동안 사용자의 신원을 확인하여 인증하는 것을 말합니다. 인증 방식으로는 다음과 같은 것들이 있습니다.

  • 기본인증(ID/PW)
  • 토큰 인증
  • 전자 서명

흔히 애플리케이션에서 사용자의 신원을 확인하기 위해 ID와 PW를 이용한 기본 인증방식을 사용합니다. 일반적으로 로그인 == 사용자 인증으로 오해하고 있는데, 로그인은 사용자 인증의 한 방식일 뿐입니다. 그러나 기본 인증 방식은 보안에 매우 취약한 구조이기 때문에 다른 대안들이 떠오르고 있는데 OAuth가 그 중 하나입니다. OAuth는 위의 인증방식 중 토큰 인증 방식을 사용합니다.

대부분 서비스는 자체적으로 기본인증을 바탕으로 한 사용자 인증 방식을 개발하고 있습니다. 그렇게 되면 서비스마다 다른 인증방식을 사용하게 되는데 OAuth는 이처럼 서비스마다 제각각인 인증 방식을 표준화한 인증방식이라고 할 수 있습니다.

자신의 애플리케이션에서 사용자 인증을 하기 위해 다른 애플리케이션의 사용자인증방식을 하도록 인가하는 것이 OAuth입니다. OAuth는 사용자 인증 프로토콜이 아닌, 인가 프로토콜입니다.

Read more »

사용자 인증의 여러 방식들

1) 쿠키와 세션

HTTP는 Stateless, Connectionless 특징이 있기 때문에, 사용자 인증을 유지할 수 있는 기능이 필요했습니다. 그래서 클라이언트가 로그인 등으로 한 번 사용자 인증을 하면, 그 인증을 유지할 수 있도록 쿠키와 세션이라는 기술을 지금껏 사용해 왔습니다.

그러나 쿠키는 브라우저에 사용자 정보가 기록되기 때문에 위변조의 가능성이 높아 보안이 취약하며, 세션 또한 서버의 메모리를 차지하고 있기 때문에 동접자가 많은 웹 사이트일 경우 서버 과부하의 원인이 되며, 또한 세션 정보가 중간에 탈취당할 수 있기 때문에 보안에 완벽하다고 할 수가 없습니다.

쿠키와 세션의 문제점들을 보완하기 위해 토큰(Token)기반의 인증 방식이 도입되었습니다.토큰 기반의 인증방식의 핵심은 보호할 데이터를 토큰으로 치환하여 원본 데이터 대신 토큰을 사용하는 기술입니다.만약 토큰 전송과정에서 중간에 토큰이 탈취 당하더라도 데이터에 대한 정보가 암호화 되어있어 공격자가 본래 내용을 알 수 없게 됩니다.즉, 보안적으로 우수하다고 할 수 있습니다.

Read more »

클라이언트 측에서 관리되는 작은 기록 정보 파일을 의미합니다.쿠키에는 사용자 인증이 유효한 시간을 명시할 수 있으며, 한 번 유효 시간이 정해지면 브라우저를 끄더라도 인증이 유지된다는 특징이 있습니다.

쿠키 구성 요소

  • 이름: 각각의 쿠키를 구별하는데 사용되는 이름
  • : 쿠키가 갖고 있는 값
  • 유효시간: 쿠키의 유지시간
  • 도메인: 쿠키를 전송할 도메인
  • 경로: 쿠키를 전송할 요청 경로
Read more »

Screen 명령어

screen은 여러 쉘과 프로그램을 사용할 수 있습니다.또한 세션관리 기능도 지원합니다.세션관리 기능은 상당히 유용합니다.예를 들면, 터미널을 통해 원격 서버에 접속하여 작업을 하다가 네트워크 장애로 연결이 끊어진 경우 매우 난감할 수 있습니다. 이때 screen을 사용해서 작업중이였다면 세션을 유지할 수 있기 때문에 해당 작업은 로컬에서 계속진행되고 있으며 언제든지 다시 해당 세션을 통해 작업을 계속 할 수 있습니다. 더불어 하나의 서버에 여러명의 사용자가 접속하여 해당 스크린을 공유하여 같은 화면을 공유할 수도 있습니다. 이 포스팅의 아래에서는 야매?로 서버를 유지하는 예제를 보여드리겠습니다.

$ screen screen시작

$ screen -S 세션명 세션명으로 screen시작

$ screen -R 세션명 세션명의 screen으로 복원. 세션이 하나일 경우 세션명을 주지 않아도 무관하며, 여러 개 존재하는 경우 세션 목록을 보여줌

$ screen -list 켜져있는 스크린 list를 보여줌

Read more »

멀티프로세싱,스레딩,태스킹,프로그래밍

멀티 프로세싱(Multi-processing)

두개 이상, 다수의 프로세서가 협력적으로 작업을 동시에 처리하는 것

image

그림을 보면 아시겠지만, 각 각 프로세서 하나의 작업만을 처리하는 것이 아니라 다수의 작업을 처리하며, 하나의 작업이 하나의 프로세서로 처리되는 것이 아니라 다수의 프로세서에 의해 처리됩니다.

Read more »

컨텍스트 스위칭

문맥교환, CPU에서 실행할 프로세스를 교체하는 기술입니다.현재 진행하는 Task의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정을 말합니다.

컨텍스트 스위칭의 순서

컨텍스트 위칭은 크게 다음과 같은 두 동작으로 구분할 수 있다.

  1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트하여 메인 메모리에 저장
  2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB정보를 CPU에 넣고 실행

img

Read more »

프로토콜

프로토콜(Protocol)은 컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 표준화 시켜놓은 통신 규약입니다.

프로토콜의 기능

  • 캡슐화
  • 흐름제어
  • 오류제어
  • 동기화
  • 순서제어
  • 주소지정
  • 다중화
  • 경로제어
  • 전송서비스
Read more »

프로세스(Process)란?

실행중인 프로그램, 작업, 테스크라고도 부름

프로세스와 프로그램의 차이

프로그램자체는 생명이 없습니다.프로그램은 보조 기억장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 묶음입니다. 이 프로그램의 명령어와 정적 데이터가 메모리에 적재되면 생명이 있는 프로세스가 됩니다.

프로세스 구조

  • Text: 코드, 기계어
  • Data: 변수/초기화된 데이터
  • Heap: 코드에서 동적으로 만들어지는 데이터
  • Stack : 임시 데이터

image

위 그림에서 보면 Heap과 Stack사이에 빈 공간을 설명해드리면, 컴파일타임에 지역변수를 얼마나 사용할지 미리 계산할 수 없기 때문에 런타임에 지역변수 선언 순서에 따라 스택영역은 위쪽으로 주소 값을 매기고 동적 할당될 때 힙영역은 아래쪽으로 주소값을 매깁니다.

Read more »

웹브라우저를 실행시켜서 주소창에 특정 URL값을 입력시킨 후, 엔터를 눌렀을때, 페이지가 렌더링되는 과정을 웹통신 흐름에 중점을 두어 설명해주세요.

image

브라우저는 서버로부터 HTML, CSS, Javascript, 이미지파일 등을 응답받습니다. HTML,CSS파일은 렌더링 엔진의 HTML파서와 CSS파서에 의해 파싱되어 DOM,CSSOM 트리로 변환됩니다.

Read more »

TCP 3 Way-Handshake & 4 Way-Handshake

TCP 3-way Handshake란?

TCP 통신을 위한 연결 설정 과정

image-20200310205155287

STEP1

클라이언트는 서버에 접속을 요청하는 SYN패킷을 보낸다.이 때 클라이언트는 SYN을 보내고 SYN/ACK응답을 기다리는 SYN_SENT상태가 되는 것이다.

STEP2

서버는 SYN요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고 클라이언트가 다시 ACK로 응답하기를 기다린다.이 때 서버는 SYN_RECEIVED(접수)상태가 된다.

STEP3

클라이언트는 서버에게 ACK를 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는 것이다.이 때의 서버상태가 ESTABLISHED(설립)이다.

위와 같은 방식을 통신하는것이 신뢰성있는 연결을 맺어준다는 TCP의 3-Way Handshake방식이다.

Read more »