Ini adalah proksi GitHub API tanpa kewarganegaraan yang memungkinkan pembuatan dan penggunaan token GitHub API dengan akses terbatas .
Pada dasarnya, ini adalah manajemen identitas dan akses untuk token GitHub API.
Token API GitHub tidak mengizinkan kontrol menyeluruh atas tindakan mana yang dapat dilakukan token (lihat masalah Dear GitHub ini). Misalnya, pada dasarnya Anda harus membuat token yang memiliki kontrol penuh atas repositori agar token dapat menerapkan label pada masalah.
Hal ini merupakan masalah dalam skala besar. Ketika Anda memiliki banyak pekerjaan, proses, dan/atau bot yang berinteraksi dengan API GitHub, Anda meningkatkan kemungkinan bahwa sebuah token dapat disusupi dan token dengan izin luas memiliki konsekuensi yang sangat tinggi.
Proksi ini memungkinkan Anda membuat token API dengan izin terperinci ( token ajaib ) dan kemudian berkomunikasi dengan API GitHub menggunakan token ajaib tersebut melalui proxy. Proksi memvalidasi token ajaib yang memungkinkan untuk melakukan tindakan yang diminta dan kemudian meneruskan permintaan ke API GitHub menggunakan token API GitHub yang sebenarnya.
Proksi ini tidak memerlukan penyimpanan pendukung dan menyimpan semua statusnya dalam token ajaib itu sendiri.
Proksi menggunakan kriptografi asimetris (pasangan kunci publik dan pribadi) dan JWT untuk menyandikan statusnya ke dalam token ajaib.
Setiap token ajaib adalah JWT sederhana yang ditandatangani oleh kunci pribadi proxy dengan klaim berikut:
{
"iat": 1541616032,
"exp": 1699296032,
"github_token": "[long encrypted key]",
"scopes": [
"GET /user",
"GET /repos/theacodes/nox/issues"
]
}
Klaim github_token
adalah versi terenkripsi dari token API GitHub mentah. Itu dienkripsi menggunakan kunci publik proxy, sehingga hanya proxy itu sendiri yang dapat mendekripsinya (menggunakan kunci pribadinya ).
Klaim cakupan menentukan apa yang dapat diakses oleh token ajaib. Proksi ini memiliki implementasi cakupan dasar yang belum sempurna seperti yang dijelaskan di bawah ini, namun Anda dapat menerapkan strategi pelingkupan apa pun yang Anda inginkan.
JWT dibuat dan ditandatangani oleh proksi itu sendiri menggunakan kunci pribadinya . Artinya, konten tidak dapat diubah tanpa membuat JWT tidak valid.
Secara default, proxy ini memiliki strategi cakupan sederhana dengan menggunakan format:
METHOD /url/pattern
Dimana METHOD
dapat berupa GET
, POST
, PUT
, dll. dan /url/pattern
dapat berupa ekspresi reguler apa pun yang digunakan untuk memeriksa URL.
Misalnya, untuk membuat token yang memiliki akses ke masalah repositori apa pun di someorg
, Anda dapat melakukan:
GET /repos/someorg/.+?/issues
TODO
Ini bukan produk resmi Google, eksperimental atau lainnya. Ini bukanlah solusi ajaib untuk keamanan. Anda menanggung semua risiko saat menggunakan proyek ini.