0

イントラネット上の別のサーバーから POST メソッドを呼び出すイントラネット サイトがあります。

IIS で認証モードを基本認証に設定すると、以下を使用できます。

HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(sURL);
 oReq.ContentType = "application/x-www-form-urlencoded";
 oReq.Method = "POST";
 oReq.Timeout = 60000;

 ...

 oReq.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

 ...


try
{
   HttpWebResponse oResp = (HttpWebResponse)oReq.GetResponse();
   ...
}

上記のすべてが意図したとおりに機能します。

ただし、IIS でセキュリティを Windows 認証に変更する必要があります。変更すると、次の行でエラー 401 無許可が発生し続けます。

try
    {
       HttpWebResponse oResp = (HttpWebResponse)oReq.GetResponse();
       ...
    }

これは、資格情報を次のように変更することで修正できます。

NetworkCredential creds = new NetworkCredential("username","password","domain");
oReq.Credentials = creds;

しかし、とにかくそれは正しい方法ではありません。Windows 認証でも機能するように既定の資格情報を取得するにはどうすればよいですか?

4

1 に答える 1

1

ある Web サイトから別の Web サイトを呼び出している場合、2 番目のホップがあります。これは kerberos の 2 番目のホップの問題です。

イントラネット サイトには、エンド ユーザーに代わって 2 番目のサイトを呼び出すためのアクセス許可が必要です。

DelegConfigというツールを使用することをお勧めします。あまりお勧めできません。単純な asp.net アプリケーションで、kerberos セットアップの何が問題なのかを教えてくれ、それを修正する方法を教えてくれます (または、必要に応じて自分で修正します)。

クライアントからサーバーへの認証を最初に機能させる必要があることがわかりましたが、それが機能すると、UNC/http/sqlなどへのネクストホップの何が問題なのかが非常に簡単になります。

于 2012-08-15T11:16:19.400 に答える