사용자:Senouis/도전과제 서버 명세
둘러보기로 이동
검색으로 이동
'미디어위키: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로 연결 예정
- 백엔드 개발 환경: Java + Spring[1] 기반 or Javascript + Node.js + Express.js
기능
처음 시작할 때
- 안내문(수집하게 되는 개인정보 등을 공시)과 함께 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주 유효기간으로 설정
- 웹 페이지에 진입했을 때 Authorization Token과 Refresh 토큰이 모두 없는 경우
Create
libertyga.me/achievement/v0/initialization
- 웹 페이지에 진입하면 READ를 시도하고, 없다는 오류 응답이 왔을 때 Access Token이 있는 경우에만 사용자 이름과 토큰을 헤더에 삽입하여 Create 수행
- 요청 종류는 PUT으로 설정
- PUT 요청을 받은 서버는 profile 리소스를 요청하여 인증 성공시 DB에 사용자 이름으로 된 스키마를 생성
- 스키마 내부에는
- 성공/실패할 경우 mw.notification.notify()로 알려야 함
- 웹 페이지에 진입하면 READ를 시도하고, 없다는 오류 응답이 왔을 때 Access Token이 있는 경우에만 사용자 이름과 토큰을 헤더에 삽입하여 Create 수행
Read
libertyga.me/achievement/v0/item/{user}/{itemname}
Update
Delete
- ↑ Apache Tomcat이 포함됩니다.