Auth API
Better Auth sarmalayıcısı ile masaüstü oturum başlatma ve bulut oturum açma devri, /api/auth altında monte edilmiştir.
Auth API, Alaf Server'ın kullanıcıları oturum açtırması ve oturumlarını sürdürme şeklidir. Buradaki hemen hemen her şey, tek bir catch-all aracılığıyla Better Auth tarafından sunulur — e-posta/şifre ile oturum açma ve kaydolma, OAuth, organizasyon/üye/davetiye endpoint'leri ve MCP OAuth yetkilendirme sunucusu. Küçük bir yalnızca masaüstü endpoint kümesi, sıfır-auth yerel bir oturumu başlatmak ve bulut oturum açmayı indirilebilir uygulamaya devretmek için bunun önünde yer alır.
Bu modül neredeyse tamamen dashboard (ve masaüstü modunda, Electron host) tarafından tüketilir — nadiren doğrudan çağırırsınız. Programatik API erişimi için bunun yerine kişisel bir erişim token'ı oluşturun (alaf server token create) ve bunu bir bearer header olarak kullanın. Tam model için API genel bakışı ve Auth & oturumlar bölümlerine bakın.
Temel yol ve auth
Tüm yollar, örneğin https://your-host/api/auth/get-session gibi, /api altında, örneğinizle ilişkilidir. Tarayıcı istemcileri (dashboard), bu endpoint'ler tarafından ayarlanan bir httpOnly oturum çerezi ile kimlik doğrulaması yapar; API istemcileri, bir bearer header olarak kişisel bir erişim token'ı (Authorization: Bearer <token>) gönderir. Her modda (self-hosted, cloud ve desktop) monte edilmiştir; aşağıdaki desktop-* ve *-callback başlatma rotaları yalnızca örnek desktop modunda (DEPLOY_MODE=desktop) çalıştığında etkinleştirilir.
Endpoint'ler
Bunlar, izin etiketli güvenli rotalar değil, düz Hono rotalarıdır. "Auth" sütunu, bir resource:action etiketi yerine her birinin nasıl korunduğunu gösterir.
| Metot ve yol | Auth | Ne işe yarar |
|---|---|---|
GET /api/auth/get-session | Session cookie | Mevcut oturumu döndürür; sıfır-auth masaüstü modunda, ilk istekte bir oturum başlatır. |
GET /api/auth/desktop-login | None (desktop) | Sıfır-auth yerel yönetici için bir oturum oluşturur ve dashboard'a yönlendirir. |
GET /api/auth/cloud-callback | None (desktop) | Bir bulut auth kodunu yerel bir oturum çereziyle değiştirir. |
POST /api/auth/desktop-auth-start | Internal token | Sistem tarayıcısı açılmadan önce bir (nonce, state, PKCE verifier) demeti kaydeder. |
GET /api/auth/desktop-auth-poll | None (desktop) | Electron, bulut oturum açma çözülene kadar bunu nonce ile sorgular. |
GET /api/auth/desktop-claim | None (desktop) | Tek kullanımlık bir talep kodunu bir oturum çereziyle değiştirir, ardından yönlendirir. |
GET|POST /api/auth/* | Better Auth | Better Auth'a devredilen catch-all (oturum açma/kaydolma, OAuth, organizasyon, MCP). |
POST /api/auth/* hız sınırlıdır
/api/auth altındaki her POST isteği, varsayılan API hız sınırından ayrı olarak, kimlik bilgisi doldurmayı engellemek için sıkı bir IP başına kovadan (10/dk) geçer. GET rotaları (oturum okumaları, OAuth geri aramaları) normal politikada kalır. Güvenilmeyen kaynaklardan gelen değiştirme istekleri de auth zinciri çalışmadan önce CSRF kaynak koruması tarafından reddedilir.
Better Auth catch-all
Son rota olan GET|POST /api/auth/*, ham isteği Better Auth'un işleyicisine iletir. Normal bir oturum açma akışının ihtiyaç duyduğu her şey burada bulunur — bu modülde ayrı bir şema yoktur çünkü Better Auth, istek ve yanıt şekillerine sahiptir. Hizmet verdiği endpoint'ler (tümü /api/auth altında) şunları içerir:
- Kimlik Bilgileri —
POST /sign-in/email,POST /sign-up/email,POST /sign-out,POST /forget-password,POST /reset-password,POST /verify-email. Şifreler 8–128 karakterdir; sıfırlama ve doğrulama e-postaları yalnızca SMTP yapılandırıldığında gönderilir. - OAuth — GitHub ve Google için
POST /sign-in/socialveGET /callback/:provider(her biri yalnızca istemci ID/secret'ı ayarlandığında etkinleştirilir). - Organizasyonlar —
/organization/*: oluşturma,set-active,list,invite-member,accept-invitation,update-member-role,remove-member,leaveve daha fazlası. Üye listeleme okumaları ayrıca kısıtlı/üye rollerinin yönetici düzeyindeki verileri okuyamaması için korunmuştur. - MCP OAuth 2.1 —
/mcp/authorize,/mcp/token,/mcp/register(dinamik istemci kaydı),/mcp/get-session, ayrıca/.well-known/oauth-authorization-serverve/.well-known/oauth-protected-resourceadreslerinde keşif (ayrıca origin root'ta yeniden sunulur). MCP API bölümüne bakın.
Roller ve izinler başka yerde bulunur
Better Auth'un organizasyon eklentisi yalnızca rol etiketini (owner, admin, member veya restricted) taşır. API'nin geri kalanı için gerçek yetkilendirme, kaynak izinlerine göre çözülür — İzinler bölümüne bakın.
Mevcut oturumu al
GET /api/auth/get-sessionEtkin oturumu ve kullanıcıyı JSON olarak döndürür veya kimlik doğrulaması yapılmadığında 401 döndürür. Sıfır-auth masaüstü modunda (self-hosted onboarding, şifresiz), bir eksiklik satır içi bir başlatmayı tetikler: Alaf Server yerel yönetici kullanıcısını sağlar, bir oturum oluşturur, yanıt üzerinde çerezi ayarlar ve onu döndürür — böylece dashboard'un ilk navigasyonu /login'e döngü yapmak yerine başarılı olur.
curl https://your-host/api/auth/get-session \
-H "Cookie: alaf server.session_token=<session>"Masaüstü oturum başlatma
GET /api/auth/desktop-login, sıfır-auth yerel yönetici için bir oturum oluşturur ve dashboard'a yönlendirir. Self-hosted onboarding tamamlandıktan hemen sonra bir kez çağrılır; eğer örnek sıfır-auth modunda değilse, bunun yerine /login'e yönlendirir. İstek gövdesi yok.
Bulut oturum açma devri (masaüstü)
İndirilebilir uygulama "Cloud ile" oturum açtığında, Electron host bir PKCE akışı çalıştırır ve API buna aracılık eder. Sıra şöyledir: nonce'ı kaydet, sistem tarayıcısını aç, sorgula, ardından talep et.
POST /api/auth/desktop-auth-startDahili paylaşılan-token middleware tarafından korunur — yalnızca Electron host bir nonce kaydedebilir. Satır içi doğrulanır (auth için TypeBox şema modülü yoktur); her üç alan da gerekli dizelerdir:
Prop
Type
Kalan adımlar gövde değil, sorgu parametreleri alır:
GET /api/auth/cloud-callback?code=<code>&state=<state>— bulut sağlayıcısı buraya yönlendirir.stateile masaüstü PKCE değişimini çalıştırır ve bekleyen nonce'ı çözer;stateolmadan daha basit tarayıcı değişimini çalıştırır ve çerezi doğrudan ayarlar.codegereklidir.GET /api/auth/desktop-auth-poll?nonce=<nonce>— Electron, durumresolvedolana kadar sorgular, ardından talep URL'sini açar.noncegereklidir.GET /api/auth/desktop-claim?code=<code>— tek kullanımlık talep kodunu bir oturum çereziyle (sürümler arası Electron güvenilirliği içinSet-Cookiebaşlığı aracılığıyla ayarlanır) değiştirir ve dashboard'a yönlendirir.codegereklidir.
Görebileceğiniz hatalar
401 — Yetkisiz
GET /api/auth/get-session, geçerli bir oturum olmadığında ve örnek sıfır-auth modunda olmadığında bunu döndürür. Dashboard üzerinden oturum açın veya geçerli bir oturum çerezi / bearer token gönderin.
400 — nonce, state veya code_verifier eksik
POST /api/auth/desktop-auth-start, üç alandan herhangi biri eksik olan bir gövdeyi reddeder. Sorgulama ve talep rotaları, gerekli sorgu parametreleri eksik olduğunda benzer şekilde 400 döndürür ve talep, tek kullanımlık kod kullanıldığında veya süresi dolduğunda 400 Claim expired döndürür.
429 — çok fazla istek
POST /api/auth/*, IP başına 10/dk'lık bir kovayı paylaşır. Bunu zorlayan oturum açma/kaydolma döngüleri, varsayılan API limiti tetiklenmeden önce kısıtlanacaktır.