Giriş işlemi oluşturma

POST /fapi/v1/transactions · ortamın giriş sunucusundan çağrılır

Bir uygulama için giriş işlemi başlatır. Barındırılan giriş sayfası, kullanıcı arayüzü bileşenleri ve başsız istemciler, bu uç noktayı ortamın giriş sunucusunda (bir keenauth.app alt alan adı veya doğrulanmış özel alan adı) çağırır. Yanıt, __Host-idp_ltx işlem çerezini ayarlar (Secure, HttpOnly, SameSite=Lax, 15 dakika geçerlidir); sonraki adımlar bu çerezi kullanır.

İstek

Üstbilgiler:

Üstbilgi Zorunlu Açıklama
Idp-Client evet SDK tanımlayıcısı, <package>/<version> (<runtime>/<version>).
Origin evet Tam olarak https://<giriş sunucusu> olmalıdır.

Gövde:

Alan Tür Zorunlu Açıklama
client_id string evet Uygulamanın istemci kimliği.
redirect_uri string (URI) evet Uygulamanın kayıtlı yönlendirme URI'lerinden biri.

Yanıt

İşlem nesnesiyle birlikte 201 Created:

{
  "schema_version": 1,
  "state": "identifier_pending",
  "next_steps": [{ "step": "identifier", "fields": ["identifier"] }],
  "csrf_token": "<token>",
  "expires_at": "2026-10-05T10:15:00Z"
}

Bu işlemin durumunu değiştiren her istekte csrf_token değerini Idp-Csrf-Token üstbilgisiyle geri gönderin.

Yetkilendirme isteği SSO gerektiren bir kuruluş belirtirse yanıt zaten federated_redirect olabilir ve redirect_url içerir (tek bağlantı: en üst düzey pencereyi oraya yönlendirin) ya da sso_connections içerebilir (birden fazla bağlantı: seçimi sso_start adımıyla gönderin).

DPoP ile bağlanan başsız işlemler

Kendi kaynağında çalışan birinci taraf bir SPA veya yerel uygulama, DPoP üstbilgisiyle başsız bir giriş başlatır (RFC 9449): istemcinin sakladığı bir anahtarla imzalanmış bir kanıt (tarayıcıda dışa aktarılamayan WebCrypto anahtarı, cihazda platform anahtar deposu), htm değeri POST ve htu değeri https://<giriş sunucusu>/fapi/v1/transactions. İşlem bu durumda çereze değil bu anahtara bağlanır: çerez ayarlanmaz ve nesnede csrf_token bulunmaz. İşlemin sonraki her isteği aynı anahtardan yeni bir kanıt gönderir.

Yetkilendirme uç noktasının kurallarıyla kontrol edilen ek gövde alanları:

Alan Tür Zorunlu Açıklama
code_challenge string evet PKCE S256 challenge değeri (RFC 7636).
code_challenge_method string evet S256.
scope string hayır Boşlukla ayrılmış kapsamlar, örneğin openid profile email offline_access.
state string hayır Yetkilendirme koduyla birlikte döner.
nonce string hayır ID token nonce değeri.
organization string hayır Kuruluş kimliği veya adı.
ui_locales string hayır Tercih edilen diller.
resource string (URI) hayır Kaynak belirteci (RFC 8707).

Origin değeri giriş sunucusu veya uygulamanın izin verilen web kaynaklarından biri olabilir; yerel uygulama hiçbir değer göndermez. Bu tür işlemi yalnızca birinci taraf uygulamalar başlatabilir. Yetkilendirme uç noktasının reddettiği bir alan 422 validation_failed döndürür ve errors[].code içinde OAuth hata kodunu verir. Sunucu 401 use_dpop_nonce yanıtı verirse DPoP-Nonce yanıt üstbilgisinin değerini kullanarak yeni bir kanıt imzalayın ve isteği yeniden deneyin. Bu alanları DPoP üstbilgisi olmadan gönderirseniz 422 validation_failed (dpop_required) döner.

Kuruluşu değiştirme

Oturum açmış kullanıcı için ön API erişim belirteci tutan bir uygulama (bkz. Ön API erişim belirteci), kullanıcıyı ekran göstermeden başka bir kuruluşa geçirebilir. Belirteci Authorization: DPoP <token> olarak, belirtecin anahtarına ait bir kanıtla (ath ile birlikte) gönderin. Gövdede ise flow alanına organization_switch, yukarıdaki DPoP ile bağlanan başsız alanları (belirtecin uygulamasının client_id değeri, redirect_uri, code_challenge, state, nonce, scope) ve organization alanına GET /fapi/v1/me/organizations uç noktasından alınan bir kuruluşun org_… kimliğini yazın.

İstek, oturumu yeniden kullanan bir girişte olduğu gibi, belirtecin oturumuyla hemen karara bağlanır: kuruluşun ilkesi (MFA, boşta kalma sınırı, SSO, IP listesi), onay ve bekleyen yasal belgeler kontrol edilir. Yanıt, authorization_response içeren completed durumunda bir işlemle 201 olur; code değerini code_verifier değeriniz ve aynı anahtarın kanıtıyla belirteç uç noktasında değiştirin. Yeni belirteçler kuruluşu org_id alanında taşır. Açık kalan bir işlem olmaz ve çerez ayarlanmaz.

{
  "schema_version": 1,
  "state": "completed",
  "next_steps": [],
  "authorization_response": { "code": "<code>", "state": "<state>", "iss": "https://example.keenauth.app" },
  "expires_at": "2026-10-05T10:15:00Z"
}
Durum Kod Ne zaman
401 unauthenticated Belirteç geçersiz, süresi dolmuş, iptal edilmiş veya bir anahtara bağlı değil; uygulaması etkin bir birinci taraf uygulama değil; ya da oturumu sona ermiş.
422 validation_failed flow değeri organization_switch değil, client_id belirtecin uygulaması değil, organization bir org_… kimliği değil ya da kullanıcı bu uygulamada o kuruluşa geçemiyor (not_eligible).
403 authorization_failed Kuruluş, geçişin gösteremeyeceği bir ekran gerektiriyor; error alanı OAuth hatasıdır (login_required, interaction_required, consent_required). organization ayarlı yeni bir giriş başlatın.

Belirteç olmadan flow değeri organization_switch olursa 422 validation_failed (access_token_required) döner.

Hatalar

Durum Kod Ne zaman
400 malformed_request Idp-Client eksik ya da gövde geçerli bir JSON değil.
403 origin_not_allowed Origin giriş sunucusu değil.
403 headless_not_allowed Üçüncü taraf bir uygulama başsız bir akış başlatmaya çalıştı.
404 not_found Sunucu hiçbir ortamın giriş sunucusu değil.
422 validation_failed client_id bu ortamın bir uygulaması değil, redirect_uri bu uygulama için kayıtlı değil ya da bir alan geçersiz.
401 invalid_dpop_proof DPoP kanıtı eksik, geçersiz ya da yeniden kullanılmış ya da sunucu DPoP ile bağlanan işlemleri sunmuyor.
401 use_dpop_nonce DPoP-Nonce yanıt üstbilgisinin değerini kullanarak yeni bir kanıt imzalayın.
503 temporarily_unavailable Bir bağımlılık kullanılamıyor; daha sonra tekrar deneyin.

Örnek

curl -X POST https://example.keenauth.app/fapi/v1/transactions \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/json" \
  -c cookies.txt \
  -d '{"client_id":"<client_id>","redirect_uri":"https://app.example.com/callback"}'

Kişisel veriler

Bu uç nokta kişisel veri içerir: son kullanıcı profili. KeenAuth API'lerinde kişisel veriler bölümünde neyin saklandığı, ne kadar süreyle tutulduğu ve nasıl silindiği açıklanır. Hiçbir alanda özel nitelikli kişisel verileri (sağlık, biyometrik veriler, din, siyasi görüşler, cinsel yönelim) göndermeyin.