Это прокси-сервер GitHub API без сохранения состояния , который позволяет создавать и использовать токены GitHub API с ограниченным доступом .
По сути, это управление идентификацией и доступом для токенов API GitHub.
Токены API GitHub не позволяют точно контролировать, какие действия может выполнять токен (см. эту проблему, уважаемый GitHub). Например, вам, по сути, нужно создать токен, который будет иметь полный контроль над репозиторием, чтобы токен мог просто применять метки к проблемам.
Это проблематично в масштабе. Когда у вас много заданий, процессов и/или ботов, взаимодействующих с API GitHub, вы увеличиваете вероятность того, что токен может быть скомпрометирован, а токены с широкими разрешениями имеют очень серьезные последствия.
Этот прокси-сервер позволяет вам создавать токены API с детальными разрешениями ( магический токен ), а затем взаимодействовать с API GitHub, используя эти волшебные токены через прокси. Прокси-сервер проверяет магический токен и позволяет выполнить запрошенное действие, а затем перенаправляет запрос в API GitHub, используя настоящий токен API GitHub.
Этот прокси не требует резервного хранилища и сохраняет все свое состояние в самом волшебном токене.
Прокси использует асимметричную криптографию (пару открытого и закрытого ключей) и JWT для кодирования своего состояния в магический токен.
Каждый магический токен представляет собой простой JWT, подписанный закрытым ключом прокси-сервера со следующими утверждениями:
{
"iat": 1541616032,
"exp": 1699296032,
"github_token": "[long encrypted key]",
"scopes": [
"GET /user",
"GET /repos/theacodes/nox/issues"
]
}
Утверждение github_token
— это зашифрованная версия необработанного токена API GitHub. Он зашифрован с использованием открытого ключа прокси-сервера, поэтому только сам прокси-сервер может его расшифровать (используя свой закрытый ключ).
Утверждение областей определяет, к чему имеет доступ магический токен. Этот прокси имеет базовую реализацию области действия, описанную ниже, но вы можете реализовать любую стратегию области действия, какую захотите.
JWT генерируется и подписывается самим прокси-сервером с использованием его закрытого ключа . Это означает, что содержимое нельзя изменить без аннулирования JWT.
По умолчанию этот прокси имеет простую стратегию области действия, использующую формат:
METHOD /url/pattern
Где METHOD
может быть GET
, POST
, PUT
и т. д., а /url/pattern
может быть любым регулярным выражением, используемым для проверки URL-адреса.
Например, чтобы создать токен, имеющий доступ к любым проблемам репозитория в someorg
, вы можете сделать:
GET /repos/someorg/.+?/issues
TODO
Это не официальный продукт Google, ни экспериментальный, ни какой-либо другой. Это не волшебное средство для безопасности. Вы принимаете на себя все риски при использовании данного проекта.