Nasıl kullanılır
- Kullanıcı adını ve parolayı girin.
- Oluşturulan Authorization başlığını istemcinize kopyalayın veya isteği test etmek için curl komutunu kullanın.
- Mevcut bir başlığı okumak için onu "Mevcut bir başlığın kodunu çöz" bölümüne yapıştırın; kullanıcı adı ve parola görüntülenir.
HTTP Basic kimlik doğrulaması nasıl çalışır
Basic kimlik doğrulaması RFC 7617'de tanımlanmıştır. Korunan bir kaynak istendiğinde sunucu 401 Unauthorized durum koduyla ve bir WWW-Authenticate: Basic realm="..." başlığıyla yanıt verir. İstemci ardından kullanıcı adını ve parolayı iki nokta ile birleştirir, sonucu Base64 ile kodlar ve her istekle birlikte gönderir:
Authorization: Basic base64(username ":" password)
# RFC 7617'deki örnek: kullanıcı "Aladdin", parola "open sesame"
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Tarayıcılar bu alışverişi kendileri yönetir ve bir oturum açma penceresi gösterir; betikler ve API istemcileri ise genellikle sunucunun kimlik doğrulama talebini beklemeden başlığı ilk istekle birlikte gönderir. İki değeri birbirinden iki nokta ayırdığı için kullanıcı adı iki nokta içeremez; parola ise içerebilir. Sunucu, ASCII dışı kimlik bilgilerinin UTF-8 olarak beklendiğini bildirmek için kimlik doğrulama talebine charset="UTF-8" ekleyebilir.
Base64 şifreleme değildir
Başlık karmaşık görünür, ancak onu gören herkes bu sayfadaki çözücüyle veya herhangi bir Base64 kod çözücüyle parolayı saniyeler içinde elde edebilir. Basic kimlik doğrulaması yalnızca, başlığın aktarım sırasında TLS ile şifrelendiği HTTPS üzerinden kabul edilebilir. Ayrıca şunları unutmayın:
- kimlik bilgileri her istekle birlikte gönderilir, bu yüzden tek bir düz HTTP isteği bile onları açığa çıkarır;
- proxy'ler, yük dengeleyiciler ve hata ayıklama araçları, aksi belirtilmedikçe
Authorizationbaşlığını günlüğe kaydedebilir; - tarayıcılar girilen kimlik bilgilerini kapatılana kadar hatırlar ve oturumu kapatmanın standart bir yolu yoktur.
Herkese açık API'ler için iptal edilebilir API token'ları veya OAuth daha uygundur. Basic kimlik doğrulaması; dahili araçlar, hazırlık (staging) siteleri ve TLS üzerinden yapılan sunucudan sunucuya çağrılar için makul bir seçenek olmaya devam eder.
Başlığı koddan gönderme
# curl başlığı kendisi oluşturur
curl -u 'user:password' https://api.example.com/
// JavaScript fetch (btoa yalnızca Latin-1 karakterlerini işler)
fetch(url, { headers: { Authorization: 'Basic ' + btoa('user:password') } })
# Python requests
requests.get(url, auth=('user', 'password'))
Kimlik bilgilerini https://user:password@host/ örneğindeki gibi URL'ye gömmekten kaçının. RFC 3986 bu biçimi kullanımdan kaldırmıştır; bu tür adresler tarayıcı geçmişine ve sunucu günlüklerine düşer ve modern tarayıcılar bu kullanımı kısıtlar.
Sıkça sorulan sorular
Basic auth başlığının kodunu nasıl çözerim?
Başlığı "Mevcut bir başlığın kodunu çöz" bölümüne yapıştırdığınızda kullanıcı adı ve parola hemen görünür. Herhangi bir Base64 kod çözücü de aynı sonucu verir; başlığın yalnızca HTTPS üzerinden iletilmesi gerekmesinin nedeni de tam olarak budur.
Parola iki nokta içerebilir mi?
Evet. Sunucu, çözülen değeri ilk iki noktadan böler; bu nedenle ondan sonraki her şey paroladır. Ancak kullanıcı adı iki nokta içermemelidir.
HTTP Basic kimlik doğrulaması güvenli mi?
Güçlü ve benzersiz bir parolayla HTTPS üzerinden kullanıldığında kimlik bilgilerini aktarım sırasında korur, ancak bu bilgiler her istekle gönderilir ve bir token gibi süreleri dolmaz. Düz HTTP üzerinden asla kullanmayın.
Aksanlı veya Latin alfabesi dışındaki karakterleri içeren parolalarda oturum açma neden başarısız oluyor?
charset="UTF-8" bildirmesine olanak tanır; bu bildirim yoksa eski sunucular ISO-8859-1 varsayarak farklı baytları karşılaştırabilir.Parolam herhangi bir yere gönderiliyor mu?
Hayır. Başlık tarayıcınızdaki JavaScript tarafından oluşturulur ve hiçbir veri iletilmez. Yine de oluşturulan bir curl komutunu başkalarıyla paylaşırken test amaçlı kimlik bilgileri kullanın.