사용자:Senouis/도전과제 서버 명세

리버티게임(개발), 모두가 만들어가는 자유로운 게임
Senouis (토론 | 기여)님의 2024년 12월 1일 (일) 13:50 판 (Create까지 작성)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

'미디어위키:Gadget-Achievement.js'를 통해 다음 과정을 수행

예상 기술 스택

    • 백엔드 개발 환경: Java + Spring[1] 기반 or Javascript + Node.js + Express.js
      • 3월까지 Spring을 제대로 익히지 못하면 Express.js로 개발을 시작합니다.
    • DB: MongoDB 확정
      • 도전과제 서버의 진행도 데이터는 금융권 DB마냥 ACID가 중요한 데이터 종류가 아님: 빠른 로드가 우선됨
      • 기존의 JSON 파일 저장 방식 대신 BSON 스키마로 저장하는 MongoDB 채택
        • Spring을 사용할 경우 Spring Data for MongoDB로 DB를 연결할 예정
        • Express.js를 사용할 경우 Mongoose로 연결 예정

기능

처음 시작할 때

  • 안내문(수집하게 되는 개인정보 등을 공시)과 함께 OAuth 2.0 인증 절차를 수행하는 링크를
    • 웹 페이지에 진입했을 때 Authorization Token과 Refresh 토큰이 모두 없는 경우
      • OAuth 확장 기능의 절차대로 리버티게임 서버 내 OAuth 기능에 Authorization 토큰 발급 요청
      • Authorization 코드 발급 기능을 먼저 구현한 후 PKCE 과정을 추가해 code_challenge 수행 필요
      • Redirect URI는 요청한 페이지로 설정
    • 웹 페이지에 진입했을 때 Authorization 토큰이 있는 경우 or Refresh 토큰이 있는 경우
      • 즉시 OAuth 확장 기능의 절차대로 리버티게임 서버 내 OAuth 기능에 Access 토큰 및 Refresh 토큰 발급 요청
      • 쿠키에 Access 토큰 및 Refresh 토큰을 1주 유효기간으로 설정

Create

libertyga.me/achievement/create

    • 웹 페이지에 진입하면 READ를 시도하고, 없다는 오류 응답이 왔을 때 Access Token이 있는 경우에만 사용자 이름과 토큰을 헤더에 삽입하여 Create 수행
      • 요청 종류는 PUT으로 설정
      • PUT 요청을 받은 서버는 profile 리소스를 요청하여 인증 성공시 DB에 사용자 이름으로 된 스키마를 생성
        • 스키마 내부에는
    • 성공/실패할 경우 mw.notification.notify()로 알려야 함

Read

Update

Delete

  1. Apache Tomcat이 포함됩니다.