2017-11-11 8 views
1

GitHub 앱을 설치하는 사용자가 앱에서 인증 및 작업을 수행하는 데 사용할 수있는 영구 설치 액세스 토큰을 생성 할 수있는 방법이 있습니까?GitHub 앱 - 영구 설치 액세스 토큰 생성

CI 서버에서 실행되는 간단한 GitHub App을 만들고 테스트 중 하나의 데이터로 PR에 주석을 달고 싶습니다.

이 응용 프로그램은 CI 서버에서 사용자가 실행하므로 here과 같이 액세스 토큰을 생성하는 데 일반적으로 사용되는 GitHub 응용 프로그램의 개인 키를 저장할 위치가 없습니다.

사용자가 앱의 영구 설치 액세스 토큰을 생성 할 수 있다면 CI 서버에서 실행할 때 해당 키를 안전하게 제공하여 앱이 GitHub API와 통신하고 앱으로 인증 할 수 있도록하는 것이 이상적입니다.

나는 사용자가 사용자 액세스 토큰을 제공 할 수 있고 앱이 그런 식으로 인증 할 수 있음을 알고 있지만 앱이 댓글을 달았을 때 사용자가 아닌 앱에서 표시해야합니다. 앱이 사용자 액세스 토큰으로 인증하는 경우 발생합니다).

답변

1

"GitHub Apps"와 GitHub API에 액세스하는 도구에 대한 일반적인 아이디어가 혼동 스러울 수도 있습니다. Apps 시스템은 자체 인증 모델을 가진 GitHub 용 호스팅 서비스를 빌드하는 특정 방법입니다. 사용자는 호스팅/SaaS 툴링을 중심으로 설계되었으므로 앱을 실행할 수 없습니다. 누군가가 스스로를 실행하려면 최종 사용자가 봇의 GitHub에서 새 사용자 계정을 만든 다음 OAuth 또는 개인 액세스 토큰 중 어느 것이 든 상관없이 인증해야합니다.

+0

예 - GitHub Apps를 사용자가 직접 실행해서는 안된다는 사실을 알고 있습니다. 나는 그냥 사용자가 강제로 봇으로 행동 할 수있는 새로운 GitHub 계정을 만들지 않도록하려는 것이다. 그들은 이미 다른 봇으로 활동하는 두 번째 계정을 보유하고있을 수 있습니다. (그리고 나는 TOS가 기술적으로 오직 한 명의 봇 계정/실제 사용자 만 허용한다고 믿습니다.) – abagshaw

+0

API를 사용하여 앱 등을 만들고 있습니까? – coderanger

-1

GitHub 앱을 설치하는 사용자가 앱에서 인증 및 작업을 수행하는 데 사용할 수있는 영구 설치 액세스 토큰을 생성 할 수있는 방법이 있습니까?

어쩌면 그렇게하지 않아도됩니다. GitHub 앱은 사용자가 액세스 권한을 부여한 데이터에 대해서만 작업을 수행합니다. App에 의해 GitHub에서 수정 된 모든 데이터는 App에 의해 '수행 된'동작으로 나타납니다. 앱이 GitHub의의 API와 통신 앱으로 인증 할 수 있도록이 CI 서버에서 실행하는 경우

사용자가 응용 프로그램에 대한 영구적 인 설치 액세스 토큰을 생성 할 수있는 이상적으로 한 경우에는 안전하게 응용 프로그램에 해당 키를 제공 할 수 .

제공 한 정보를 기반으로해서는 안됩니다. 사용자는 GitHub App에 대한 액세스 권한을 부여하여 특정 리소스에 액세스하고 특정 이벤트를 수신합니다. GitHub 응용 프로그램은 GitHub 데이터와 상호 작용할 수있는 설치 ID (또는 여러 개의 설치 ID)가 필요합니다.

좋은 소식은 윤곽을 말한 CI 워크 플로우에서 GitHub는 webhook 페이로드에 설치 ID를 전송합니다 (아마도 push 이벤트).

나는 사용자가 사용자 액세스 토큰을 제공 할 수 있고 앱이 그런 식으로 인증 할 수 있다는 것을 알고 있지만 앱이 댓글을 달았을 때 사용자가 아닌 앱에서 나타나야합니다. 앱이 사용자 액세스 토큰으로 인증하는 경우 발생합니다).

서비스 계정을 만들거나 CI 환경에 자격 증명을 추가하지 않으려면 개인 액세스 토큰 (PAT) 생성이 필요하지 않으며 GitHub Apps가 만들어졌습니다.

  1. GhutHub 응용 프로그램이 Webhook 이벤트를 수신 대기하도록 설정합니다. 이벤트를 수신
  2. 하는 JWT 생성 후 authenticating as an application하여 installation access token를 생성 installation id
  3. 대한 페이로드를 분석.
  4. 위에서 생성 한 installation access token을 사용하여 데이터를 수정하십시오. 이 토큰은 1 시간 만료됩니다.
  5. 이익!
+0

고마워요.하지만 제 유스 케이스를 오해 한 것 같아요. 내 GitHub 앱이 Webhook에 의해 호출되지 않습니다. CI 테스트 파이프 라인의 일부로 실행됩니다. 사용자가 액세스 할 수 없으면 개인 키를 저장할 위치가 없으므로 3 단계를 수행 할 수 없습니다. 앱이 최종 사용자에 의해 실행 중입니다. @ codander가 언급했듯이 내가 찾고있는 것을 성취하는 것이 불가능할 수도 있습니다. – abagshaw

+0

당신은 독립적 인 서비스 로이 응용 프로그램을 실행할 수 있습니다 - 그들의 CI 시스템에서, 의도 한 동작을 허용 할 것입니다. 그럴 필요가 없다면 OAuth 앱이 더 적합 할 것입니다. – osowskit

+0

나는 그것을 이해하고있다.하지만 이것은 PR에 대해 논평 할 필요가있는 간단한 앱에 많은 오버 헤드를 추가한다. OAuth App은 사용자로서 논평의 문제를 되돌려줍니다 (나는 원하지 않습니다 - App으로 논평하고 싶습니다). – abagshaw