0

Web サーバーから 401 メッセージを受信したときに、Java を使用してブラウザー認証ダイアログ ボックスを上書きする方法はありますか? このダイアログがいつ表示されるかを知りたいので、ユーザーに提供する代わりに、ユーザーの資格情報を入力します。

アプリケーションの概要:

私はWebサーバーを書いたので、本質的に誰かが外部ブラウザを開いてローカルホストとポートを入れて表示されているデータにアクセスするのを止めたいと思っています。私のアプリには、記述されたサーバーにリンクされた組み込みの Web ブラウザーがあります。ブラウザには復号化されたコンテンツが表示されるため、認証を強制すると (組み込みブラウザの場合でも)、外部ブラウザに資格情報が必要になります。組み込みブラウザがファイルにアクセスしようとしている場合は、ユーザーの資格情報を提供してコンテンツを表示します

4

5 に答える 5

1

パスワードの表示を気にしない場合は、資格情報を渡すように URL を作成できます。http://username:password@www.example.com これは認証ボックスをバイパスしますが、ユーザーに資格情報を表示するため、探しているものではない可能性もあります。

于 2009-05-21T19:33:56.340 に答える
1

SWT 3.5M6 には、AuthenticationListener を呼び出す新しいリスナーが含まれています。サーバーから渡された認証イベントをリッスンして起動するだけです。以下のコードは、私が望んでいた動作を実行するものです。認証を待ち、ホストが私のアプリケーションである場合は、資格情報を返します。もちろん、USER_NAME、PASSWORD、HOST_NAME には適切な変数を入力してください。それ以外の場合は、ブラウザーの認証ダイアログがポップアップし、ユーザーに資格情報を入力させます。このコードは、Eclipse SWT スニペット ページにもあります。

webBrowser.addAuthenticationListener(新しい AuthenticationListener()

{

        public void authenticate(AuthenticationEvent event) {
            try {
                URL url = new URL(event.location);

                if (url.getHost().equals(HOST_NAME)) 
                {
                    event.user = USER_NAME;
                    event.password = PASSWORD;
                } 
                else 
                {       
                    /* do nothing, let default prompter run */
                }
            } catch (MalformedURLException e) {
                /* should not happen, let default prompter run */
            }
        }
    });
于 2009-05-29T14:31:17.723 に答える
0

認証のためにユーザーに表示される内容を制御する場合は、web.xml の login-config セクションで auth-method を BASIC から FORM に変更できます。

次に、ユーザーの認証時にどのページを表示するかを指定し、資格情報を事前に入力すると思います...しかし、これはセキュリティの目的全体を無効にしませんか?

Web アプリケーションの認証の設定

詳細の後に編集します。

私の唯一の提案は、auth-method を CLIENT-CERT に変更し、双方向 SSL を要求することです。この場合、クライアントも証明書をサーバーに提示する必要があります。組み込みブラウザーに証明書をインストールする場合 (および外部ブラウザーが証明書を取得できないことを確認する場合) は、問題ありません。そして実際には、これにより認証ダイアログが表示されなくなります。

于 2009-05-21T19:32:19.040 に答える
0

あなたの質問は少し不明確です。基本認証全体は、HTTP ヘッダーに基づいています。

ブラウザーが承認ヘッダーを取得すると、ダイアログが表示されます。次に、ダイアログのコンテンツがサーバーに送り返されます。それについて特別なことは何もありません。これは、base64 でエンコードされたユーザー名:パスワードです。見て

ウィキペディア

問題は、どのように干渉したいかです。認証ヘッダーをキャプチャする必要があり、次のリクエストでは、HTTP ヘッダーを変更して資格情報を含める必要があります。

それが役立つことを願っています

于 2009-05-21T19:36:28.860 に答える
0

これは主にブラウザに依存する動作であり、サーバーがブラウザに報告するものだと思います。

たとえば、Microsoft 製品である Internet Explorer は、匿名の要求が 401 で失敗した後、Windows 資格情報の自動送信を直接サポートしています (この動作はインターネット設定で変更できます)。

たとえば、Firefox は、パスワード マネージャーを介して ID とパスワードを記憶するように設定されていても、ユーザーにプロンプ​​トを表示しません。IE は、自動ログインが失敗した場合にもプロンプトを表示します (ID が許可されていないため、Windows 資格情報が依然として 401 になるなど)。

Web 開発者として、サーバーとアプリを最も期待される調和のとれた方法で動作するように設定する以外に、これを制御できるとは思いません。

于 2009-05-21T19:37:26.583 に答える