Respostas:
http://curl.haxx.se/docs/httpscripting.html
Consulte a parte 6. Autenticação HTTP
Autenticação HTTP
Autenticação HTTP é a capacidade de informar ao servidor seu nome de usuário e senha para verificar se você tem permissão para fazer a solicitação que está fazendo. A autenticação básica usada no HTTP (que é o tipo que o curl usa por padrão) é baseada em texto sem formatação , o que significa que envia nome de usuário e senha apenas ligeiramente ofuscados, mas ainda totalmente legíveis por qualquer pessoa que cheire a rede entre você e o servidor remoto.
Para dizer ao curl para usar um usuário e senha para autenticação:
curl --user name:password http://www.example.com
O site pode exigir um método de autenticação diferente (verifique os cabeçalhos retornados pelo servidor) e, em seguida, --ntlm, --digest, --negotiate ou mesmo --anyauth podem ser opções adequadas para você.
Às vezes, seu acesso HTTP está disponível apenas através do uso de um proxy HTTP. Isso parece ser especialmente comum em várias empresas. Um proxy HTTP pode exigir seu próprio usuário e senha para permitir que o cliente acesse a Internet. Para especificar aqueles com ondulação, execute algo como:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
Se o seu proxy exigir que a autenticação seja feita usando o método NTLM, use --proxy-ntlm, se precisar do Digest, use --proxy-digest.
Se você usar qualquer uma dessas opções de usuário + senha, mas deixar de fora a parte da senha, o curl solicitará a senha interativamente.
Observe que, quando um programa é executado, é possível ver seus parâmetros ao listar os processos em execução do sistema. Portanto, outros usuários poderão observar suas senhas se você as passar como opções simples de linha de comando. Existem maneiras de contornar isso.
Vale a pena notar que, embora seja assim que a Autenticação HTTP funciona, muitos sites não usam esse conceito quando fornecem logins etc. Consulte o capítulo Login na Web mais abaixo para obter mais detalhes.
Basta adicionar para não precisar clicar:
curl --user name:password http://www.example.com
ou se você estiver tentando enviar autenticação para o OAuth 2:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
opção é ótima.
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
sempre recebendo um erro de falta de cabeçalho de autorização
<Base64EncodedCredentials>
como mencionado por @ Timothy-Kansaki, você pode obter o codificado credencial usando o comando: cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
. Para referência, consulte stackoverflow.com/questions/16918602/…
Os tokens do portador são assim:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
(para quem procura resposta php-curl )
$service_url = 'https://example.com/something/something.json';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); //Your credentials goes here
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //IMP if the url has https and you don't want to verify source certificate
$curl_response = curl_exec($curl);
$response = json_decode($curl_response);
curl_close($curl);
var_dump($response);
Isso funcionou para mim:
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
Authorization: bearer xxxxxxxxx
?
Bearer
Bearer
.
Para autenticação básica HTTP:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
substituir _your_token_
e o URL.
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
gerará o token de autenticação básico.
-H "Authorization: Basic <_your_token_>"
faz o mesmo efeito que --user login:password
. Você pode verificá-lo comcurl -v
Cuidado ao usar:
curl -H "Authorization: token_str" http://www.example.com
token_str
e Authorization
deve ser separado por espaço em branco, caso contrário, o lado do servidor não obterá o HTTP_AUTHORIZATION
ambiente.
Se você não tiver o token no momento da ligação, será necessário fazer duas chamadas, uma para obter o token e a outra para extrair o token da resposta, preste atenção
token grep | corte -d, -f1 | cut -d \ "-f4
pois é a parte que trata da extração do token da resposta.
echo "Getting token response and extracting token"
def token = sh (returnStdout: true, script: """
curl -S -i -k -X POST https://www.example.com/getToken -H \"Content-Type: application/json\" -H \"Accept: application/json\" -d @requestFile.json | grep token | cut -d, -f1 | cut -d\\" -f4
""").split()
Após extrair o token, você pode usá-lo para fazer chamadas subseqüentes da seguinte maneira.
echo "Token : ${token[-1]}"
echo "Making calls using token..."
curl -S -i -k -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer ${token[-1]}" https://www.example.com/api/resources