SlideShare a Scribd company logo
1 of 10
Download to read offline
로그인은 어떻게 동작하나?
회원가입
웹브라우저 서버 DB
SSL을 이용한
ID, 비밀번호 등 회원 정보 전달 전달된 정보를 DB에 저장
DB의 정보가 해커에 의해 새어나가면 비밀번호가 노출될 위험이 있다.
이를 위해 비밀번호는 단방향 암호화를 하여 DB 정보가 유출되어도 비밀번호가 무엇인지 알아낼 수 없도록 한다.
세션을 이용한 로그인
웹브라우저 서버 DB
SSL을 이용한
ID, 비밀번호 등 회원 정보 전달
DB에서 ID를 기준으로
사용자 정보 조회 및 비밀번호 확인
로그인시 ID를 기준으로 사용자 정보를 DB에서 가져 온다.
이 후 전달된 비밀번호를 단방향 암호화 후 DB에 저장되어 있는 암호화된 비밀번호와 비교한다.
인증이 완료되면 서버는 클라이언트의 세션에 아이디를 저장한다.
세션 정보는 웹브라우저가 닫히면 사라지며, 대게 안전하다.
세션에 사용자 ID를 저장
세션을 이용한 요청
웹브라우저 서버 DB
요청(세션 정보)
세션에서 사용자 ID를 꺼내어
사용자 정보를 DB에서 읽어옴.
이후 브라우저에서 요청시 서버는 세션안에 있는 사용자 ID를 꺼내어 DB에서 해당 계정 정보를 가져온다.
계정 정보가 DB에 존재한다면 요청을 처리하고 그렇지 않으면 요청을 거부한다.
세션을 이용한 로그아웃
웹브라우저 서버 DB
로그아웃
세션에 있는 사용자 ID를 삭제한다.
사용자가 로그아웃을 요청하면 서버는 세션에 있는 사용자 ID만 삭제해 주면 된다.
사용자가 브라우저를 닫더라도 세션 정보가 자동으로 삭제 된다.
쿠키를 이용한 로그인
웹브라우저 서버 DB
SSL을 이용한
ID, 비밀번호 등 회원 정보 전달
DB에서 ID를 기준으로
사용자 정보 조회 및 비밀번호 확인
쿠키는 클라이언트 PC의 하드디스크에 저장되므로 안전하지 않다.
때문에 사용자 ID를 암호화 하고 22자리의 랜덤 스트링으로 이루어진 쿠키 비번을 함께 저장한다.
쿠키에 다음 두 정보를 저장
사용자 ID, 생성한 22자리의 랜덤 스트링 저장
(쿠키 비번)
22자리의 랜덤 스트링 생성 후
단방향 암호화하여 DB에 저장
(쿠키 토큰)
쿠키를 이용한 요청
웹브라우저 서버 DB
요청(쿠키 정보)
쿠키에서 사용자 ID를 꺼내어
복호화 후 사용자 정보를
DB에서 읽어옴.
쿠키 비밀번호가 DB에 있는
쿠키 토큰과 동일한지 비교
서버에서 쿠키의 생존시간을 길게 설정한다면 쿠키 정보는 계속 사용자의 저장장치에 남아 있게 된다.
때문에 브라우저를 닫고 다시 시작하더라도 자동으로 로그인이 된다.
쿠키를 이용한 로그아웃
웹브라우저 서버 DB
로그아웃
쿠키 토큰 삭제
쿠키에서 사용자 ID,
쿠키 비밀번호 삭제
DB에 존재하는 쿠키 토큰 정보를 삭제함으로써, 이전 쿠키 정보를 재사용하지 못하도록 한다.
쿠키와 세션의 동시 사용
로그인 : 세션에 정보 저장 후 쿠키에 정보 저장.
!
요청 : 세션 정보로 인증 후 실패시 쿠키 정보로 인증.
!
로그아웃 : 쿠키 정보 삭제 후 세션 정보 삭제.
REST API에서의 사용자 인증
REST API와 기존 방식과의 가장 큰 차이점은 세션이나
쿠키가 없다는 것.
!
세션이나 쿠키 정보도 결국 클라이언트에서 전달되는 정
보.
!
따라서 API 호출시 기존에 쿠키로 전달되는 정보를
HTTP 헤더에 넣어서 직접 전달해 주면 됨.
!
상용에서 구현시에는 OAuth 2.0 프로토콜을 이용하는
것이 좋을 듯.

More Related Content

What's hot

What is Payment Tokenization?
What is Payment Tokenization?What is Payment Tokenization?
What is Payment Tokenization?
Rambus Inc
 

What's hot (20)

QR code
QR codeQR code
QR code
 
디지털 전환의 구체적 실천방법.pdf
디지털 전환의 구체적 실천방법.pdf디지털 전환의 구체적 실천방법.pdf
디지털 전환의 구체적 실천방법.pdf
 
니니즈 x 라이엇 게임즈 콜라보레이션 캠페인
니니즈 x 라이엇 게임즈 콜라보레이션 캠페인니니즈 x 라이엇 게임즈 콜라보레이션 캠페인
니니즈 x 라이엇 게임즈 콜라보레이션 캠페인
 
블록체인 기술 적용 사례
블록체인 기술 적용 사례블록체인 기술 적용 사례
블록체인 기술 적용 사례
 
2022 한양대_로컬브랜드_BOUR_HMW_최종제출.pdf
2022 한양대_로컬브랜드_BOUR_HMW_최종제출.pdf2022 한양대_로컬브랜드_BOUR_HMW_최종제출.pdf
2022 한양대_로컬브랜드_BOUR_HMW_최종제출.pdf
 
2022 한양대_내셔널브랜드_Golin_OneOn_최종발표.pdf
2022 한양대_내셔널브랜드_Golin_OneOn_최종발표.pdf2022 한양대_내셔널브랜드_Golin_OneOn_최종발표.pdf
2022 한양대_내셔널브랜드_Golin_OneOn_최종발표.pdf
 
(개정) 알면 알수록 어려운 서비스 기획 뽀개기!
(개정) 알면 알수록 어려운 서비스 기획 뽀개기!(개정) 알면 알수록 어려운 서비스 기획 뽀개기!
(개정) 알면 알수록 어려운 서비스 기획 뽀개기!
 
" 모바일 롤플레잉게임 인터페이스디자인 문서"
 " 모바일 롤플레잉게임 인터페이스디자인 문서" " 모바일 롤플레잉게임 인터페이스디자인 문서"
" 모바일 롤플레잉게임 인터페이스디자인 문서"
 
단백질 파우더 시장조사_Kyuri Kim
단백질 파우더 시장조사_Kyuri Kim단백질 파우더 시장조사_Kyuri Kim
단백질 파우더 시장조사_Kyuri Kim
 
캐릭터 라이선스 기초
캐릭터 라이선스 기초 캐릭터 라이선스 기초
캐릭터 라이선스 기초
 
놀자Go서비스사업계획서(by렉스킹스)
놀자Go서비스사업계획서(by렉스킹스)놀자Go서비스사업계획서(by렉스킹스)
놀자Go서비스사업계획서(by렉스킹스)
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
[라이트브레인] 모바일 관점에서 본 UX 디자인 트렌드 및 전망
[라이트브레인] 모바일 관점에서 본 UX 디자인 트렌드 및 전망[라이트브레인] 모바일 관점에서 본 UX 디자인 트렌드 및 전망
[라이트브레인] 모바일 관점에서 본 UX 디자인 트렌드 및 전망
 
보령메디앙스 iMOM 리뉴얼 제안서 by Gabia
보령메디앙스 iMOM 리뉴얼 제안서 by Gabia보령메디앙스 iMOM 리뉴얼 제안서 by Gabia
보령메디앙스 iMOM 리뉴얼 제안서 by Gabia
 
[2019] 게임 서버 대규모 부하 테스트와 모니터링 이렇게 해보자
[2019] 게임 서버 대규모 부하 테스트와 모니터링 이렇게 해보자[2019] 게임 서버 대규모 부하 테스트와 모니터링 이렇게 해보자
[2019] 게임 서버 대규모 부하 테스트와 모니터링 이렇게 해보자
 
6조 제출 완성본
6조 제출 완성본6조 제출 완성본
6조 제출 완성본
 
모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기
 
What is Payment Tokenization?
What is Payment Tokenization?What is Payment Tokenization?
What is Payment Tokenization?
 
WearCook 졸업프로젝트 기획서 발표자료
WearCook 졸업프로젝트 기획서 발표자료WearCook 졸업프로젝트 기획서 발표자료
WearCook 졸업프로젝트 기획서 발표자료
 
Understanding Android Security
Understanding Android SecurityUnderstanding Android Security
Understanding Android Security
 

Viewers also liked

F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
NAVER D2
 
시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
Toby Yun
 
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
Nts Nuli
 

Viewers also liked (20)

HeadFisrt Servlet&JSP Chapter 2
HeadFisrt Servlet&JSP Chapter 2HeadFisrt Servlet&JSP Chapter 2
HeadFisrt Servlet&JSP Chapter 2
 
Servlet3
Servlet3Servlet3
Servlet3
 
Hellotutorial
HellotutorialHellotutorial
Hellotutorial
 
Playnode 2016 조승연
Playnode 2016 조승연Playnode 2016 조승연
Playnode 2016 조승연
 
1주차 자기개발 항목(jsp 컴파일)
1주차 자기개발  항목(jsp 컴파일)1주차 자기개발  항목(jsp 컴파일)
1주차 자기개발 항목(jsp 컴파일)
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
크리테오 설명서
크리테오 설명서크리테오 설명서
크리테오 설명서
 
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
Pinpoint 도입기 - 2016 신림프로그래머 오픈 세미나
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
 
HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3HeadFisrt Servlet&JSP Chapter 3
HeadFisrt Servlet&JSP Chapter 3
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
 
HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1
 
신림프로그래머모임_개발프로세스개선기
신림프로그래머모임_개발프로세스개선기신림프로그래머모임_개발프로세스개선기
신림프로그래머모임_개발프로세스개선기
 
웹을 지탱하는 기술
웹을 지탱하는 기술웹을 지탱하는 기술
웹을 지탱하는 기술
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
 
개발자들 오리엔테이션
개발자들 오리엔테이션개발자들 오리엔테이션
개발자들 오리엔테이션
 
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
[2014널리세미나] 시맨틱한 HTML5 마크업 구조 설계, 어떻게 할까?
 
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
 

로그인은 어떻게 동작하나?

  • 2. 회원가입 웹브라우저 서버 DB SSL을 이용한 ID, 비밀번호 등 회원 정보 전달 전달된 정보를 DB에 저장 DB의 정보가 해커에 의해 새어나가면 비밀번호가 노출될 위험이 있다. 이를 위해 비밀번호는 단방향 암호화를 하여 DB 정보가 유출되어도 비밀번호가 무엇인지 알아낼 수 없도록 한다.
  • 3. 세션을 이용한 로그인 웹브라우저 서버 DB SSL을 이용한 ID, 비밀번호 등 회원 정보 전달 DB에서 ID를 기준으로 사용자 정보 조회 및 비밀번호 확인 로그인시 ID를 기준으로 사용자 정보를 DB에서 가져 온다. 이 후 전달된 비밀번호를 단방향 암호화 후 DB에 저장되어 있는 암호화된 비밀번호와 비교한다. 인증이 완료되면 서버는 클라이언트의 세션에 아이디를 저장한다. 세션 정보는 웹브라우저가 닫히면 사라지며, 대게 안전하다. 세션에 사용자 ID를 저장
  • 4. 세션을 이용한 요청 웹브라우저 서버 DB 요청(세션 정보) 세션에서 사용자 ID를 꺼내어 사용자 정보를 DB에서 읽어옴. 이후 브라우저에서 요청시 서버는 세션안에 있는 사용자 ID를 꺼내어 DB에서 해당 계정 정보를 가져온다. 계정 정보가 DB에 존재한다면 요청을 처리하고 그렇지 않으면 요청을 거부한다.
  • 5. 세션을 이용한 로그아웃 웹브라우저 서버 DB 로그아웃 세션에 있는 사용자 ID를 삭제한다. 사용자가 로그아웃을 요청하면 서버는 세션에 있는 사용자 ID만 삭제해 주면 된다. 사용자가 브라우저를 닫더라도 세션 정보가 자동으로 삭제 된다.
  • 6. 쿠키를 이용한 로그인 웹브라우저 서버 DB SSL을 이용한 ID, 비밀번호 등 회원 정보 전달 DB에서 ID를 기준으로 사용자 정보 조회 및 비밀번호 확인 쿠키는 클라이언트 PC의 하드디스크에 저장되므로 안전하지 않다. 때문에 사용자 ID를 암호화 하고 22자리의 랜덤 스트링으로 이루어진 쿠키 비번을 함께 저장한다. 쿠키에 다음 두 정보를 저장 사용자 ID, 생성한 22자리의 랜덤 스트링 저장 (쿠키 비번) 22자리의 랜덤 스트링 생성 후 단방향 암호화하여 DB에 저장 (쿠키 토큰)
  • 7. 쿠키를 이용한 요청 웹브라우저 서버 DB 요청(쿠키 정보) 쿠키에서 사용자 ID를 꺼내어 복호화 후 사용자 정보를 DB에서 읽어옴. 쿠키 비밀번호가 DB에 있는 쿠키 토큰과 동일한지 비교 서버에서 쿠키의 생존시간을 길게 설정한다면 쿠키 정보는 계속 사용자의 저장장치에 남아 있게 된다. 때문에 브라우저를 닫고 다시 시작하더라도 자동으로 로그인이 된다.
  • 8. 쿠키를 이용한 로그아웃 웹브라우저 서버 DB 로그아웃 쿠키 토큰 삭제 쿠키에서 사용자 ID, 쿠키 비밀번호 삭제 DB에 존재하는 쿠키 토큰 정보를 삭제함으로써, 이전 쿠키 정보를 재사용하지 못하도록 한다.
  • 9. 쿠키와 세션의 동시 사용 로그인 : 세션에 정보 저장 후 쿠키에 정보 저장. ! 요청 : 세션 정보로 인증 후 실패시 쿠키 정보로 인증. ! 로그아웃 : 쿠키 정보 삭제 후 세션 정보 삭제.
  • 10. REST API에서의 사용자 인증 REST API와 기존 방식과의 가장 큰 차이점은 세션이나 쿠키가 없다는 것. ! 세션이나 쿠키 정보도 결국 클라이언트에서 전달되는 정 보. ! 따라서 API 호출시 기존에 쿠키로 전달되는 정보를 HTTP 헤더에 넣어서 직접 전달해 주면 됨. ! 상용에서 구현시에는 OAuth 2.0 프로토콜을 이용하는 것이 좋을 듯.