
kit-oauth v2026.7.12
OAuth 2.0-Clientbibliothek für Kit-Anwendungen, die Autorisierungscode-, PKCE-, Client-Anmeldeinformationen- und Aktualisierungstoken-Flows unterstützt, mit integrierten Provider-Voreinstellungen für GitHub, Google, Microsoft, Discord, Slack und GitLab.
kit-oauth
OAuth 2.0-Clientbibliothek für Kit-Anwendungen
[TOC]
Dateien
| Datei | Beschreibung |
|---|---|
.editorconfig | Editor-Formatierungskonfiguration |
.gitignore | Git-Ignore-Regeln für Build-Artefakte und Abhängigkeiten |
.tool-versions | asdf-Tool-Versionen (Zig, Kit) |
LICENSE | MIT-Lizenzdatei |
README.md | Diese Datei |
examples/client-credentials.kit | Trockentest-Beispiel für Client Credentials |
examples/github.kit | Trockentest-Beispiel für GitHub-Autorisierungscode |
kit.toml | Paketmanifest mit Metadaten, Fähigkeiten und Aufgaben |
src/oauth.kit | OAuth 2.0-Client-Implementierung |
tests/oauth.test.kit | Funktionale Tests für OAuth-Helfer |
tests/types.test.kit | Tests für Typ- und Konstantenverhalten |
Abhängigkeiten
Keine Kit-Paketabhängigkeiten.
Dieses Paket verwendet die integrierten HTTP- und Time-Module von Kit. Das Paketmanifest fordert die net-Fähigkeit an, da die Helfer für Tokenaustausch und authentifizierte Anfragen HTTP-Aufrufe durchführen.
Installation
kit add gitlab.com/kit-lang/packages/kit-oauth.git
Verwendung
import Kit.Oauth as OAuth
main = fn =>
config = OAuth.github "client-id" "client-secret" "http://localhost:3000/callback" ["read:user", "user:email"]
state = OAuth.generate-state
auth-url = OAuth.authorize-url config state
println "Open this authorization URL:"
println auth-url
main
Autorisierungscode
Nachdem der Anbieter zurück zu Ihrer Callback-URL weitergeleitet hat, überprüfen Sie, ob der zurückgegebene state mit dem von Ihnen generierten State übereinstimmt, und tauschen Sie dann den Autorisierungscode gegen Tokens ein:
match OAuth.exchange-code http-auth config code
| Ok tokens ->
println "Token type: ${tokens.token-type}"
println "Expires in: ${Int.to-string tokens.expires-in} seconds"
| Err err ->
println "OAuth error: ${err}"
Autorisierungscode mit PKCE
Verwenden Sie PKCE für öffentliche Clients wie Desktop-Apps, mobile Apps und browserbasierte Abläufe:
verifier = "abcdefghijklmnopqrstuvwxyz0123456789-._~abc"
state = OAuth.generate-state
auth-url = OAuth.authorize-url-pkce config state verifier
match OAuth.exchange-code-pkce http-auth config code verifier
| Ok tokens -> println "Access token received"
| Err err -> println "OAuth error: ${err}"
Der aktuelle PKCE-Helfer verwendet die plain-Challenge-Methode. Er ist so strukturiert, dass er auf S256 umgestellt werden kann, sobald ein String-SHA256-Helfer verfügbar ist.
Client Credentials
Verwenden Sie Client Credentials für die Maschine-zu-Maschine-Authentifizierung:
config = OAuth.custom "client-id" "client-secret" "https://auth.example.com/oauth/authorize" "https://auth.example.com/oauth/token" "https://app.example.com/oauth/callback" ["api:read", "api:write"]
match OAuth.client-credentials http-auth config
| Ok tokens ->
println "Access token received"
| Err err ->
println "OAuth error: ${err}"
Refresh Tokens
match OAuth.refresh-token http-auth config refresh-token
| Ok tokens -> println "Refreshed access token"
| Err err -> println "Refresh failed: ${err}"
Authentifizierte Anfragen
match OAuth.get http-auth "https://api.example.com/user" tokens.access-token
| Ok response ->
println "Status: ${Int.to-string response.status}"
println response.body
| Error err ->
println "API error: ${err}"
json-body = "{\"name\":\"Kit\"}"
match OAuth.post http-auth "https://api.example.com/resources" json-body tokens.access-token
| Ok response -> println "Created: ${Int.to-string response.status}"
| Error err -> println "API error: ${err}"
Anbieter-Voreinstellungen
Die integrierten Anbieter-Helfer geben ein OAuthConfig mit den ausgefüllten Autorisierungs- und Token-Endpunkten des Anbieters zurück:
| Helfer | Anbieter |
|---|---|
OAuth.github | GitHub |
OAuth.google | |
OAuth.microsoft | Microsoft Entra ID / Azure AD |
OAuth.discord | Discord |
OAuth.slack | Slack |
OAuth.gitlab | GitLab |
OAuth.custom | Jeder OAuth 2.0-Anbieter |
Sicherheitshinweise
- Überprüfen Sie immer den
state-Wert des Callbacks, bevor Sie einen Autorisierungscode austauschen. - Verwenden Sie HTTPS-Weiterleitungs-URIs in der Produktion.
- Protokollieren Sie keine Zugriffstokens, Aktualisierungstokens, Autorisierungscodes oder Client-Geheimnisse.
- Speichern Sie Aktualisierungstokens in einem sicheren Speicher, der für Ihre Anwendung geeignet ist.
- Verwenden Sie Umgebungsvariablen oder einen Secret Manager für Client-Geheimnisse.
- Behandeln Sie die eingecheckten Beispiele als Trockentest-Beispiele. Sie sind so konzipiert, dass sie Parity-sicher sind und keine Live-OAuth-Anbieter kontaktieren.
Entwicklung
Beispiele ausführen
Beispiele mit dem Interpreter ausführen:
kit run examples/github.kit
kit run examples/client-credentials.kit
Ein Beispiel in eine native Binärdatei kompilieren:
kit build examples/github.kit && ./github
Tests ausführen
Testsuite ausführen:
kit test
Testsuite mit Abdeckung ausführen:
kit test --coverage
kit dev ausführen
Standard-Entwicklungsworkflow ausführen:
kit dev
Dies wird:
- Formatierung überprüfen
- Typen der Quelldateien in
src/prüfen - Typen der Beispiele in
examples/prüfen - Tests in
tests/mit Abdeckung ausführen
Parity-Ausführung
Parity-Checks zwischen Interpreter und Compiler für die Beispiele ausführen:
kit parity --failures-only
Die Beispiele verwenden deterministische Ausgaben und vermeiden Live-Netzwerkaufrufe, sodass Parity die Ausgaben von Interpreter und kompilierter ausführbarer Datei zuverlässig vergleichen kann.
Dokumentation generieren
API-Dokumentation aus Doc-Kommentaren generieren:
kit doc
Hinweis: Kit-Quellen mit Doc-Kommentaren (##) generieren HTML-Dokumente in docs/*.html.
Build-Artefakte bereinigen
Generierte Dateien, Caches, Parity-Ergebnisse, Docs, Lock-Dateien und native Build-Artefakte entfernen:
kit task clean
Hinweis: Definiert in kit.toml.
Lokale Installation
Um dieses Paket lokal für die Entwicklung zu installieren:
kit install
Dies installiert das Paket nach ~/.kit/packages/@kit/oauth/ und macht es in anderen Projekten als Kit.Oauth importierbar.
Lizenz
Dieses Paket wird unter der MIT-Lizenz veröffentlicht – siehe LICENSE für Details.