cURL を使用して基本的な HTTP 認証を正しく定義するにはどうすればよいでしょうか? 質問する

cURL を使用して基本的な HTTP 認証を正しく定義するにはどうすればよいでしょうか? 質問する

私はApigilityを学んでいます(Apigility ドキュメント -> REST サービス チュートリアル) を実行し、cURL 経由で基本認証を使用して POST リクエストを送信しようとしています。

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

YXBpdXNlcjphcGlwd2Q=は、私の資格情報を含む Base 64 エンコードされた文字列です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"

ここでの間違いはどこにありますか? どうすれば動作するのでしょうか?

ベストアンサー1

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

ドキュメントページから:

-u, --user <ユーザー:パスワード>

サーバー認証に使用するユーザー名とパスワードを指定します。-n、--netrc、および --netrc-optional を上書きします。

ユーザー名だけを指定すると、curl はパスワードの入力を求めます。

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

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

NTLM を使用する場合、たとえばセットアップ内に単一のドメインとフォレストがある場合は、ユーザー名をドメインなしで単純にユーザー名として指定できます。

ドメイン名を指定するには、ダウンレベルログオン名またはUPN(ユーザープリンシパル名)形式を使用します。たとえば、EXAMPLE\userおよび[メールアドレス]それぞれ。

Windows SSPI 対応の curl バイナリを使用し、Kerberos V5、ネゴシエート、NTLM、またはダイジェスト認証を実行する場合は、このオプションで単一のコロンを指定して、curl に環境からユーザー名とパスワードを選択するように指示できます: "-u :"。

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

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

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

おすすめ記事