クライアントをあるWebサイトから別のWebサイトに転送する必要があります。これはクライアント側で発生します。この2番目のWebサイトでは、Windowsの基本認証システムを使用しています。そのため、ログインウィンドウがポップアップします。このポップアップウィンドウを省略し、JavaScriptを使用して2番目のWebサイトでクライアントを認証してから、2番目のWebサイトにリダイレクトする必要があります。このシステム全体がイントラネットで実行されているため、JavaScriptファイルに資格情報を入れてもセキュリティの問題はありません。では、2番目のWebサイトでクライアントを認証する方法は?
このスレッドを見つけました jQueryを使用してWindows認証をWebサービスに渡すにはどうすればよいですか?
しかし、それは機能しません。 2番目のURLのリクエストヘッダーを見ると、Authorizationタグが含まれていません。
基本認証であり、資格情報を公開してもかまわない場合は、URLにユーザー名とパスワードを挿入してみませんか?例えば:
ただし、Webサーバーを制御できる場合は、イントラネット接続の認証を無効にする必要があります。
Windowsベースのイントラネットの場合、Javascriptに煩わされることはありませんが、 このスレッド で説明されているように、デフォルトのNTLM-Authenticationを使用します。このようにして、ネットワークのユーザーの通常のユーザー名とパスワードを使用して、任意の数のサイトにシングルサインオンを提供できます。他のスレッドから私の答えを引用するには:
実際にはNTLM認証で可能です。 AuthenNTLM -pluginが必要です。これは、InternetExplorerを使用してユーザーを認証します。構文の例は次のようになります
<Location />
PerlAuthenHandler Apache::AuthenNTLM
AuthType ntlm,basic
AuthName test
require valid-user
# domain pdc bdc
PerlAddVar ntdomain "name_domain1 name_of_pdc1"
PerlAddVar ntdomain "other_domain pdc_for_domain bdc_for_domain"
PerlSetVar defaultdomain wingr1
PerlSetVar ntlmdebug 1
</Location>
## taken from the documentation
セットアップに関するその他のオプションと具体的な手順については、 モジュールのドキュメント を参照してください-上記は正しい方向に進むためのものです。
クライアント側では、Internet ExplorerとFirefoxは、いくつかの構成後に自動的にログインできるはずです(Firefoxには少し 特別な注意 -を設定することで実現できます。展開中の構成変数)
これがWindows認証の場合、応答はクライアントに資格情報の入力を求めません。ブラウザーは既に資格情報自体を渡そうとします。 HTTPのようには完全には機能しません。実際には、Windows資格情報に基づいて認証を送信するために ブラウザ自体を構成する 必要があります。
これに対する単純なJSソリューションはまったくないようです。