Enquanto procurava por um guia, encontrei este exemplo na Wikipedia
GET /dir/index.html HTTP/1.0
Host: localhost
Authorization: Digest username="Mufasa", realm="[email protected]", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/dir/index.html",
qop=auth,
nc=00000001,
cnonce="0a4f113b",
response="6629fae49393a05397450978507c4ef1",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
(seria ótimo se houvesse uma ferramenta/site que convertesse as solicitações deste formulário em raw para o comando curl)
este é o domínio e o nonce quando tento enviar uma solicitação get normal para o site.
WWW-Authenticate: Digest realm="device1",nonce="3c5d8f92f03d9f1afd5dd55a7b172ee8", qop="auth", algorithm="MD5"
a resposta, mas de uma captura de tela de captura de rede
Depois de pesquisar online novamente um pouco, percebi que o comando deveria ser assim
curl "url" --digest -u {username}:{pass} -vv -d @4.xml -H "Content-Type: text/xml;charset=utf-8"
mas não entendi onde colocar o nonce ou o reino ou o qop ou o algoritmo="MD5"
enquanto o arquivo .xml contém os dados do post (no meu caso é uma ação de sabão)
resposta do usuário Alexey R. do stackoverflow
além de um usuário em outro site, o comando deve ficar assim
Ao usar a autenticação Digest, você precisa enviar um cabeçalho HTTP "Autorização", e esse cabeçalho é onde o nonce etc deve ir.
No entanto, o Digest usa um mecanismo de desafio/resposta que exige que o cabeçalho de autorização seja enviado em uma segunda solicitação HTTP, em vez da solicitação HTTP original.
A segunda solicitação HTTP só pode ser enviada depois que a solicitação HTTP original receber uma resposta 401.
Você deve conseguir ter uma ideia deste problema fechado do GitHub, onde é explicado mais sobre como o curl funciona com isso.