Auth - 인증과 인가

whybein·2020년 2월 19일
0

Auth

목록 보기
1/1
post-thumbnail

인증은 유저의 identification을 확인하는 절차이며 인가는 유저의 request를 실행할 수 있는 권한이 있는지 확인하는 절차입니다.

 

1. 인증(Authentication)

 

1.1 해쉬 함수(암호화)

개인 정보 보안 때문에 비밀번호를 암호화 해서 저장한다.

  • 암호화
    - 단방향 암호화 : 암호화 되면 원본으로 복구(복호화) 불가
    - 양방향 암호화 : 복호화 가능
  • 로그인 입력시 비밀번호를 암호화해서 디비에 있는 암호화된 비밀번호와 비교하는 방식을 사용
  • 양방향은 복호화가 가능하고 내부 인력도 볼 수가 있기 때문에 단방향 암호화 방식을 쓴다
  • 단방향도 레인보우 테이블이 있다면 뚫릴 수가 있다. 그래서 아래 두가지 기능이 추가됨

추가된 기능

  • salting
    랜덤값을 추가해서 암호화 하며 random값이 같이 표시된다.
  • key stretching
    암호화를 몇번 더 한다.

bcrypt

https://pypi.org/project/bcrypt/
위 두개 기능이 추가된 것 중 가장 많이 쓰이는 해쉬 함수

 

1.2 JWT(Json Web Tokens)

웹의 특징

request / responsestateless로 이뤄진다. 유저가 로그인하고 이후 상태를 유지하려면 로그인 이후 request할 때마다 이미 로그인 했다라고 알려줘야 한다.

토큰

로그인에 성공하면 서버는 암호화된 유저정보(토큰)를 포함해 response 해주고 그 토큰은 브라우져(쿠키 또는 세션)에 저장된다. 그럼 이후 request마다 토큰을 첨부하며 서버는 토큰을 복호화해서 유저를 식별하고 로그인 상태를 유지할 수 있게 한다.

JWT

https://jwt.io/
유저 정보는 Json 데이터 형태로 암호화해서 사용한다.

 

2. 인가(Authorization)

JWT를 통해 유저를 식별하고 해당 페이지에서 유저의 권한이 있으면 응답하고 권한이 없으면 다른 코드를 보낸다.

profile
Back-End Developer

0개의 댓글