TIL #11 [Django] 인가(Authorization)

ahn__jh·2021년 4월 8일
0

인가(Authorization)

사용자가 인증(로그인) 후 쇼핑몰의 경우 상품을 보려고 페이지를 넘긴 다던지 장바구니 이동 등 서버로 부터 계속 요청을주고 받게 될 경우 인증을 계속 다시 해줘야 한다.
이는 사용자를 굉장히 번거롭게하고 불편하기 때문에
이방법을 해소하기 위해 인가(Authorization)라는 방법을 사용한다.

인가(Authorization)는 유저가 요청하는 request를 실행할 수 있는 권한이 있는 유저인가를 확인하는 절차 이다.

인증(로그인)시 유저 정보를 확인할 수 있는 token을 생성하여 request를 보낼때 첨부하여 보낸다.

token 생성방법

JWT(JSON Web Tokens)
1. 사용자 인증(로그인)
2. 사용자 로그인하여 인증 받으면 DB에서 공개되도 문제 되지않는 user의 ID 를 token을 생성할 때 정보를 담는다
3. token 생성 방법

	encoded_jwt = jwt.encode({'user id': 유저로부터 입력 받은 ID }, 'secret', algorithm='HS256')
    	# algorithm='HS256 토큰을 생성 할때 사용할 알고리즘 방식

4.로그인 성공시 토큰을 생성하게 만들고 토큰이 생성됨

encoded_jwt를 출력하면 문자열로 토큰이 생성된다.

"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIGlkIjoxM30.wfS5cXUuXL0AEWxrzyXWTFuTK3XpRkQU8Lc1HjyXQec"
  1. 생성된 토큰을 사용자에게 request보낼 때 함께 보내면 된다.

token 복호화방법

jwt.decode( '암호화토큰', 'secret', algorithms='HS256')

암호화된 토큰을 첫번째 인자로 받고 두번째 인자는 암호화했던 문자열, 세번째는 암호화했던 알고리즘 방식을 입력하면 복호화됨

인코딩할때와 다른점은 algorithm 방식에 s를 붙여 복수형으로 해야 한다는 점 이다.


jwt token으로 인코딩한 코드




decode한 토큰 값

0개의 댓글