イントラネット上の別のサーバーから 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 認証でも機能するように既定の資格情報を取得するにはどうすればよいですか?