keenauth test login ile test kullanıcılarında oturum açma
keenauth test login, bir development ortamında bir test kullanıcısının oturumunu açar ve belirteçleri yazdırır; böylece giriş sayfasında tıklamadan API'nizi çağırabilir veya arka ucunuzu test edebilirsiniz. Bir tarayıcının yaptığı gibi gerçek barındırılan girişten geçer ve sabit geliştirme kodu 424242'yi kullanır (bkz. Üretim dışı ortamlarda test kullanıcıları ve iletiler).
Komut bir API anahtarı veya keenauth login oturumu gerektirmez: oturumu açan, siz değil test kullanıcısıdır.
Başlamadan önce
- Bir test kullanıcısı. Adresin yerel kısmında
+testetiketi bulunmalıdır; örneğinada+test@example.comveyaada+test_1@example.com. Önce kullanıcıyı oluşturun, örneğinkeenauth users create --email ada+test@example.comile. Komut, başka bir adresi istek göndermeden reddeder ve 2 çıkış koduyla sonlanır. - Herkese açık bir uygulama.
--client-idile ortamın bir yerel veya tek sayfalık uygulamasının kimliğini verin. Uygulama, e-posta kodu ile oturum açmaya (parolasızemail_otp) izin vermelidir. - Bir yönlendirme URI'si. Komut varsayılan olarak
http://127.0.0.1:<rastgele port>/callbackadresini kullanır. Uygulama içinhttp://127.0.0.1/callbackadresini kaydedin: döngü geri (loopback) yönlendirme URI'si her portu kabul eder (RFC 8252). Bu adreste hiçbir şey dinlemez; yönlendirmeyi komut kendisi okur. Başka bir kayıtlı yönlendirme URI'si kullanmak için--redirect-uriverin. - Ortamın verenı (issuer).
--issuerile verin ya daKEENAUTH_ISSUERdeğişkenini ayarlayın; örneğinhttps://acme-dev.keenauth.app.
Kullanım
export KEENAUTH_ISSUER=https://acme-dev.keenauth.app
keenauth test login --user ada+test@example.com --client-id app_01j9z3k4m5n6p7q8r9s0t1v2w3
| Bayrak | Açıklama |
|---|---|
--user |
Test kullanıcısının e-posta adresi (zorunlu). |
--client-id |
Ortamın herkese açık bir uygulamasının kimliği (zorunlu). |
--issuer |
Ortamın verenı (issuer) URL'si. Varsayılan: KEENAUTH_ISSUER ortam değişkeni. |
--scope |
İstenen kapsamlar, boşlukla ayrılmış. Varsayılan: openid profile email. Yenileme belirteci almak için offline_access ekleyin. |
--resource |
Erişim belirtecinin ait olduğu API'nin kaynak belirleyicisi (RFC 8707). |
--redirect-uri |
Uygulama için kayıtlı bir yönlendirme URI'si. |
--output, -o |
json, yaml veya table. Bayrak verilmezse CLI, terminalde tablo, aksi halde JSON yazdırır. |
Çıktı; token_type, access_token, id_token (openid istenmişse), refresh_token (yalnızca offline_access istenmişse), expires_in ve scope alanlarını içerir. Belirteçleri parola gibi değerlendirin: süreleri dolana kadar test kullanıcısı adına işlem yaparlar. Komut belirteçleri yalnızca standart çıktıya yazar, başka hiçbir yere yazmaz ve kodu asla yazdırmaz.
ACCESS_TOKEN=$(keenauth test login --user ada+test@example.com --client-id app_01j9z3k4m5n6p7q8r9s0t1v2w3 -o json | jq -r .access_token)
curl -H "Authorization: Bearer $ACCESS_TOKEN" http://localhost:3000/api/orders
Komut ne yapar
- Ortamın keşif (discovery) belgesini okur ve PKCE (
S256),statevenonceile bir yetkilendirme isteği açar. - Barındırılan girişte adresi girer, bir e-posta kodu ister ve
424242gönderir. Ortam daha sonra ikinci faktör olarak bir e-posta kodu isterse, komut bu kodu ister ve424242'yi yeniden gönderir. - Yönlendirmeyi yönlendirme URI'sine kadar takip eder,
stateveissdeğerlerini denetler ve yetkilendirme kodunu belirteç uç noktasında değiş tokuş eder. - ID belirtecinin, isteğin
noncedeğeriyle uygulamanız için verenden (issuer) geldiğini denetler ve belirteçleri yazdırır.
Oturum açma başka bir şey gerektirirse komut bir hatayla durur; örneğin parola, geçiş anahtarı (passkey), kimlik doğrulama uygulaması, adresin alan adı için kurumsal tek oturum açma, onay sayfası veya kuruluş seçimi.
Ortamlar
Yalnızca development ortamları sabit kodu kabul eder. Komutu yalnızca bir geliştirme ortamında kullanın:
stagingortamında test adreslerine hiçbir şey gönderilmez, ancak sabit kod reddedilir (401 invalid_credentials).productionortamında+testadresi sıradan bir adrestir: e-posta kodu gerçekten bu adrese gönderilir ve sabit kod reddedilir.
Sunucu bir adımı reddettiğinde CLI, sorun yanıtını değiştirmeden yazdırır (error, code, status, detail, request_id); örneğin code: test_feature_not_in_production.
Çıkış kodları
| Kod | Anlamı |
|---|---|
0 |
Test kullanıcısının oturumu açıldı; belirteçler yazdırıldı. |
1 |
Oturum açma başarısız oldu: bir OAuth hatası, state, iss veya nonce uyuşmazlığı ya da komutun tamamlayamadığı bir adım. |
2 |
Kullanım hatası: adreste +test etiketi yok, zorunlu bir bayrak veya veren eksik ya da bir değer geçersiz. İstek gönderilmedi. |
3 |
Sunucu 401 veya 403 yanıtı verdi; örneğin invalid_credentials veya test_feature_not_in_production. |