Authentication/Authorization

Jung Hyun Kim·2020년 6월 16일
0

Authentication/Authorization (인증과 인가)

1. 인증이란?🤷


회원가입과 로그인🆗

  • 아이디, 이메일, 비밀번호 등의 인증이 필요
  • 누가 어떻게 쓰는지 추적 하기위해 추적을 가능하게 하기 위해 필요
  • 개인정보가 포함되어 있기 때문에, 항상 주의 해야 함!
  • 가장 중요한 것은 비밀번호

개인정보 보호법👀

  • 법으로 지정하여 비밀번호를 암호화 하여 엄격히 보호해야 한다는 법이 있음
  • 수집 받는 개발자도 몰라야 하기에 암호화 하는 library 도 있음
  • 통신 시에 암호와 되어 있어야 한다 https://s가 붙으면 인증이 필요한 사이트 라는 뜻, 쉽게 사이트 내용을 알아낼 수 없다.

2. 비밀번호 암호화는 어떻게 이루어지는가?

  • 단방향 해쉬를 사용하여 암호화 하는데, 점점 강력한 비밀번호 암호화 생성을 위해 SHA-256 가 나왔고, 지금은 더 높은 보안체계를 위해 Salting,Key Stretching 아이디어 또한 생겨났다.(비밀번호와 임의로 생성한 문자열을 합쳐서 해시값에 저장하는 법)

3. bcrypt

  • Salting/Key Stretching의 대표적인 라이브러리이다
  • 단방향 해쉬함수 사용해서 db설계를 복잡하게 할 필요가 없이 자체적으로 hash결과값에 소금값 및 해시값을 반복적으로 같이 보관하기 때문에

4. 인가란? 🤷

  • 사용자가 로그인하면, 해당 사용자가 맞는지 확인하는 과정이 인가이다.
  • JSON WEB TOKEN 을 정상으로 로그인할 때 받게 됨.

JSON Web Token

  • Header - Payload -Signature 로 구성되어 있다.
  • Header에는 토큰 타입과 해시 알고리즘 정보가 들어간다.
  • Payload 에는 토큰 정보 또한 직접적인 정보가 아닌 primary key 정보가 들어가서 쉽게 알수없는 정보를 넘기는 게 아니라, 쉽게 식별할 수 없는 키를 넘겨준다. 토큰의 유효 기간을 넘겨주는것도 일반적이다.
  • Signature에는 앞에 정보를 암호화 한 내용이 들어간다고 볼 수 있다.
  • JSON Weg Token을 frontend는 받아서 다시 backend로 넘겨 주어야함
profile
코린이 프론트엔드 개발자💻💛🤙🏼

0개의 댓글