Предположим, у меня есть веб-приложение MyApp. Когда я получаю доступ к этому веб-приложению, у меня есть входная информация для аутентификации пользователя (имя пользователя и пароль), а затем с этого сайта я хочу посетить другой сайт, скажем, YourSite, который также будет запрашивать аутентификацию. Одинаковая аутентификация должна подойти для обоих сайтов.
Итак, я хочу передать данные аутентификации пользователя в MyApp на YourSite в коде. Затем я пишу обработчик http, например:
public void ProcessRequest(HttpContext context)
{
string url = "http://YourSite/page/...";
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
CredentialCache myCache = new CredentialCache();
NetworkCredential netCredential = new NetworkCredential("myname", "mypassword", "");
myCache.Add(new Uri(url), "Basic", netCredential);
myCache.Add(new Uri(url), "Digest", netCredential);
myCache.Add(new Uri(url), "Negotiate", netCredential);
myReq.Credentials = myCache;
//.....
}
Но я не хочу устанавливать имя пользователя и пароль в коде, я хочу передать текущие данные аутентификации пользователя на YourSite.
Как реализовать этот запрос?
========== Подробнее о моей ситуации: MyApp - это веб-приложение Asp.NET, работающее на IIS (проверка подлинности Windows). YourSite — это приложение Java, работающее на Tomcat на другом компьютере. Оба приложения настроены на использование учетной записи пользователя Windows Active Directory на одном сервере домена Windows.
============ Дополнительная информация: я изменяю приведенный выше код как (попробуйте использовать текущие учетные данные):
public void ProcessRequest(HttpContext context)
{
string url = "http://YourSite/page/...";
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
myReq.Credentials = CredentialCache.DefaultCredentials;
//.....
}
но не может пройти аутентификацию.