Skip to content

Functional Specification

Lee Chae Min edited this page Jun 19, 2023 · 2 revisions

✔️ Functional Specification

회원가입(Sign up)

구현시 필요 데이터

  • 아이디(이메일) [필수]
  • 비밀번호 [필수]
  • 닉네임 [선택]

세부 정책

  • 아이디(이메일)은 반드시 이메일 형식으로 입력해야한다.
    • 클라이언트로부터 잘못된 이메일 형식을 입력받으면 에러 메시지와 함께 클라이언트 에러[400(Bad Request) Http Status Code]을 응답한다.
  • 아이디(이메일)은 중복이 허용되지 않는다.
    • 클라이언트로부터 중복된 이메일을 입력받으면 에러 메시지와 함께 클라이언트 에러[409(Conflict) Http Status Code]를 응답한다.
  • 비밀번호는 8자 이상 16자 이하로 입력할 수 있다.
  • 비밀번호는 영어, 숫자, 특수문자를 반드시 1개 이상씩 입력해야 한다.
    • 클라이언트로부터 잘못된 비밀번호 형식을 입력받으면 에러 메시지와 함께 클라이언트 에러[400(Bad Request) Http Status Code]을 응답한다.

로그인(Sign in)

구현시 필요 데이터

  • 아이디(이메일) [필수]
  • 비밀번호 [필수]

세부 정책

  • 아이디(이메일)은 반드시 이메일 형식으로 입력해야한다.
    • 클라이언트로부터 잘못된 이메일 형식을 입력받으면 에러 메시지와 함께 클라이언트 에러[400(Bad Request) Http Status Code]을 응답한다.
  • 이이디(이메일)이 이메일 형식이지만 존재하지 않는다면 에러 메시지와 함께 클라이언트 에러[400(Bad Request) Http Status Code]을 응답한다.
  • 비밀번호가 잘못되었다면 에러 메시지와 함께 클라이언트 에러[400(Bad Request) Http Status Code]을 응답한다.
  • 사용자 정보가 올바르다면 클라이언트에게 액세스 토큰과 리프레쉬 토큰을 발급해서 응답한다.
    • 액세스 토큰과 리프레쉬 토큰에는 PK, 아이디(이메일), 닉네임, 역할이 담겨있어야 한다.
    • 액세스 토큰의 만료기한은 5분, 리프레쉬 토큰은 1달로 지정한다.

로그아웃(Sign out)

구현시 필요 데이터

  • 액세스 토큰(Access Token)
  • 리프레쉬 토큰(Refresh Token)

세부 정책

  • 사용자가 로그아웃을 하면 인증 정보를 만료시키고 로그인 페이지로 리다이렉트 되어야한다.
  • 로그인 하지 않은 사용자가 로그아웃 요청을 하면 인가 에러[403(FORBIDDEN) Http Status Code]을 응답한다.

인증(Authentication) 및 인가(Authorization)

구현시 필요 데이터

  • 액세스 토큰(Access Token) 또는 리프레쉬 토큰(Refresh Token) [택 1 필수]
    • PK [필수]
    • 아이디(이메일) [필수]
    • 닉네임 [필수]
    • 역할 [필수]

세부 정책

  • 클라이언트는 Authorization 헤더에 이전에 발급받은 Access Token을 키 값에 넣고 인증이 필요한 페이지의 자원을 요청한다.
    • Authorization 헤더에 아무 값이 없으면 에러 메시지와 함께 인가 에러[401(Unauthorized) Http Status Code]을 응답한다.
    • Authorization 헤더의 값이 'Bearer '로 시작하지 않는다면 에러 메시지와 함께 인가 에러[401(Unauthorized) Http Status Code]을 응답한다.
    • Authorization 헤더의 값이 JWT 토큰인지 검증했을 때 풀리지 않거나 토큰 안에 들어있는 값이 잘못되었다면 에러 메시지와 함께 인가 에러[401(Unauthorized) Http Status Code]을 응답한다.
  • 토큰 인증이 완료되었지만 관리자 권한이 아닌 액세스 권한이 더 낮은 일반 유저가 관리자 페이지에 접속할 경우 에러 메시지와 함께 인가 에러[403(Forbidden) Http Status Code]을 응답한다.
  • 클라이언트 인증 및 인가가 완료되면 클라이언트가 원래 요청하던 페이지의 컨트롤러 로직을 수행한다. (페이지가 없을 경우 에러 메시지와 함께 페이지 없음 에러[404(Page Not Found) Http Status Code]을 응답한다.)