web-dev-qa-db-ja.com

HTTP基本認証 - 予想されるブラウザ体験は何ですか?

サーバーが基本HTTP認証を介したアクセスを許可している場合、ブラウザーには何が期待されていますか?

私は通常これをcurlで行うだけです。

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

そしてそれはうまく機能します。しかし、今のところ私はcurl(長い話)にアクセスすることはできません。可能であれば、Webブラウザからのみ実行したいのです。

基本認証が機能すると思われる方法を考えました。必要なURLを入力すると、認証されていないと判断され、応答コード401が返され、プロンプトにユーザー名とパスワードを入力します。正しい場合は、ページが読み込まれます。

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

235
bpapa

みんなが混乱を避けるのを助けるために、私は2つの部分に質問を再定式化します。

まず、「BASIC認証を使用して、ブラウザで認証されたHTTPリクエストを作成する方法を教えてください。」

ブラウザでは、プロンプトが来るのを待つか、次の形式に従っている場合はURLを編集することによって、最初にhttp基本認証を実行できます。http://myusername:[email protected]

注意:コマンドラインと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:[email protected]/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がデフォルトです。

143
Nicocube

やってみました ?

curl somesite.com --user username:password
63
daronwolff

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

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

15
AUSteve

WWW認証ヘッダー

サーバが401レスポンスコードを送信しているがWWW-Authenticateヘッダを正しく設定していない場合にもこれが発生する可能性があります - 私は知っているべきですが、VBアプリはそうではなかったので認証プロンプトをポップアップします。

7
Chris McCauley

要求ヘッダーに提供されている信任状がない場合、以下はIEがユーザーに信任状を要求して要求を再実行依頼するのに必要な最小の応答です。

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

あなたはPostmanをchrome用のプラグインとして使うことができます。それはあなたが要求のそれぞれに必要な認証タイプを選ぶ能力を与えます。そのメニューでは、ユーザーとパスワードを設定できます。 Postmanは自動的に設定をあなたのリクエストと共に送信される認証ヘッダに変換します。

5
Mgccon