3

NTLM認証が必要なURLに対してHTTPGETを実行する必要があります。MacBookProでFirefoxまたはChromeを使用してURLにアクセスできます。ブラウザはユーザー名/パスワードの組み合わせを要求し、それは機能します。私は今、HttpClientを使用してGroovyから同じことをしようとしています。NTLMサポートガイドに従いましたが、いつも401 Unauthorized戻ってきます。応答には次の文もあります。

WebブラウザがWebサーバーが受け入れるように構成されていないWWW-Authenticateヘッダーフィールドを送信しているため、指定した資格情報を使用してこのディレクトリまたはページを表示する権限がありません。

このコードでは、サーバー名とドメイン(リモートWindows PCはドメイン上にありません)のあらゆる種類の組み合わせを試しましたが、常に同じ応答が返されます。

httpclient.getCredentialsProvider().setCredentials(
new AuthScope("myserver", -1), 
new NTCredentials("username", "password", "MYSERVER", "MYDOMAIN"));

誰かが同じ問題を抱えていて、なんとかそれを解決することができましたか?これは内部でIISを使用する外部プログラムであるため、そこで設定を変更することはできないと思います。

編集:

私が言ったこととは異なり、BASIC認証を受け入れるようにIISのセキュリティ設定を変更することができたので、もう問題はありません。

4

2 に答える 2

0

編集:

Kerberos または NTLM (どちらもシングル サインオン) の設定に関する私の経験では、既にシステムにログインしている場合は、ユーザー名/パスワードを入力する必要はまったくありません。

ブラウザーがユーザー名とパスワードの組み合わせを要求したとき、それは NTLM 認証ではないと確信しています。ほとんどの場合、サーバー側アプリケーションには HTTP Basic Digest へのフォールバック スキームがあります (そのため、ユーザー名とパスワードの組み合わせが表示されます)。NTLM を使用すると、ブラウザ、オペレーティング システム、サーバー、および Active Directory サーバー間のネゴシエーション メカニズムを通じてサーバーがユーザーを認識するため、ユーザー名/パスワード (プリンシパル/資格情報) を入力する必要はまったくありません。

MacBook Pro が OS/X で実行されている場合は、OS/X もドメインに追加する必要があります。サーバーは、クライアント OS/X が追加されるドメインと同じドメインにある必要もあります。これは些細なケースではないかもしれません。一部の外部ツール/ドライバーが必要になる場合があります。これは良い候補かもしれません(しかし、私は試していません)。

NTLM では、両方のクライアントがサーバーと同じドメインのメンバーである必要があるため、両方を Active Directory ドメインに登録する必要があります。サーバーがドメインにない場合、それは別の問題になります。

ブラウザを NTLM で動作させるには、プラグイン (ntlmauth-plugin?) をインストールする必要があります。しかし、私はまだ MacOS/X でそれを試したことはありません。Windows でも、Firefox を NTLM で正常に実行するにはプラグインが必要です。

于 2012-10-04T12:22:55.900 に答える