1. ホーム
  2. http

[解決済み】cURLを使用してBasic HTTP認証を正しく定義する方法は?

2022-03-28 11:16:03

質問

アピグリティを学習中です( Apigilityドキュメント -> RESTサービスチュートリアル ) で、cURL 経由で基本認証付きの POST リクエストを送信しようとしています。

$ curl -X POST -i -H "Content-Type: application/hal+json" -H "Authorization: Basic YXBpdXNlcjphcGlwd2Q=" http://apigilityhw.sandbox.loc/status

YXBpdXNlcjphcGlwd2Q= は、私の認証情報をBase64でエンコードした文字列です。 apiuser:apipwd . 認証情報は /data/htpasswd ( apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/ ).

このように見えます。

HTTP/1.1 401 Unauthorized
Server: nginx/1.4.7
Date: Mon, 22 Sep 2014 07:48:47 GMT
Content-Type: application/problem+json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.5.12-1~dotdeb.1
WWW-Authenticate: Basic realm="api"

どこが間違いなのでしょうか?どうすればうまくいくのでしょうか?

解決方法は?

curl -u username:password http://
curl -u username http://

ドキュメントページより。

-u, --user <user:password>

サーバー認証に使用するユーザー名とパスワードを指定します。 n、--netrc、--netrc-optionalよりも優先されます。

ユーザー名を単に指定した場合、curlはパスワードの入力を要求します。

ユーザー名とパスワードは最初のコロンで分割され、そのため このオプションでは、ユーザー名にコロンを使用することはできません。 パスワードは可能です。

WindowsベースのサーバーでKerberos V5を使用する場合は、Kerberos V5を含む必要があります。 Windows ドメイン名をユーザー名に含めると、サーバーが正常に動作します。 は、Kerberos チケットの取得に成功しました。そうでない場合は、最初の 認証ハンドシェイクに失敗する可能性があります。

NTLM を利用する場合、ユーザ名は単にユーザ名として指定することができる。 ドメインとフォレストが1つしかない場合は、ドメインなしで名前を指定します。 を設定する必要があります。

ドメイン名を指定するには、ダウンレベル・ログオン名またはUPNを使用します。 (User Principal Name)形式を使用します。例えば、EXAMPLEの場合、「EXAMPLE」userとなります。 それぞれ、[email protected]

Windows SSPI対応のcurlバイナリを使用して、Kerberos V5を実行する場合。 Negotiate認証、NTLM認証、Digest認証のいずれかを使用する場合は、curlに ユーザ名とパスワードを環境から選択するには、以下のように指定します。 というオプションで、コロン1つで指定します。

このオプションを複数回使用した場合は、最後に使用されたものが使用されます。

http://curl.haxx.se/docs/manpage.html#-u

は必要ないことに注意してください。 --basic フラグがデフォルトになっています。