FastAPI 사용자 인증 - 47

2023. 1. 7. 18:52·Develop/FastAPI
728x90
SMALL
로그인을 통해 사용자 인증을 시도해 보자

 

1. 사용자 인증을 위한 라이브러리 import

from fastapi.security import OAuth2PasswordRequestForm
#차후 에러문을 위한 HTTPException import
from fastapi import FastAPI, HTTPException

 

2. password 일치여부 함수 생성

def verify_password(plain_password, hashed_password):
    return bcrypt_context.verify(plain_password, hashed_password)

※ verify(디코딩 패스워드, 인코딩 패스워드)

 

3. 유저 데이터를 쿼리로 가져와서 인증하는 함수 생성

def authenticate_user(username: str, password: str, db):
    user = db.query(models.Users).filter(models.Users.username == username).first()

    if not user:
        return False
    if not verify_password(password, user.hashed_password):
        return False
    return user

 

4. 인증을 위한 POST API 생성

@app.post("/token")
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends(),
                                 db: Session = Depends(get_db)):
    user = authenticate_user(form_data.username, form_data.password, db)
    if not user:
        return HTTPException(status_code=404, detail="User not found")
    return "User Validated"

 

5. Swagger 확인

 

사용자 인증이 성공했을 때

 

사용자 인증이 실패했을 때

 

6. 참고 사항

OAuth 2.0(Open Authorization 2.0, OAuth2) => 인증을 위한 개방형 표준 프로토콜

Authentication
인증, 접근 자격이 있는지 검증하는 단계
Authorization
인가, 자원에 접근할 권한을 부여
인가가 완료되면 리소스 접근 권한이 담긴 Access Token이 클라이언트에게 부여
Access Token
리소스 서버에게 리소스 소유자의 보호된 자원을 획득할 때 사용되는 만료 기간이 있는 Token
Refresh Token
Access Token 만료시 이를 갱신하기 위한 용도로 사용하는 Token
일반적으로 Access Token보다 만료 기간이 김

출처 - https://blog.naver.com/mds_datasecurity/222182943542

728x90
SMALL
저작자표시 비영리 변경금지 (새창열림)

'Develop > FastAPI' 카테고리의 다른 글

FastAPI JSON Web Token(JWT) 디코딩 함수 구현 - 49  (0) 2023.01.08
FastAPI JSON Web Token(JWT) 생성 - 48  (0) 2023.01.08
FastAPI 데이터베이스에 유저 데이터 저장하기 - 46  (0) 2023.01.07
FastAPI bcrypt 비밀번호 암호화 - 45  (0) 2023.01.07
FastAPI Create Authentication & Post Request - 44  (0) 2023.01.07
'Develop/FastAPI' 카테고리의 다른 글
  • FastAPI JSON Web Token(JWT) 디코딩 함수 구현 - 49
  • FastAPI JSON Web Token(JWT) 생성 - 48
  • FastAPI 데이터베이스에 유저 데이터 저장하기 - 46
  • FastAPI bcrypt 비밀번호 암호화 - 45
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
FastAPI 사용자 인증 - 47
상단으로

티스토리툴바