오늘은 fastapi Oauth2 기반
Fastapi Security를 구현해 보겠다.
시스템에 접근이 허용됨을 인증 하기 위해 jwt토큰을 만들어 발급할 수 있도록 한다.
jwt 생성에는 다음을 주의하자
1. secret key는 복합하게 구성할 것
2. 256비트 단방향 암호화를 쓸 것
3. payload에 password같은 민감한 정보를 담지 말것
4. 만기 시간을 두어 탈취한 토큰으로 계속 접근 하는 것을 막을 것
from datetime import datetime, timedelta
import jwt
SECRET_KEY = "YOURSECRET"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_HOUR = 2*60*60
paylaod = {"exp": datetime.utcnow()+timedelta(seconds=ACCESS_TOKEN_EXPIRE_HOUR),
"username": user_data["username"],
SECRET_KEY,
algorithm=ALGORITHM
}
OAuth2PasswordBearer라는 모듈을 사용하여
특정 api에서 토큰을 검증 하도록 할 수 있다.
from fastapi import Depends, FastAPI
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/items/")
async def read_items(token: str = Depends(oauth2_scheme)):
return {"token": token}