Estou tentando configurar um servidor web nginx em um Raspberry Pi com acesso do Android. O Android v.14 insiste na autenticação básica, mas não consigo fazê-lo funcionar.
Minha rede doméstica inclui um calendário CalDAV hospedado no Baïkal com nginx em um Raspberry Pi 3B executando PiOS. Tudo é a versão mais recente. Ele deve me permitir compartilhar um calendário entre meu desktop (Linux e Thunderbird) e um telefone Android executando OneCalendar . Os dispositivos devem sincronizar automaticamente quando ambos estiverem conectados na minha rede doméstica. Ele costumava funcionar com http simples, até uma atualização do Android.
Todos os três dispositivos têm endereços IP no intervalo 192.168.1.*. Não estou muito preocupado com a segurança, já que tudo está atrás do meu firewall, então tudo abaixo é o mais frouxo possível, pelo menos até funcionar.
Configurei a autenticação básica, de acordo com a documentação do nginx: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
sudo apt install apache2-utils
sudo htpasswd -c /etc/ssl/.htpasswd myuser
sudo vi /etc/nginx/sites-enabled/mysite
Tudo pareceu funcionar. Aqui estão as novas linhas na seção location do meu arquivo de site:
auth_basic "Baikal";
auth_basic_user_file /etc/ssl/.htpasswd;
satisfy any;
allow 192.168.1.0/24;
deny all;
Não consigo encontrar nenhum sinal de configuração SSL nos arquivos nginx.
O estranho é que o Thunderbird 'simplesmente funciona', mas o Android falha, dizendo “Autenticação Digest não suportada, tente habilitar a autenticação Básica no seu servidor.” O nginx relata um erro "401 Unauthorized" para o telefone. Essas linhas aparecem no log de erros do nginx:
http fastcgi header: "Status: 401 Unauthorized"
http fastcgi header: "WWW-Authenticate: Digest realm="BaikalDAV",qop="auth",nonce="66ddb6608ccb4",opaque="d66d5f0524036afcb61420e358f990ce""
WWW-Authenticate: Digest realm="BaikalDAV",qop="auth",nonce="66ddb6608ccb4",opaque="d66d5f0524036afcb61420e358f990ce"
Verifiquei várias vezes se os dois clientes usam a mesma URL ( http://192.168.1.11:9999/cal.php/calendars/myuser/default ), nome de usuário e senha. Qualquer ajuda para superar esses problemas seria apreciada.
Esses cabeçalhos WWW-Authenticate não estão sendo enviados pelo Nginx – eles são enviados pelo próprio webapp. Você precisa alterar
dav_auth_type
no config.yaml do Baïkal .