web-dev-qa-db-ja.com

Curlを使って認証ヘッダを設定する方法

CURLを使って認証ヘッダを渡すにはどうすればいいですか? (/usr/bin/curlで実行可能).

315
Vidya

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

パート6を参照してください。HTTP認証

HTTP認証

HTTP認証は、自分のユーザー名とパスワードをサーバーに通知して、自分が行っている要求を実行できることを確認できるようにする機能です。 HTTPで使用される基本認証(これはデフォルトでcurlが使用するタイプです)は plain text basedです。これは、ユーザー名とパスワードをわずかに難読化しただけで送信します。それはあなたとリモートサーバーの間のネットワークを盗み見ます。

認証にユーザーとパスワードを使用するようにcurlに指示するには、次のようにします。

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

このサイトでは別の認証方法(サーバーから返されるヘッダーを確認する)が必要になる場合があります。次に--ntlm、 - digest、 - Negotiate、または--anyauthを選択してもかまいません。

時々あなたのHTTPアクセスはHTTPプロキシの使用を通してのみ利用可能です。これはさまざまな会社で特に一般的なようです。 HTTPプロキシは、クライアントがインターネットにアクセスできるようにするために、独自のユーザーとパスワードを必要とする場合があります。 curlを使ってそれらを指定するには、次のように実行します。

curl --proxy-user proxyuser:proxypassword curl.haxx.se

プロキシでNTLM方式を使用した認証が必要な場合は--proxy-ntlmを使用し、ダイジェストが必要な場合は--proxy-digestを使用します。

これらのuser + passwordオプションのどれか1つを使用してパスワード部分を省略した場合、curlは対話的にパスワードを要求します。

プログラムが実行されるとき、そのパラメータはシステムの実行中のプロセスをリストするときに見ることができるかもしれないことに注意してください。そのため、普通のコマンドラインオプションとしてパスワードを渡すと、他のユーザーが自分のパスワードを確認できる可能性があります。これを回避する方法があります。

これはHTTP認証のしくみですが、非常に多くのWebサイトがログインなどを提供するときにこの概念を使用しないことに注目する価値があります。詳細については、後述のWebログインの章を参照してください。

333
Oli

クリックする必要がないように追加するだけです。

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

またはOAuth 2の送信認証を行おうとしている場合

curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
254
Tony

ベアラトークンは次のようになります。

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
131
Steve Tauber

php-curl answerを探している人のために)

$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);
59
Rao

これは私のために働いた:

 curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
47
timj98

HTTP基本認証の場合

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

_your_token_とURLを置き換えます。

13
Devaroop

curl -H "Authorization: token_str" http://www.example.comを使うときには注意してください

token_strAuthorizationは空白で区切る必要があります。そうしないと、サーバーサイドでHTTP_AUTHORIZATION環境になりません。

12
jianpx

電話をかけた時点でトークンを持っていない場合は、2つの電話をかける必要があります。1つはトークンを取得するため、もう1つは応答からトークンを抽出するためです。

grepトークンカット-d、-f1 | cut -d\"-f4

レスポンスからトークンを抽出することを扱う部分です。

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()

トークンを抽出した後は、次のようにトークンを使用して後続の呼び出しを行うことができます。

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 
2
Upul Doluweera