12월 5일 인증/인가2

박재용·2020년 12월 5일
0

bcrypt - 암호를 해싱해주는 라이브러리

import bcrypt
password='1234'
bcrypt.hashpw(password,bcrypt.gensalt())
타입 에러가 난다 . (바이트화된 데이터를 넣어야한다)
파이썬에서
문자열 '1234' 인코딩 -> 바이트 1234
디코드 바이트 1234 -> 문자열 '1234'

hashed_password=
bcrypt.hashpw(password.encode('utf-8'),bcrypt.gensalt())
1. password='1234'를 인코딩하여 바이트화한다 .
2. 그후 gensalt()을 이용하여 실제 비밀번호 '1234'의 다른 랜덤한 값을 넣어 암호화 한다.

JWT ( JSON Web Tokens)
앞서 언급했듯이 유저가 로그인에 성공한 후에는 accecc tokken 이라고 하는 암호화된 유저 정보를 첨부하여 request를 보내게 된다 .

  • 유저 로그인:
POST /auth HTTP/1.1
Host: localhost:5000
Content-Type: application/json

{
    "username": "joe",
    "password": "pass"
}
  • access token:
HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E"
}
  • 그러면 서버에서는 access token을 복호화 해서 해당 유저 정보를 얻게 된다.

    • 예를들어 access token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E 를 복호화 하면 다음과 같은 정보를 얻는다:

      {
          user_id = 1 
      }
    • 복호화해서 얻은 유저 아이디를 통해 해당 유저가 누군지 알 수 있다.

  • 이런 절차의 목적은 해당 유저가 매번 로그인 해도 되지 않도록 하는 것이다.

  • access token을 생성하는 방법은 여러가지가 있는데, 그 중 가장 널리 사용되는 기술중 하나가 바로 JWT(JSON Web Tokens)이다.

  • JWT는 말 그대로 유저 정보를 담음 JSON 데이터를 암호화 해서 클라이언트와 서버간에 주고 받는 것이다.

profile
박재용이란 사람이 복습을 하기위해 만든 벨로그 입니다 . 잘부탁드려요

0개의 댓글