권한과 Validation

최다안·2022년 12월 20일
0

서버

목록 보기
8/8
post-thumbnail

📖 목차

  1. 인증과 권한
    - 인증
    - 권한
    - JWT

  2. Validation (유효성 검사)
    - 형식적 Validation
    - 의미적 Validation

📌 인증과 권한

1) 인증 (Authentication)

사용자에게 적절한 접근 권한이 있는 지 확인하는 일련의 과정, 즉 로그인에 사용되는 과정

  1. 회원가입 시 비밀번호 보완을 위해 비밀번호 암호화하여 DB에 저장
  2. 로그인 시 비밀번호 검사를 통해(복호화된 값끼리 비교) 인증 수행

2) 권한 (Authorization)

인증 절차가 끝난 접근 주체(사용자)가 보호된 리소스에 접근 가능한지 결정하는 것

  1. 로그인으로 인증 후, 서버에서는 서명된 JWT를 생성하여 클라이언트에 응답으로 돌려줌
  2. 클라이언트가 서버에 데이터를 추가적으로 요구할 때 JWT를 HTTP Header에 첨부
  3. 서버에서 클라인트로부터 온 JWT 검증

3) JWT (JSON WEB TOKEN)

  • JWT는 Header, Payload, Signature로 구성
  • Header : 타입, 해시 알고리즘 종류
  • Payload : 서버에서 첨부한 사용자 권한 정보와 데이터
  • Signature : Header, Payload를 Base64 URL-safe Encode를 한 이후 Header에 명시된 해시함수를 적용하고, 개인키로 서명한 전자서명
  • 토큰 자체에 사용자의 권한 정보와 서비스를 사용하기 위한 정보가 포함
  • Stateless 환경(HTTP)에서 데이터를 주고 받기 가능

📌 Validation (유효성 검사)

1) 형식적 Validation

Controller 단계에서 검사
예) 빈값, 길이, 정규표현식

2) 의미적 Validation

Service 단계에서 검사, 데이터 중복 검사와 같이 데이터베이스를 거쳐서 검사하는 것들
예) 데이터 중복, DB에 존재하는 값, 기존 데이터와 일치 여부

profile
https://github.com/DaanChoi

0개의 댓글