Emacs 31.1'de URL vekil sunucu oturumu: auth-source ve CONNECT sınırları
Emacs'in URL kitaplığı için kimlik doğrulamalı bir HTTP vekil sunucusu yapılandırın, Basic kimlik bilgisi aramasını anlayın ve Emacs 31.1'deki HTTPS CONNECT yolunu hesaba katın.
Vekil sunucunun adresi Emacs'e nereye bağlanacağını söyler. Oturum açma konuşmanın başka bir parçasıdır. Sıradan bir HTTP isteği için Emacs'in URL kitaplığı vekil sunucunun kimlik doğrulama meydan okumasını yanıtlayabilir, auth-source'tan kimlik bilgisi alabilir veya etkileşimli olarak sorabilir ve oturumda tutulan kimlik bilgilerini yeniden kullanabilir.
Aşağıdaki ayrıntılar Emacs 31.1'i izler. URL kitaplığını kullanan işlemlerle ilgilidir; bir Emacs paketinin başlattığı harici indiricinin kendi kimlik doğrulama yolu vardır.
Rotayı belirleyin, sonra HTTP oturum açmayı istesin
Sabit bir vekil sunucu uç noktası belgelenmiş seçenekle seçilebilir:
(setq url-proxy-services
'(("http" . "proxy.example:8080")
("https" . "proxy.example:8080")))
Yer tutucuyu verilen uç noktayla değiştirin. Anahtarlar hedef URL şemalarını tanımlar. HTTPS girdisini eklemek HTTPS hedefleri için bir rota seçer; kendi başına kimlik bilgisi sağlamaz.
Sıradan bir HTTP isteği sırasında vekil sunucu 407 Proxy Authentication Required ve bir Proxy-Authenticate meydan okumasıyla yanıt verebilir. URL kitaplığı desteklenen bir kimlik doğrulama şeması seçer ve vekil sunucu uç noktası için kimlik bilgisi edinir. Ardından Proxy-Authorization ile yeniden dener.
Basic kimlik doğrulaması için etkileşimli bir istek, uygun kimlik bilgisi yoksa kullanıcı adı ve parola sorabilir. Etkileşimsiz olarak işaretlenmiş bir istek bu sorulara güvenemez. Vekil sunucu oturumu hedef web sitesinin oturumundan da ayrıdır: bir sitenin 401 meydan okuması farklı bir yol izler.
Kalıcı kimlik bilgilerini auth-source'a koyun
auth-source zaten ~/.authinfo.gpg gibi şifreli bir kimlik bilgisi dosyası okuyorsa, bu örnek için Basic girdisi şu biçimdedir:
machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD
Gerçek hesabınızı ve sırrınızı kullanın ve dosyanın yapılandırdığınız auth-sources arasında olduğundan emin olun. Satır eşleşen alanları gösterir; Lisp başlatma dosyanıza parola koyma talimatı değildir.
Emacs 31.1'in Basic uygulamasında iki ayrıntı önemlidir. Vekil sunucunun ana makine adını sayısal TCP bağlantı noktası olmadan arar ve vekil sunucu URL'sinin şemasını auth-source'un bağlantı noktası değeri olarak geçirir. Bu HTTP vekil sunucusu için, TCP bağlantısı 8080 bağlantı noktasını kullansa da o değer http.
Bu arama meydan okumanın realm'ini veya sayısal vekil bağlantı noktasını içermez. Aynı ana makine adında birkaç realm veya vekil bağlantı noktası için farklı Basic parolaları seçmesini beklemeyin. Digest farklı bir ana makine araması kullanır, bu nedenle yukarıdaki örnek özellikle Basic içindir.
URL kitaplığı ayrıca kendi kimlik doğrulama önbelleğini tutar. Basic girdileri vekil sunucu uç noktalarını ayırt eder ve bir uç nokta içinde realm veya dizin eşleşmesi kullanır; bu önbellek auth-source aramasından ayrıdır. İstemde parola yazmak, kalıcı kimlik bilgisi dosyanıza yeni bir girdi kaydetmeden oturum önbelleğini doldurabilir.
HTTPS'in daha erken bir kimlik doğrulama adımı vardır
HTTP vekil sunucusu üzerinden HTTPS hedefine Emacs önce CONNECT gönderir. Bu nedenle kimlik doğrulama, siteyle şifreli bağlantıya ulaşmadan önce gerekebilir.
Emacs 31.1'de CONNECT isteği oluşturucusu, kimlik doğrulama makinesi aracılığıyla zaten kullanılabilir olan kimlik doğrulamayı, önbelleğe alınmış Basic kimlik bilgileri dahil denetler. Basic yolu o noktada yeni bir auth-source girdisi istemez veya getirmez. 200 olmayan bir CONNECT yanıtı da yukarıda açıklanan olağan HTTP 407 meydan okuma işleyicisine girmez.
Sonuç olarak, normal bir HTTP Basic meydan okumasını yanıtlayabilen bir auth-source girdisi, yeni bir oturumun ilk HTTPS isteğinin başarıyla doğrulanacağını garanti etmez. Uygun önbelleklenmiş kimlik bilgilerine sahip bir oturum farklı bir başlangıç durumuna sahiptir. Aynı parola girdisini tekrar tekrar düzenlemek, iki yol arasındaki bu farkı kendi başına ortadan kaldıramaz.
Bir HTTPS işlemi vekil sunucuda durursa, CONNECT'in 407 alıp almadığını ve bu sürümün davranışını kullanıp kullanmadığınızı belirleyin. Vekil sunucunun sunduğu kimlik doğrulama şemasını da doğrulayın. Basic kimlik bilgisi girdisi her kurumsal kimlik doğrulama sistemi için evrensel bir bağdaştırıcı değildir.
Kalıcı yapılandırmayı genel vekil sunucu seçeneğinde ve seçtiğiniz kimlik bilgisi arka ucunda tutun. URL kitaplığının dahili Basic deposu bu davranışı anlamak için yararlıdır, ancak bu özel veri yapısını elle doldurmak kurulumu uygulama ayrıntılarına bağlardı.