코드스테이츠 블록체인 교육 - 인증/보안 (8/12~8/18)

Imomo·2022년 8월 28일
0

블록체인교육

목록 보기
22/26

📖 학습 목표

  • 회원 가입 및 로그인, 로그아웃 인증관련

📚 HTTPS

HTTP + SECURE

  • 암호화된 데이터를 주고받는다.

  • 인증서 정보를 확인할 수 있다. 브라우저는 인증서에서 해당 인증서를 발급한 CA 정보를 확인하고 인증된 CA가 발급한 인증서가 아니라면 아래와 경고창을 띄워 서버와 연결이 안전하지 않다는 화면을 보여줍니다.

  • 서버에서 클라이언트에 데이터를 저장하는 방법의 하나입니다.
  • 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단
  • 해당 도메인에 대해 쿠키가 존재하면, 웹브라우저는

✅ 쿠키 옵션

  • Domain
    쿠키 옵션에서 도메인은 포트 및 서브 도메인 정보,세부 경로를 포함하지 않습니다.
    만약쿠키 옵션에서 도메인 정보가 존재한다면 클라이언트에서는 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키를 전송할 수 있습니다.

  • Path
    Path옵션의 특징은 설정된 path를 전부 만족하는 경우 요청하는 Path가 추가로 더 존재하더라도 쿠키를 서버에 전송할 수 있습니다.

  • MaxAge or Expires
    쿠키가 유효한 기간을 정하는 옵션입니다.

  • Secure
    만약 해당옵션이 true로 설정된 경우, HTTPS 프로토콜을 이용하여 통신하는 경우에만 쿠키를 전송할 수 있다.

  • HttpOnly
    자바스크립트에서 브라우저의 쿠키에 접근 여부를 결정합니다.
    만약 해당옵션이 true로 설정된 경우, 자바스크립트에서는 쿠키에 접근이 불가합니다.
    만약 이옵션이 false인 경우 자바스크립트에서 쿠키에 접근이 가능하므로 XSS공격에 취약합니다.

  • SameSite
    Cross-Origin 요청을 받은 경우 요청에서 사용한 메소드와 해당 옵션의 조합으로 서버의 쿠키 전송 여부를 결정하게 된다.

  1. Lax: Cross-Origin 요청이면 GET 메소드에 대해서만 쿠키를 전송할 수 있다.

  2. Strict: Cross-Origin이 아닌 same-site 인 경우에만 쿠키를 전송 할 수 있습니다.

  3. None: 항상 쿠키를 보내줄수 있다.

이러한 옵션들을 지정한 다음 서버에서 클라이언트로 쿠키를 처음 전송하게 된다면 헤더에 Set-Cookie라는 프로퍼티에 쿠키를 담아 전송하게 된다.
이후 클라이언트 혹은 서버에서 쿠키를 전송해야 한다면 클라언트는 헤더에 Cookie라는 프로퍼티에 쿠키를 담아 서버에 쿠키를 전송하게 됩니다.

📚 Session

서버가 Client에 유일하고 암호화된 ID를 부여
중요 데이터는 서버에서 관리

서버가 클라이언트의 쿠키를 임의로 삭제할 수는 없다. 대신, set-cookie로 세션 아이디의 키값을 무효한 값으로 갱신해야 한다.

📚 Token(JWT)

클라이언트에서 인증 정보를 보관하는 방법으로 토큰 기반 인증이 고안되었다.

✅ JSON Web Token 의 종류

클라이언트가 처음 인증을 받게 될 때, Access Token과 Refresh Token 두가지를 받는다.
1. Access Token
보호된 정보들(유저의 이메일,연락처,사진 등)에 접근할수 있는 권한부여에 사용한다.
짤은 유효기간을 주어 탈취 되더라도 오랫동안 사용할 수 없도록 하는것이 좋다.

  1. Refresh Token
    Access Token의 유효기간이 만료된다면 Refresh Token을 사용하여 새로운 Access Token을 발급 받는다.
    유저의 편의보다 정보를 지키는것이 더 중요한 웹사이트들은 Refresh Token을 사용하지 않는곳이 많다.

✅ JWT 구조

1.Header
이것이 어떤 종류의 토큰인지, 어떤 알고리즘으로 sign(암호화)할지가 들어있다.
2.Payload
정보가 담겨있다. 권한 및 사용자의 유저이름 등
3.Signature
base64로 인코딩된 첫번째, 그리고 두번째 부분이 완성되었다면, 원하는 비밀 키를 사용하여 암호화 한다.

✅ 토큰기반 인증 절차

✅ 토큰기반 인증의 장점

  1. Statelessness & Scalability (무상태성 & 확장성)
  • 서버는 클라이언트에 대한 정보를 저장할 필요 없다.

  • 클라이언트는 새로운 요청을 보낼때마다 토큰을 헤더에 포함시키면 된다. 서버를 여러개 가지고 있는 서비스라면 이용성이 높다(같은 토큰으로 여러 서버에서 인증가능)

  1. 안전하다
  • 암호화한 토큰을 사용하고, 암호화 키를 노출 할 필요가 없기 때문에 안전하다.
  1. 어디서나 생성 가능하다.
  • 토큰을 확인하는 서버가 토큰을 만들어야 하는 법이 없다.
  • 토큰 생성용 서버를 만들거나, 다른 회사에서 토큰관련 작업을 맡기는 것 등 다양한 활용이 가능하다.
  1. 권한 부여에 용이하다.
  • 토큰의 payload안에 어떤 정보에 접근 가능한지 정할 수 있다.

📚 OAuth 2.0

소셜 로그인 인증 방식은 Oauth 2라는 기술을 바탕으로 구현된다. 인증을 위한 표준 프로토콜의 한 종류이다.
OAuth는 인증(Authentication)을 다른 서비스에 맡길 뿐,접근 권한 관리(Authorization)는 순전히 내 서버의 몫입니다.

✅ 소셜 로그인 로직 플로우

0개의 댓글

관련 채용 정보