Điểm:2

Proxy ngược cho Camera IP

lá cờ it

Tôi đang sử dụng máy ảnh Amcrest yêu cầu xác thực cơ bản để hiển thị luồng của nó (tài liệu - trang 17). Máy ảnh được truy cập thông qua http://admin:password@IP_CAMERA/cgi-bin/mjpg/video.cgi .

Khi tôi cố gắng đánh :56700, tôi được nhắc xác thực mặc dù nó đã được mã hóa cứng (bên dưới). Ngay cả khi tôi nhập đúng thông tin đăng nhập, nó vẫn không thành công. Tôi đang làm gì sai?

    người phục vụ {
        nghe 56700;
        địa điểm / {
            proxy_set_header Máy chủ lưu trữ $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://IP_CAMERA/cgi-bin/mjpg/video.cgi;
            proxy_set_header Ủy quyền "xxx cơ bản";
        }
    }

Tôi cũng đã thử thêm ủy quyền proxy_pass_header; như mô tả đây.

CrazyTux avatar
lá cờ in
Tôi nghĩ rằng bạn đã trộn lẫn cú pháp `rtsp` với cú pháp `http`, hãy thử `http:///cgi-bin/realmonitor.cgi?action=getStream&channel=&loại con=` đối với `http` rồi xác thực bằng tên người dùng và mật khẩu HOẶC sử dụng `rtsp` với `VLC` với cú pháp sau `rtsp://:@:/cam/realmonitor?channel=&loại con=`
Kermit avatar
lá cờ it
@CrazyTux Tôi có thể truy cập URL ở trên trong trình duyệt của mình mà không gặp vấn đề gì
Điểm:2
lá cờ us

Như đã nói ở trên, nó có thể được giải quyết bằng

proxy_set_header Ủy quyền "DXNlcjpwYXNzd29yZA cơ bản ==";

ở đâu dXNlcjpwYXNzd29yZA== là kết quả của lệnh: echo -n "người dùng: mật khẩu" | cơ sở64

tôi đoán bạn đã thử rồi

dù sao đi nữa, tôi tin rằng vị trí chính xác sẽ giống như

địa điểm / {
    proxy_set_header Máy chủ lưu trữ $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://IP_CAMERA;
    proxy_set_header Ủy quyền "DXNlcjpwYXNzd29yZA cơ bản ==";
    ủy quyền proxy_set_header "Cơ bản $http_authorization"; # Đối với chế độ tương tác
}

không có /cgi-bin/mjpg/video.cgi bởi vì nó sẽ chuyển qua trình duyệt hoặc phía máy khách http

HOẶC Nếu nó không hiệu quả với bạn, nó có thể liên quan đến trường hợp này https://stackoverflow.com/questions/14839712/nginx-reverse-proxy-passthrough-basic-authenication

Nếu Máy ảnh có một số kiểm tra cảnh giới, bạn có thể biết Cảnh giới dự kiến ​​thông qua Công cụ dành cho nhà phát triển tại tab Tiêu đề - Phần tiêu đề phản hồi.

Nhưng bạn sẽ cần biên dịch nginx với tiêu đề-more-nginx-module

Bạn có thể làm điều đó với kịch bản này

cd /usr/src
NGINXFILE=$(wget -qO- http://nginx.org/en/download.html | tr ' ' '\n' | egrep -o 'nginx.+?tar.gz' | head -1)
wget http://nginx.org/download/${NGINXFILE}
tar zxvf ${NGINXFILE}
cd ${NGINXFILE%.*.*}

cp -r /etc/nginx /root/nginx_$(date +%F) #Sao lưu cấu hình nginx hiện tại

cd /usr/src
git clone https://github.com/openresty/headers-more-nginx-module.git

./configure --add-module=/usr/src/headers-more-nginx-module --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/ lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/ nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/ nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/ var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with -threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with -http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_s tub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt=' -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fExceptionions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' - -with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
chế tạo
thực hiện cài đặt

sau khi hoàn thành, bạn có thể thử cấu hình như vậy:

địa điểm / {
  proxy_http_version 1.1;
  bật proxy_pass_request_headers;
  proxy_set_header Máy chủ lưu trữ $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  more_set_input_headers 'Ủy quyền: Cơ bản dXNlcjpwYXNzd29yZA=='; 
  #more_set_input_headers 'Ủy quyền: $http_authorization'; # Đối với chế độ tương tác
  proxy_set_header Mã hóa chấp nhận "";

  proxy_pass http://IP_CAMERA;
  proxy_redirect mặc định;
  more_set_headers -s 401 'www-xác thực: Vương quốc cơ bản="Yêu cầu xác thực"';
}

ở đâu www-xác thực: Vương quốc cơ bản="Yêu cầu xác thực" dữ liệu thực tế của bạn về tiêu đề này

Tôi đã kiểm tra cả hai trường hợp, nó hoạt động với tôi, tôi đã thử nghiệm nó trên ứng dụng bình tùy chỉnh. Thật không may, tôi không có máy ảnh như vậy để gỡ lỗi cá nhân

Điểm:1
lá cờ cl

Chỉnh sửa bằng giải pháp dành riêng cho Amcrest

Tại một thời điểm nào đó (khoảng năm 2017?) Amcrest đã phát hành một bản cập nhật firmware đã xóa Xác thực cơ bản khỏi camera IP của họ, để lại Xác thực Digest là tùy chọn duy nhất.

Câu trả lời tràn ngăn xếp này có thể là lựa chọn tốt nhất của bạn để loại bỏ Xác thực thông báo như bạn muốn bằng FastCGI và nginx.

Dù vậy hoặc có lẽ bạn có thể tìm cách hạ cấp chương trình cơ sở trên máy ảnh của mình để hỗ trợ lại Xác thực cơ bản.


Câu trả lời trước

Bạn có đang mã hóa Base64 tên người dùng và mật khẩu bằng dấu hai chấm ở giữa không?

Xác thực cơ bản HTTP, bạn sẽ cần phải làm như sau:

proxy_set_header Ủy quyền "xxx cơ bản";

Thay thế cái xxx với Base64(<tên người dùng>:<mật khẩu>). Đó là, hãy tìm cho mình một bộ mã hóa Base-64, nhập tên người dùng, dấu hai chấm (:) ký tự và mật khẩu, đồng thời thay thế ký tự xxx với chuỗi kết quả.

Ví dụ: nếu tên người dùng là quản trị viên, và mật khẩu là thợ săn2, chúng ta có thể chạy đoạn mã sau tại dấu nhắc Bash:

printf %s 'admin:hunter2' | cơ sở64

và đặt chuỗi kết quả vào tiêu đề như thế này:

proxy_set_header Ủy quyền "YWRtaW46aHVudGVyMg cơ bản ==";

Kermit avatar
lá cờ it
Tên người dùng và mật khẩu đang được mã hóa Base64 bằng `:`, vâng.
Điểm:0
lá cờ ne

Bắn trong bóng tối

Đôi khi, tôi biết nếu quyền của tệp không được đặt chính xác, bạn có thể nhận được hộp đăng nhập, trong một số trường hợp, hộp này dành cho cấp quyền của tệp chứ không phải cấp kết nối nếu điều đó hợp lý. Có lẽ đó là những gì đang xảy ra là một số loại vấn đề về quyền đối với tệp ở cuối máy chủ web? Bạn có thể kết thúc bằng hai thông tin xác thực khác nhau, một kết nối/dịch vụ dựa trên một và sau đó là cấp tệp nếu kết nối/dịch vụ không có quyền đối với tệp.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.