HTTP基本認証-期待されるWebブラウザーエクスペリエンスは何ですか?


255

サーバーが基本HTTP認証を介したアクセスを許可する場合、Webブラウザーではどのようなエクスペリエンスが期待されますか?

少しの間Webブラウザを無視して、次のようにして基本認証リクエストを作成する方法を示しますcurl

curl -u myusername:mypassword http://somesite.com

しかし、Webブラウザではどうでしょうか。一部のWebサイトで見たのは、URLにアクセスすると、サーバーが応答コード401を返すことです。次に、ブラウザーがユーザー名/パスワードのプロンプトを表示します。

ただし、somesite.comでは、認証プロンプトがまったく表示されず、認証されていないことを示すページだけが表示されます。一部のサイトは基本認証ワークフローを正しく実装していませんか、それとも他に何かする必要がありますか?


ダイジェストではなく基本認証を使用してもよろしいですか?
b_erb 2010年

私がbase-64でエンコードするかどうかを尋ねない限り、違いはわかりません。プログラムでそれを行っていた場合はそうなりますが、curlがそれを行います。
bpapa 2010年

WWW-Authenticate応答ヘッダー(値:DigestまたはBasic)から、どの認証が使用されているかを確認できます。
Kniganapolke 2010年

2
この質問は言い換える必要があると思います。複数の回答者が、ブラウザではなくカールに関する質問だと考えています。
LS

「認証」という用語を使用する場合、「認証」を意味しますか?
Tarun

回答:


160

混乱を避けるために、質問を2つの部分にまとめます。

まず、「ブラウザでBASIC認証を使用して認証済みのHTTPリクエストを作成するにはどうすればよいですか?」

ブラウザで、プロンプトが表示されるのを待つか、次の形式に従ってURLを編集することにより、最初にhttp基本認証を実行できます。 http://myusername:mypassword@somesite.com

注意:コマンドラインとcurlがインストールされている場合、質問で言及されているcurlコマンドは完全に問題ありません。;)

参照:

また、CURLマニュアルページhttps://curl.haxx.se/docs/manual.htmlによると

HTTP

  Curl also supports user and password in HTTP URLs, thus you can pick a file
  like:

      curl http://name:passwd@machine.domain/full/path/to/file

  or specify user and password separately like in

      curl -u name:passwd http://machine.domain/full/path/to/file

  HTTP offers many different methods of authentication and curl supports
  several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which
  method to use, curl defaults to Basic. You can also ask curl to pick the
  most secure ones out of the ones that the server accepts for the given URL,
  by using --anyauth.

  NOTE! According to the URL specification, HTTP URLs can not contain a user
  and password, so that style will not work when using curl via a proxy, even
  though curl allows it at other times. When using a proxy, you _must_ use
  the -u style for user and password.

2番目の本当の質問は、「しかし、somesite.comでは、認証プロンプトがまったく表示されず、「認証されていません」というページだけが表示されます。一部のサイトでは、基本認証ワークフローが正しく実装されていなかったか、何かありますか?他に私はする必要がありますか?」

curlのドキュメントによると、この-uオプションは多くの認証方法をサポートしており、Basicがデフォルトです。


3
問題はブラウザではないカールについてです。
レイバクスター

26
curlコマンドのすぐ下にあるので、質問を完全に読んでいない可能性があります。 」;)
Nicocube 2015年

3
カールは問題なく機能することに私は完全に同意します。
個人

4
質問者はなぜ認証なのか知りたがっています。ブラウザで機能していません。問題はcURLに関するものではありません。
LS

68

やってみました ?

curl somesite.com --user username:password

13
@daronwolff引数の位置を切り替えて-uを--user(これは長期的なものにすぎません)に置き換えただけですが、それとは別に、OPが彼の質問にすでに書いたものを正確に書いた
Murmel

3
質問者はなぜ認証なのか知りたがっています。ブラウザで機能していません。問題はcURLに関するものではありません。
LS

15

ブラウザに古い無効なユーザー名/パスワードがキャッシュされている可能性があります。それらをクリアして、もう一度確認してください。

IEを使用していて、somesite.comがイントラネットのセキュリティゾーンにある場合、IEがWindowsの資格情報を自動的に送信している可能性があります。


8

WWW-Authenticateヘッダー

サーバーが401応答コードを送信しているが、WWW-Authenticateヘッダーを正しく設定していない場合にも、これが発生する可能性があります。


6

要求ヘッダーに資格情報が提供されていない場合、IEがユーザーに資格情報の入力を求め、要求を再送信するために必要な最小限の応答は次のとおりです。

Response.Clear();
Response.StatusCode = (Int32)HttpStatusCode.Unauthorized;
Response.AddHeader("WWW-Authenticate", "Basic");

5

PostmanをChromeのプラグインとして使用できます。各リクエストに必要な認証タイプを選択できます。そのメニューでは、ユーザーとパスワードを設定できます。Postmanは、設定をリクエストと共に送信される認証ヘッダーに自動的に変換します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.