web-dev-qa-db-ja.com

Javascriptを使用してWindows認証を認証する

クライアントをあるWebサイトから別のWebサイトに転送する必要があります。これはクライアント側で発生します。この2番目のWebサイトでは、Windowsの基本認証システムを使用しています。そのため、ログインウィンドウがポップアップします。このポップアップウィンドウを省略し、JavaScriptを使用して2番目のWebサイトでクライアントを認証してから、2番目のWebサイトにリダイレクトする必要があります。このシステム全体がイントラネットで実行されているため、JavaScriptファイルに資格情報を入れてもセキュリティの問題はありません。では、2番目のWebサイトでクライアントを認証する方法は?

このスレッドを見つけました jQueryを使用してWindows認証をWebサービスに渡すにはどうすればよいですか?

しかし、それは機能しません。 2番目のURLのリクエストヘッダーを見ると、Authorizationタグが含まれていません。

12
Sency

基本認証であり、資格情報を公開してもかまわない場合は、URLにユーザー名とパスワードを挿入してみませんか?例えば:

http:// username:[email protected]

ただし、Webサーバーを制御できる場合は、イントラネット接続の認証を無効にする必要があります。

16
William Niu

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には少し 特別な注意 -を設定することで実現できます。展開中の構成変数)

4
Lars

これがWindows認証の場合、応答はクライアントに資格情報の入力を求めません。ブラウザーは既に資格情報自体を渡そうとします。 HTTPのようには完全には機能しません。実際には、Windows資格情報に基づいて認証を送信するために ブラウザ自体を構成する 必要があります。

これに対する単純なJSソリューションはまったくないようです。

2
cwallenpoole