Como definir o header de autorização usando curl

Como faço para passar o header de autorização usando cURL? (executável em /usr/bin/curl ).

http://curl.haxx.se/docs/httpscripting.html

Veja 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 que ele possa 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 simples , o que significa que ele envia o nome de usuário e a senha apenas ligeiramente ofuscados, mas ainda totalmente legível por qualquer pessoa que fareje 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 headers retornados pelo servidor) e, em seguida, –ntlm, –digest, –negotiate ou até mesmo –anyauth podem ser opções adequadas para você.

Às vezes, o access HTTP só está disponível 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 passe para a Internet. Para especificar aqueles com curl, 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 requerer o 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, seus parâmetros podem ser visualizados ao listar os processos em execução do sistema. Assim, outros usuários poderão ver 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 funciona a Autenticação HTTP, muitos sites não usarão esse conceito quando fornecerem logins, etc. Consulte o capítulo Login na Web mais abaixo para obter mais detalhes sobre isso.

Basta adicionar para não precisar clicar:

 curl --user name:password http://www.example.com 

ou se você está tentando enviar autenticação para o OAuth 2:

 curl -H "Authorization: OAuth " http://www.example.com 

Os marcadores portadores são assim:

 curl -H "Authorization: Bearer " http://www.example.com 

(para quem está procurando 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/ 

Tenha cuidado ao usar: curl -H "Authorization: token_str" http://www.example.com

token_str e Authorization devem ser separados por espaço em branco, caso contrário, o lado do servidor não obterá o ambiente HTTP_AUTHORIZATION .

Para autenticação básica HTTP:

curl -H "Authorization: Basic <_your_token_>" http://www.example.com

substitua _your_token_ e o URL.

Se você não tiver o token no momento da chamada, você terá que fazer duas chamadas, uma para obter o token e outra para extrair o token da resposta.

grep token | cut -d, -f1 | corte -d \ “-f4

como é a parte que está lidando com extrair o 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() 

Depois de extrair o token, você pode usar o token para fazer chamadas subsequentes 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