Este é um proxy API GitHub sem estado que permite a criação e uso de tokens API GitHub com acesso limitado .
Basicamente, é gerenciamento de identidade e acesso para tokens de API do GitHub.
Os tokens de API do GitHub não permitem controle detalhado sobre quais ações um token pode executar (consulte este problema do Caro GitHub). Por exemplo, você basicamente precisa criar um token que tenha controle total sobre um repositório para permitir que um token aplique apenas rótulos aos problemas.
Isso é problemático em escala. Quando você tem muitos trabalhos, processos e/ou bots interagindo com a API do GitHub, você aumenta a probabilidade de um token ser comprometido e tokens com permissões amplas têm consequências muito altas.
Este proxy permite que você crie tokens de API com permissões refinadas (um token mágico ) e, em seguida, converse com a API do GitHub usando esses tokens mágicos por meio de um proxy. O proxy valida o token mágico, permite executar a ação solicitada e, em seguida, encaminha a solicitação para a API do GitHub usando o token real da API do GitHub.
Este proxy não requer armazenamento de apoio e armazena todo o seu estado no próprio token mágico.
O proxy usa criptografia assimétrica (um par de chaves pública e privada) e JWTs para codificar seu estado no token mágico.
Cada token mágico é um JWT simples assinado pela chave privada do proxy com estas declarações:
{
"iat": 1541616032,
"exp": 1699296032,
"github_token": "[long encrypted key]",
"scopes": [
"GET /user",
"GET /repos/theacodes/nox/issues"
]
}
A declaração github_token
é uma versão criptografada do token bruto da API GitHub. Ele é criptografado usando a chave pública do proxy, para que somente o próprio proxy possa descriptografá-lo (usando sua chave privada ).
A reivindicação de escopos determina a que o token mágico tem acesso. Este proxy tem uma implementação de escopo básica e rudimentar descrita abaixo, mas você pode implementar qualquer estratégia de escopo que desejar.
O JWT é gerado e assinado pelo próprio proxy utilizando sua chave privada . Isso significa que o conteúdo não pode ser adulterado sem invalidar o JWT.
Por padrão, esse proxy possui uma estratégia de escopo simples usando o formato:
METHOD /url/pattern
Onde METHOD
pode ser GET
, POST
, PUT
, etc. e /url/pattern
pode ser qualquer expressão regular usada para verificar o URL.
Por exemplo, para criar um token que tenha acesso a qualquer problema do repositório em someorg
, você poderia fazer:
GET /repos/someorg/.+?/issues
PENDÊNCIA
Este não é um produto oficial do Google, experimental ou não. Esta não é uma solução mágica para segurança. Você assume todos os riscos ao usar este projeto.