API

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 yolAuthNe işe yarar
GET /api/auth/get-sessionSession cookieMevcut oturumu döndürür; sıfır-auth masaüstü modunda, ilk istekte bir oturum başlatır.
GET /api/auth/desktop-loginNone (desktop)Sıfır-auth yerel yönetici için bir oturum oluşturur ve dashboard'a yönlendirir.
GET /api/auth/cloud-callbackNone (desktop)Bir bulut auth kodunu yerel bir oturum çereziyle değiştirir.
POST /api/auth/desktop-auth-startInternal tokenSistem tarayıcısı açılmadan önce bir (nonce, state, PKCE verifier) demeti kaydeder.
GET /api/auth/desktop-auth-pollNone (desktop)Electron, bulut oturum açma çözülene kadar bunu nonce ile sorgular.
GET /api/auth/desktop-claimNone (desktop)Tek kullanımlık bir talep kodunu bir oturum çereziyle değiştirir, ardından yönlendirir.
GET|POST /api/auth/*Better AuthBetter 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 BilgileriPOST /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/social ve GET /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, leave ve 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-server ve /.well-known/oauth-protected-resource adreslerinde 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-session

Etkin 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-start

Dahili 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. state ile masaüstü PKCE değişimini çalıştırır ve bekleyen nonce'ı çözer; state olmadan daha basit tarayıcı değişimini çalıştırır ve çerezi doğrudan ayarlar. code gereklidir.
  • GET /api/auth/desktop-auth-poll?nonce=<nonce> — Electron, durum resolved olana kadar sorgular, ardından talep URL'sini açar. nonce gereklidir.
  • 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çin Set-Cookie başlığı aracılığıyla ayarlanır) değiştirir ve dashboard'a yönlendirir. code gereklidir.

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.

On this page