설치 액세스 토큰 정보
앱 설치로 인증하려면 설치 액세스 토큰을 생성해야 합니다. 앱 설치로 인증하는 방법에 대한 자세한 내용은 "GitHub 앱 설치로 인증"을 참조하세요.
Note
설치 액세스 토큰을 생성하는 대신 GitHub의 Octokit SDK를 사용하여 앱으로 인증할 수 있습니다. SDK는 설치 액세스 토큰 생성을 처리하고 만료되면 토큰을 다시 생성합니다. 앱 설치로 인증하는 방법에 대한 자세한 내용은 "GitHub 앱 설치로 인증"을 참조하세요.
설치 액세스 토큰을 안전하게 유지해야 합니다. 자세한 내용은 "GitHub App을 만드는 모범 사례"을(를) 참조하세요.
설치 액세스 토큰 생성
-
앱에 대한 JWT(JSON Web Token)를 생성합니다. 자세한 내용은 "GitHub 앱에 대한 JWT(JSON Web Token) 생성"을 참조하세요.
-
인증하려는 설치의 ID를 가져옵니다.
웹후크 이벤트에 응답하는 경우 웹후크 페이로드에 설치 ID가 포함됩니다.
REST API를 사용하여 앱 설치에 대한 ID를 찾을 수도 있습니다. 예를 들어,
GET /users/{username}/installation
,GET /repos/{owner}/{repo}/installation
,GET /orgs/{org}/installation
,GET /app/installations
엔드포인트를 사용하여 설치 ID를 가져올 수 있습니다. 자세한 내용은 "GitHub Apps에 대한 REST API 엔드포인트" 항목을 참조하세요.앱의 설정 페이지에서도 앱 ID를 찾을 수 있습니다. 앱 ID는 클라이언트 ID와 다릅니다. GitHub App의 설정 페이지로 이동하는 방법에 대한 자세한 내용은 "GitHub 앱 등록 수정"을(를) 참조하세요.
-
REST API
POST
요청을/app/installations/INSTALLATION_ID/access_tokens
에 보냅니다. 요청의Authorization
헤더에 JSON Web Token을 포함합니다.INSTALLATION_ID
를 인증하려는 설치의 ID로 바꿉니다.예를 들어 이 curl 요청을 보냅니다.
INSTALLATION_ID
를 설치 ID로 바꾸고JWT
를 JSON 웹 토큰으로 바꿉니다.curl --request POST \ --url "http(s)://HOSTNAME/api/v3/app/installations/INSTALLATION_ID/access_tokens" \ --header "Accept: application/vnd.github+json" \ --header "Authorization: Bearer JWT" \ --header "X-GitHub-Api-Version: 2022-11-28"
필요에 따라
repositories
또는repository_ids
본문 매개 변수를 사용하여 설치 액세스 토큰이 액세스할 수 있는 개별 리포지토리를 지정할 수 있습니다.repositories
또는repository_ids
를 사용하여 특정 리포지토리에 대한 액세스 권한을 부여하지 않는 경우 설치 액세스 토큰은 설치에 액세스 권한이 부여된 모든 리포지토리에 액세스할 수 있습니다. 설치 액세스 토큰에는 액세스 권한이 설치에 부여되지 않은 리포지토리에 대한 액세스 권한이 부여될 수 없습니다.필요에 따라
permissions
본문 매개 변수를 사용하여 설치 액세스 토큰에 있어야 하는 권한을 지정합니다.permissions
을 지정하지 않는 경우 설치 액세스 토큰에는 앱에 부여된 모든 권한이 포함됩니다. 설치 액세스 토큰은 앱에 부여되지 않은 권한을 부여할 수 없습니다.응답에는 설치 액세스 토큰, 토큰 만료 날짜, 토큰의 사용 권한 및 토큰이 액세스할 수 있는 리포지토리가 포함됩니다. 설치 액세스 토큰은 1시간 후에 만료됩니다.
엔드포인트에 대한 자세한 내용은 “GitHub Apps에 대한 REST API 엔드포인트”을 참조하세요.
Note
대부분의 경우
Authorization: Bearer
또는Authorization: token
을 사용하여 전달할 수 있습니다. 그러나 JWT(JSON 웹 토큰)를 전달하는 경우Authorization: Bearer
를 사용해야 합니다.