Este es un proxy de API de GitHub sin estado que permite la creación y el uso de tokens de API de GitHub de acceso limitado .
Básicamente, se trata de gestión de identidad y acceso para tokens API de GitHub.
Los tokens API de GitHub no permiten un control detallado sobre qué acciones puede realizar un token (consulte este problema de Dear GitHub). Por ejemplo, básicamente debe crear un token que tenga control total sobre un repositorio para permitir que un token simplemente aplique etiquetas a los problemas.
Esto es problemático a escala. Cuando tienes muchos trabajos, procesos y/o bots interactuando con la API de GitHub, aumentas la probabilidad de que un token pueda verse comprometido y los tokens con permisos amplios tienen consecuencias muy altas.
Este proxy le permite crear tokens API con permisos específicos (un token mágico ) y luego hablar con la API de GitHub usando esos tokens mágicos a través de un proxy. El proxy valida el token mágico, permite realizar la acción solicitada y luego reenvía la solicitud a la API de GitHub utilizando el token API de GitHub real.
Este proxy no requiere almacenamiento de respaldo y almacena todo su estado en el token mágico.
El proxy utiliza criptografía asimétrica (un par de claves públicas y privadas) y JWT para codificar su estado en el token mágico.
Cada token mágico es un JWT simple firmado por la clave privada del proxy con estas afirmaciones:
{
"iat": 1541616032,
"exp": 1699296032,
"github_token": "[long encrypted key]",
"scopes": [
"GET /user",
"GET /repos/theacodes/nox/issues"
]
}
El reclamo github_token
es una versión cifrada del token API de GitHub sin formato. Se cifra utilizando la clave pública del proxy, de modo que sólo el propio proxy puede descifrarlo (utilizando su clave privada ).
El reclamo de alcance determina a qué tiene acceso el token mágico. Este proxy tiene una implementación de alcance básica y rudimentaria que se describe a continuación, pero puede implementar cualquier estrategia de alcance que desee.
El JWT lo genera y firma el propio proxy utilizando su clave privada . Esto significa que el contenido no se puede alterar sin invalidar el JWT.
De forma predeterminada, este proxy tiene una estrategia de alcance simple que utiliza el formato:
METHOD /url/pattern
Donde METHOD
puede ser GET
, POST
, PUT
, etc. y /url/pattern
puede ser cualquier expresión regular que se use para verificar la URL.
Por ejemplo, para crear un token que tenga acceso a los problemas de cualquier repositorio en someorg
, podrías hacer:
GET /repos/someorg/.+?/issues
HACER
Este no es un producto oficial de Google, ni experimental ni de otro tipo. Esta no es una panacea para la seguridad. Usted asume todos los riesgos al utilizar este proyecto.