Skip to content

Commit

Permalink
Quartz sync: Jan 9, 2025, 4:44 PM
Browse files Browse the repository at this point in the history
  • Loading branch information
1etterh committed Jan 9, 2025
1 parent 9adf6b1 commit 3b0b11c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
30 changes: 15 additions & 15 deletions content/Projects/syncday/GitHub API for Java.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,28 @@ tags:
- java
- oktokit
---
### 문제
1. Backend: Spring Boot(Java)
2. API: GitHub API For Java
## 문제
GitHub의 공식 Library인 Oktokit은 Javascript를 통해 사용할 수 있기 때문에 Spring Boot로 Backend를 구축하기 위하여 GitHub API For Java를 활용하는 과정에서 발생한 문제이다.

1. 보안을 위해 백엔드에서 Github의 데이터를 수신 후 프론트엔드에 전송하고자 함.
2. Github Installation Token을 통해 프로젝트 리스트를 요청했으나 메소드가 Deprecated되어 동작하지 않음.
1. 보안을 위해 백엔드(Java)에서 Github의 데이터를 수신 후 Frontend에 전송하고자 함.
2. Github Installation Token을 통해 프로젝트 리스트를 요청했으나 사용하려는 메소드가 Deprecated되어 동작하지 않음.
3. Github API for Java만으로 문제를 해결하기에는 프로젝트 기한이 짧음
1. 직접 contribute하거나
2. 이슈 등록 후 해결되길 기다리기
3. -> 둘 다 기대하기 힘들다.

### 원인 분석
> GitHub API For Java는 개인이 배포한 오픈소스 API이며, deprecated된 method들이 존재함.
### 해결 방법
1. GitHub API For Java를 통해 JWT와 GitHub Installation Token을 생성하고 이를 통해 인증할 수 있음
2. Github 공식 API인 Oktokit(Javascript 기반)를 활용하여 필요한 데이터를 요청할 수 있음
3. 설치, 인증 및 권한 정보는 Backend에서 관리하며, 필요한 경우 프론트 엔드(VueJS)에서 Oktokit을 활용할 수 있음
4. 보안을 위해 Installation Token은 필요한 경우에 한하여 발급하며, 사용 후 일정 시간이 지나면 비활성화 할 수 있음
## 목표
보안을 위해 Backend에 GitHub의 Secret Key와 Installation Id를 저장하고, 예정된 기능인 GitHub 연동을 정상적으로 구현하는 것.
## 해결 방법
1. GitHub API For Java를 활용하여 JWT와 GitHub Installation Token을 생성
2. Github 공식 API인 Oktokit을 활용하기 위해 Vue.js에 Oktokit 설치
3. Frontend에서 필요한 경우에 한하여 Token 요청
4. 반환된 Token은 State 변수로 관리하여 CSRF 공격에 대비

### 결과
1. oktokit과 GraphQL을 통해 필요한 data만 요청할 수 있음
2. GitHub 인증 정보는 backend에 저장하여 보안성을 최대한 확보
## 결과
1. GitHub의 인증 정보는 Backend에만 저장
2. 정보 은닉을 위해 Frontend에는 installation Id 대신 installation Index 반환
3. Oktokit을 활용하여 예정된 기능 정상 구현

# refs
1. [GitHub API For Java](https://github-api.kohsuke.org/)
Expand Down
16 changes: 8 additions & 8 deletions content/Projects/syncday/기존 서비스 분석.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,22 @@ tags:
- project
draft: false
---

## 기존 서비스
#### 1. Trello
1. Power UP을 설치하여 Github의 Pull Request, Commit, Branch, Issue 등의 링크를 연결 할 수 있음
2. OAuth App을 활용하여 Access Token발급 후 브라우저에 저장
3. GitHub의 프로젝트 진행 정보를 import하는 기능은 제공하지 않음
#### 2. Linear
1. 직관적인 UI
2. GitHub외에도 Figma, draw.io등 다양한 Plugin 지원
3. Github App을 활용하여 설치 상태를 양방향 동기화
4. Github의 데이터를 옮겨올 수 있으나, Repository 단위로 선택하기에 시간이 오래 걸리거나 에러가 나는 경우가 있음
4. Github의 데이터를 옮겨올 수 있으나, Repository 단위로 import하는 과정에서 시간이 오래 걸리거나 에러가 나는 경우가 있음
#### 3. Jira
1. 다양한 기능
2. GitHub 연동을 통해 특정 업무ID를 커밋 메시지에 작성하면 자동으로 Jira에 반영
3. Github 데이터를 직접적으로 가져올 수는 없고, csv를 추출하여 가져올 수 있음
4. Coding Convention, 회의록 등 프로젝트에 관련된 모든 작업을 진행할 수 있음
1. GitHub 연동을 통해 특정 업무ID를 커밋 메시지에 작성하면 자동으로 Jira에 반영
2. Github 데이터를 직접적으로 가져올 수는 없고, csv를 추출하여 가져올 수 있음
3. Coding Convention, 회의록 등 프로젝트에 관련된 모든 작업을 진행할 수 있음

### SyncDay에 적용할 기능
1. 직관적인 UI
### SyncDay
1. 기획과 구현 과정을 일치하도록 만들기
2. Github App을 통한 양방향 동기화
3. 이슈를 가져올 때 마일스톤 단위로 선택하여 가져올 수 있는 기능

0 comments on commit 3b0b11c

Please sign in to comment.