Đăng nhập proxy URL trong Emacs 31.1: auth-source và giới hạn CONNECT
Cấu hình một proxy HTTP có xác thực cho thư viện URL của Emacs, hiểu việc tra cứu thông tin Basic và tính đến đường HTTPS CONNECT trong Emacs 31.1.
Địa chỉ của proxy cho Emacs biết nơi cần kết nối. Việc đăng nhập là một phần khác của cuộc trò chuyện. Với một yêu cầu HTTP thông thường, thư viện URL của Emacs có thể trả lời thử thách xác thực của proxy, lấy thông tin xác thực từ auth-source hoặc hỏi tương tác, và dùng lại thông tin xác thực được giữ trong phiên.
Các chi tiết dưới đây theo Emacs 31.1. Chúng liên quan đến các thao tác dùng thư viện URL; một trình tải xuống bên ngoài do gói Emacs khởi chạy có đường xác thực riêng.
Đặt tuyến đường, rồi để HTTP yêu cầu đăng nhập
Một điểm cuối proxy cố định có thể được chọn bằng tùy chọn đã được ghi tài liệu:
(setq url-proxy-services
'(("http" . "proxy.example:8080")
("https" . "proxy.example:8080")))
Thay phần giữ chỗ bằng điểm cuối được cung cấp. Các khóa mô tả lược đồ URL của đích. Thêm mục HTTPS chọn tuyến cho các đích HTTPS; bản thân nó không cung cấp thông tin xác thực.
Trong một yêu cầu HTTP thông thường, proxy có thể trả lời bằng 407 Proxy Authentication Required và một thử thách Proxy-Authenticate. Thư viện URL chọn một lược đồ xác thực được hỗ trợ và lấy thông tin xác thực cho điểm cuối proxy. Sau đó nó thử lại bằng Proxy-Authorization.
Với xác thực Basic, một yêu cầu tương tác có thể hỏi tên người dùng và mật khẩu khi không có thông tin xác thực phù hợp. Một yêu cầu được đánh dấu là không tương tác không thể dựa vào những lời nhắc đó. Việc đăng nhập proxy cũng tách biệt với việc đăng nhập của trang web đích: thử thách 401 của một trang web đi theo đường khác.
Đặt thông tin xác thực lâu dài trong auth-source
Nếu auth-source đã đọc một tệp thông tin xác thực được mã hóa như ~/.authinfo.gpg, một mục Basic cho ví dụ này có dạng sau:
machine proxy.example port http login YOUR_LOGIN password YOUR_PASSWORD
Dùng tài khoản và bí mật thật của bạn, và bảo đảm tệp nằm trong số auth-sources đã cấu hình. Dòng này minh họa các trường khớp nhau; đó không phải chỉ dẫn đặt mật khẩu vào tệp khởi tạo Lisp của bạn.
Hai chi tiết quan trọng trong cách triển khai Basic của Emacs 31.1. Nó tra tên máy chủ của proxy mà không có cổng TCP dạng số, và nó truyền lược đồ của URL proxy làm giá trị cổng cho auth-source. Với proxy HTTP này, giá trị đó là http, dù kết nối TCP dùng cổng 8080.
Việc tra cứu này không bao gồm realm của thử thách hay cổng proxy dạng số. Đừng trông đợi nó chọn mật khẩu Basic khác nhau cho nhiều realm hoặc cổng proxy trên cùng một tên máy chủ. Digest dùng cách tra máy chủ khác, nên ví dụ trên dành riêng cho Basic.
Thư viện URL cũng giữ bộ nhớ đệm xác thực riêng. Các mục Basic của nó phân biệt các điểm cuối proxy và dùng khớp realm hoặc thư mục trong một điểm cuối; bộ nhớ đệm đó tách biệt với việc tra cứu auth-source. Gõ mật khẩu tại lời nhắc có thể làm đầy bộ nhớ đệm của phiên mà không lưu mục mới trong tệp thông tin xác thực lâu dài.
HTTPS có bước xác thực sớm hơn
Với một đích HTTPS qua proxy HTTP, Emacs gửi CONNECT trước. Do đó có thể cần xác thực trước khi nó tới kết nối được mã hóa với trang web.
Trong Emacs 31.1, trình tạo yêu cầu CONNECT kiểm tra xác thực đã có sẵn qua máy xác thực của nó, gồm cả thông tin Basic được lưu đệm. Đường Basic của nó không hỏi và không lấy mục auth-source mới tại thời điểm đó. Một phản hồi CONNECT khác 200 cũng không đi vào trình xử lý thử thách HTTP 407 thông thường đã mô tả ở trên.
Do đó, một mục auth-source có thể trả lời thử thách HTTP Basic thông thường không bảo đảm yêu cầu HTTPS đầu tiên của một phiên mới sẽ xác thực thành công. Một phiên có thông tin xác thực được lưu đệm phù hợp có trạng thái khởi đầu khác. Sửa đi sửa lại cùng một mục mật khẩu tự nó không thể xóa bỏ khác biệt này giữa hai đường.
Nếu một thao tác HTTPS dừng tại proxy, hãy xác định CONNECT có nhận 407 hay không và bạn có đang dùng hành vi của bản phát hành này hay không. Cũng hãy xác nhận lược đồ xác thực mà proxy cung cấp. Một mục thông tin xác thực Basic không phải bộ chuyển đổi phổ quát cho mọi hệ thống xác thực doanh nghiệp.
Giữ cấu hình lâu dài trong tùy chọn proxy công khai và trong phần phụ trợ thông tin xác thực bạn đã chọn. Kho Basic nội bộ của thư viện URL hữu ích để hiểu hành vi này, nhưng việc tự tay điền cấu trúc dữ liệu riêng tư đó sẽ gắn cấu hình với chi tiết triển khai.