回答:
http://curl.haxx.se/docs/httpscripting.html
パート6を参照してください。HTTP認証
HTTP認証
HTTP認証は、サーバーにユーザー名とパスワードを通知して、実行中のリクエストを実行できることを確認できるようにする機能です。HTTPで使用される基本認証(curlがデフォルトで使用するタイプ)はプレーン テキストベースです。つまり、ユーザー名とパスワードはわずかに難読化されて送信されますが、ユーザーとリモートサーバー間のネットワークを傍受する人は完全に読み取ることができます。
認証にユーザーとパスワードを使用するように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を使用します。
これらのユーザー+パスワードオプションのいずれかを使用し、パスワードの部分を省略すると、curlはインタラクティブにパスワードの入力を求めます。
プログラムを実行すると、システムの実行中のプロセスをリストするときに、そのパラメーターが表示される可能性があることに注意してください。したがって、プレーンなコマンドラインオプションとして渡すと、他のユーザーがパスワードを監視できる可能性があります。これを回避する方法があります。
これはHTTP認証の仕組みですが、ログインなどを提供するときにこの概念を使用しないWebサイトが非常に多いことに注意してください。詳細については、以下のWebログインの章を参照してください。
クリックスルーする必要がないように追加するだけです。
curl --user name:password http://www.example.com
または、OAuth 2の送信認証を行おうとしている場合:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
オプションは素晴らしいです。
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
常に認証ヘッダーが見つからないというエラーが発生する状態で認証ヘッダーを追加しようとしています
<Base64EncodedCredentials>
@ timothy-kansakiが述べたようにが必要な場合は、次のコマンドを使用して、エンコードされた認証情報を取得できますcred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
。参考として、stackoverflow.com
(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);
HTTP基本認証の場合:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
_your_token_
URLを置き換えます。
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
が基本的な認証トークンを生成します。
-H "Authorization: Basic <_your_token_>"
同じ効果があり--user login:password
ます。あなたはそれをチェックすることができますcurl -v
以下を使用する場合は注意してください。
curl -H "Authorization: token_str" http://www.example.com
token_str
とAuthorization
そうでない場合は、サーバー側が得ることはありません、ホワイトスペースで区切られている必要がありHTTP_AUTHORIZATION
、環境を。
呼び出しの時点でトークンがない場合は、2つの呼び出しを行う必要があります。1つはトークンを取得するため、もう1つは応答からトークンを抽出するためです。
grepトークン| カット-d、-f1 | カット-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