이는 액세스가 제한된 GitHub API 토큰을 생성하고 사용할 수 있는 상태 비저장 GitHub API 프록시입니다.
기본적으로 GitHub API 토큰에 대한 ID 및 액세스 관리입니다.
GitHub의 API 토큰은 토큰이 수행할 수 있는 작업에 대한 세부적인 제어를 허용하지 않습니다(GitHub 문제님께). 예를 들어, 토큰이 문제에 레이블을 적용할 수 있도록 하려면 기본적으로 저장소에 대한 모든 권한을 갖는 토큰을 만들어야 합니다.
이는 규모면에서 문제가 됩니다. GitHub API와 상호 작용하는 작업, 프로세스 및/또는 봇이 많으면 토큰이 손상될 가능성이 높아지고 광범위한 권한이 있는 토큰은 매우 높은 결과를 초래할 수 있습니다.
이 프록시를 사용하면 세분화된 권한( 매직 토큰 )으로 API 토큰을 생성한 다음 프록시를 통해 해당 매직 토큰을 사용하여 GitHub API와 통신할 수 있습니다. 프록시는 매직 토큰이 요청된 작업을 수행할 수 있는지 확인한 다음 실제 GitHub API 토큰을 사용하여 GitHub API에 요청을 전달합니다.
이 프록시는 백업 스토리지가 필요하지 않으며 모든 상태를 매직 토큰 자체에 저장합니다.
프록시는 비대칭 암호화(공개 및 개인 키 쌍)와 JWT를 사용하여 해당 상태를 매직 토큰으로 인코딩합니다.
각 매직 토큰은 다음 클레임과 함께 프록시의 개인 키로 서명된 간단한 JWT입니다.
{
"iat": 1541616032,
"exp": 1699296032,
"github_token": "[long encrypted key]",
"scopes": [
"GET /user",
"GET /repos/theacodes/nox/issues"
]
}
github_token
클레임은 원시 GitHub API 토큰의 암호화된 버전입니다. 프록시의 공개 키를 사용하여 암호화되므로 프록시 자체만 개인 키를 사용하여 암호를 해독할 수 있습니다.
범위 클레임은 매직 토큰이 액세스할 수 있는 항목을 결정합니다. 이 프록시에는 아래에 설명된 기본적이고 기초적인 범위 구현이 있지만 원하는 범위 지정 전략을 구현할 수 있습니다.
JWT는 개인 키를 사용하여 프록시 자체에서 생성되고 서명됩니다. 이는 JWT를 무효화하지 않고는 콘텐츠를 변조할 수 없음을 의미합니다.
기본적으로 이 프록시에는 다음 형식을 사용하는 간단한 범위 전략이 있습니다.
METHOD /url/pattern
여기서 METHOD
GET
, POST
, PUT
등이 될 수 있고 /url/pattern
URL을 확인하는 데 사용되는 정규 표현식이 될 수 있습니다.
예를 들어 someorg
에 있는 저장소의 문제에 액세스할 수 있는 토큰을 만들려면 다음을 수행할 수 있습니다.
GET /repos/someorg/.+?/issues
TODO
이것은 실험적이든 아니든 공식 Google 제품이 아닙니다. 이것은 보안을 위한 마법의 총알이 아닙니다. 귀하는 이 프로젝트를 사용할 때 모든 위험을 감수합니다.