전체보기
16. 인증 엔드포인트, 인증 decorator 함수 구현
이전에 PyJWT 의 사용법을 배웠으니 이제부터 인증 엔드포인트와 인증 decorator를 구현해 보도록 하겠다. import jwt import bcrypt from flask import Flask, request, jsonify, current_app, Response, g from flask.json import JSONEncoder from sqlalchemy import create_engine, text from datetime import datetime, timedelta from functools import wraps class CustomJSONEncoder(JSONEncoder): def default(self, obj): if isinstance(obj, set): return ..
![아이디는 찾아주는데 왜 비밀번호는 안 찾아줄까?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDQ1V7%2FbtrrCXKyw2l%2FqLUQmEASO7ak3Z0QgSLkvk%2Fimg.png)
아이디는 찾아주는데 왜 비밀번호는 안 찾아줄까?
네트워크를 공부하기 이전부터 문득 든 생각이 있었다. 아주 옜날에는 아이디 나 비밀번호를 잊어 먹으면 본인인증 후에 친절하게 다 알려주었다. 그런데 어느새 아이디는 알려주거나 일부만 알려주고 나머지는 *** 표시를 하는데 유독 비밀번호는 잊어먹으면 절대 안 알려주고 무조건 임시 비밀번호를 발급해 주거나 비밀번호를 새로 설정해야만 했다. 어째서 이렇게 변한 것일까? 왜 하필이면 비밀번호만 안 알려주는가? 하는 의문이 들었는데 이번에 네트워크와 Flask 를 통한 API 개발을 배우면서 의문을 해소하게 되었다. 왜 비밀번호를 안 알려주는가? 정답은 본인들도 비밀번호가 뭔지 모르기 때문이다. 이게 무슨말인가 싶은데 사용자가 네이버나, 구글에 회원가입을 하면 아이디와 비밀번호를 저장하는 데이터베이스(DB)에서 ..
![15. Access token (JWT, PyJWT)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu7BQ2%2Fbtrrwfktjjj%2FATAcIBQJG1dXHQbtopyNKk%2Fimg.png)
15. Access token (JWT, PyJWT)
Access token은 사용자가 로그인에 성공하면 백엔드 API 서버가 프론트엔드에게 전송하는 것이다. 그 후 프론트엔드에서 로그인 한 사용자의 access token을 HTTP 요청에 첨부해서 서버에 전송하는 것이다. HTTP 통신은 독립적이다. 따라서 이전에 어떤 HTTP 통신이 실행되었는지 알 수 없다. 즉 인증을 했는데 이전에 인증을 했는지 알 수가 없다는 것이다. 이미 로그인 된 상태인 것을 알기 위해서는 로그인 정보를 포함한 데이터를 HTTP 요청에 첨부해서 보내야한다. access token이 바로 그 로그인 정보다. 맨 위에서 기술했듯이 서버 API에서 access token을 생성하여 프론트에 쏴주면 프론트는 쿠키에 access token을 저장하고 있다가 그대로 access token..
![14. 인증 (Authentication)절차와 비밀번호 암호화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb77fJ5%2FbtrrxYvTPbz%2Fnz2YrjmjEmcqmIgN7Z3CbK%2Fimg.png)
14. 인증 (Authentication)절차와 비밀번호 암호화
지금까지 SQLAlchemy 로 miniter API 와 DB를 연결하였다. 여기서 인증 엔드포인트를 구현하지 않고 그대로 배포 한다면 마음대로 수정하고 안에 있는 정보를 빼앗길 가능성이 매우, 몹시 커질 것이다. 심지어 public API에도 남용 방지, 사용자 통계등의 이유로 인증 API가 꼭 필요하다고 하니 반드시 알고 만들어봐야 할 것이다. 더 나아가서 한 단계 더 높은 보안을 위해 비밀번호 암호화도 알아보기로 한다. 그런데 인증 이라고 하면 보통 Certification 인데 어째서 Authentication 일까? 하고 찾아보니 Certification 은 일정한 기준을 넘었을때 쓰는 단어고 Authentication 은 권한이 있는지에 대한 확인 여부 라고 한다. 우리가 쓰는 공용인증서가 C..