· kaynak Hacker News – Front Page (hnrss.org)
go-dev-auth, Go için sıfır bağımlılıklı, better-auth tarzı bir kimlik doğrulama yığını sunuyor
Hacker News'te öne çıkan bir Go kimlik doğrulama kütüphanesi; yalnızca standart kütüphaneyi kullanarak parola girişi, OAuth, passkey, 2FA ve organizasyonları kapsıyor, CI'da ise storage adapter'ları gerçek veritabanlarıyla test ediliyor.
Tek bir standart kütüphane paketinde tam bir kimlik yığını
Go için yeni bir açık kaynak kimlik doğrulama kütüphanesi olan go-dev-auth, 11 Ekim 2026'da Hacker News'in ana sayfasına alışılmadık derecede kapsamlı bir vaatle geldi: parola girişleri, sosyal giriş, oturumlar, iki adımlı doğrulama, passkey'ler, organizasyonlar, SSO, yönetici araçları, API anahtarları ve JWT'lerden oluşan eksiksiz bir kimlik yığını — tamamen Go'nun standart kütüphanesiyle, üçüncü taraf bağımlılık olmadan uygulanmış.
Projenin README'sine göre tasarım, bilinçli olarak popüler TypeScript kimlik doğrulama çerçevesi better-auth model alınarak yapılmış; o projenin kapsamı da plugin mimarisi de aynen taşınmış. Kurulum, bir constructor'a geçirilen tek bir configuration struct'ından ibaret; ortaya çıkan handler sıradan bir net/http Handler olduğu için chi, echo, gorilla/mux veya gin üzerinde değiştirilmeden çalışıyor. Constructor, güvensiz bulduğu konfigürasyonlarda başlamayı reddediyor: eksik veya kısa bir secret, göreli bir base URL, secure cookie olmadan SameSite=none ya da güvenilir proxy listesi belirtilmeden proxy header güveni.
Paketin içindekiler
Çekirdek, scrypt kullanan e-posta ve parola doğrulamasını kapsıyor; hash formatı, ikisi arasında geçişi kolaylaştırmak için better-auth ile uyumlu kalıyor. Sosyal giriş, PKCE ile OAuth 2.0 ve OIDC üzerinden yürüyor; Google, GitHub, Discord, Facebook, Microsoft, Apple, GitLab, LinkedIn, Spotify, Twitch ve X için yerleşik tanımların yanı sıra diğer tüm sağlayıcılar için bildirimsel bir spec sunuluyor. Oturumlar kayan süreli sona ermeyle veritabanında tutuluyor, imzalı cookie'lerle taşınıyor ve adanmış endpoint'ler üzerinden listelenip iptal edilebiliyor; e-posta doğrulama, parola sıfırlama, hesap bağlama, CSRF origin kontrolleri ve IP tabanlı rate limiting çekirdeği tamamlıyor.
Plugin'ler iki adımlı doğrulamayı (TOTP, e-posta tek kullanımlık kodları, yedek kodlar), sıfır bağımlılık iddiasını ayakta tutan ağaç içi CBOR/COSE ayrıştırması dahil WebAuthn passkey'leri, magic link'leri, roller, davetler ve ekiplerle organizasyonları, alan adı eşleşmeli kendi OIDC'nizi getirin (bring-your-own-OIDC) SSO'sunu, yasaklar ve kullanıcı taklidi içeren bir yönetici plugin'ini, oturum gibi davranan hash'lenmiş ve kapsamlı API anahtarlarını, JWKS endpoint'i ile EdDSA imzalı JWT'leri ve tarayıcı dışı istemciler için bearer-token doğrulamasını ekliyor.
Storage adapter'ları tek bir conformance suite'i paylaşıyor
Storage adapter olarak geliyor: bellek içi, PostgreSQL, MySQL ve SQLite için database/sql üzerinden SQL ve resmi sürücüye bağımlı olmak zorunda olan ayrı bir MongoDB modülü. Her adapter, kimlik doğrulama çekirdeğinin dayandığı davranışları sabitleyen paylaşılmış bir conformance suite'ine karşı yazılmış — unique kısıtı ihlalleri nasıl ortaya çıkıyor, NULL ile zero value ayrımı, kronolojik sıralama, clause folding, büyük/küçük harf duyarsız alt dizi eşleştirme ve compare-and-set güncelleme sayıları — ve üçüncü taraflar aynı suite'i kendi adapter'larına karşı çalıştırabiliyor.
README, backend başına doğrulamanın ne kadar ileri gittiği konusunda dürüst. SQLite tam conformance suite'ini ve CI'da gerçek bir veritabanına karşı eksiksiz bir HTTP kimlik doğrulama akışını alıyor. PostgreSQL aynı muameleyi görüyor ve projeye göre tüm özellik setini kullanan bir üretim otomasyon projesini halihazırda çalıştırıyor. MySQL, CI'da gerçek bir MySQL 8 sunucusuna karşı test ediliyor ama henüz üretim geçmişi yok. MongoDB beta olarak etiketlendi ve canlı bir sunucu yerine dahili bir wire-protocol stand-in'ine karşı test ediliyor. CI, REQUIRE_DSN=1 ayarlıyor; böylece eksik bir veritabanı testleri sessizce atlamak yerine başarısız kılıyor.
Mühendislik yaklaşımı ve 1.0'a giden yol
Her push, desteklenen en eski ve güncel Go sürümlerinde derlenip test ediliyor; race detector, lint, güvenilmeyen girdiye açık ayrıştırıcılar üzerinde bir fuzzing turu ve canlı veritabanı sunucularına karşı storage suite'i çalıştırılıyor. Proje henüz 1.0 öncesi: herkese açık API minor sürümler arasında değişebilir, bu nedenle tam bir sürümü sabitlemek öneriliyor. Bakımcılar v1.0 için üç eşik sıralıyor — çalıştırılabilir örnekler, yeni otomatikleştirilen MySQL ayağıyla gerçek dünya deneyimi ve üçüncü taraf bir güvenlik incelemesi — ve ayrı bir tehdit modeli (threat-model) belgesi yayınlıyorlar.
Proxy konfigürasyonu tuzağı
Rate limiting ve kaydedilen oturum IP'leri, her istemcinin gerçek adresinin çözülmesine bağlı. Varsayılan ayarlı bir load balancer arkasında her istek proxy'den geliyormuş gibi görünür ve tüm kullanıcılar tek bir rate bucket'a sıkışır; projenin on saniyede üç giriş denemesi olan katı varsayılanıyla bu fiilen filo geneli bir limite dönüşür. İletilen header'lara güvenmek, hangi eşlerin bunları ayarlayabileceğini kısıtlamadan yapıldığında ters yönde başarısız olur: istemciler kendi bucket'larını seçer ve limiter sınırlamayı bırakır. Kütüphane, X-Forwarded-For zincirini yalnızca güvenilir hop'ların ötesinde sağdan sola doğru ele alıyor, CF-Connecting-IP gibi sağlayıcıya özgü header'ları destekliyor ve proxy allowlist'i olmadan header güvenini etkinleştiren konfigürasyonları reddediyor. Doğrudan internete açık dağıtımların hiçbirine ihtiyacı yok.
Neden önemli
Kimlik doğrulama, çoğu ekibin yazdığı en güvenlik hassasiyeti yüksek boilerplate kodudur ve Go'daki seçenekler tarihsel olarak çerçeveye bağlı çözümler ile bağımlılık ağır kitler arasında bölünmüştür. Yalnızca standart kütüphaneyle yapılan bir uygulama tedarik zinciri yüzeyini küçültür ve denetimleri yapılabilir kılar; paylaşılan conformance suite'i, bir storage backend'ini değiştirmeyi ya da eklemeyi inanç eylemi değil, test edilmiş bir işlem haline getirir; ve backend başına dürüst doğrulama tablosu, daha fazla açık kaynak projenin benimsemesi gereken bir uygulamadır. Uyarılar gerçek — 1.0 öncesi API değişkenliği ve henüz bağımsız bir güvenlik incelemesinin olmaması — ama PostgreSQL üzerindeki üretim deneyimi ve titiz CI'ıyla bu, Go geliştiricilerinin izlemesi gereken bir sürüm.
- #go
- #authentication
- #open-source
- #security
- #libraries