Как пройти аутентификацию пользователя при посещении другого URL? - PullRequest
1 голос
/ 22 июля 2010

Предположим, у меня есть веб-приложение MyApp.Когда я захожу в это веб-приложение, у меня вводится информация об аутентификации пользователя (имя пользователя и пароль), затем с этого сайта я хочу посетить другой сайт, скажем, YourSite, который также будет запрашивать аутентификацию.Одна и та же аутентификация должна подойти для обоих сайтов.

Итак, я хочу передать данные аутентификации пользователя на MyApp на Ваш сайт в коде.Затем я пишу обработчик 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;
            //.....
}

Но я не хочу устанавливать имя пользователя и пароль в коде, я хочу передать данные аутентификации текущего пользователя на Ваш сайт.

Какреализовать этот запрос?

========== Moro информация о моей ситуации: MyApp - приложение wep 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;

       //.....
    }

, но не может пройти аутентификацию.

Ответы [ 2 ]

0 голосов
/ 23 июля 2010

Если ваши приложения работают в одном и том же домене верхнего уровня (myapp.abc.com и yourapp.abc.com), это будет легко сделать с помощью поставщика проверки подлинности с помощью форм и членства, просто установив в своих приложениях web.config: 1001 *

Проверка подлинности Asp.net и несколько доменов

Блог Скотта Гу

Если домены разные, вы можете использовать SSO (sing sign on) решения, такие как: http://singlesignon.codeplex.com/

0 голосов
/ 23 июля 2010

Не могли бы вы использовать iframe 1 x 1 пиксель веб-сайта MyApp на странице YourSite, а затем передавать информацию через javascript / ajax?Я полагаю, что согласился бы с комментарием Дарина и предложил бы OpenID, но это может быть вариант.Я не пробовал, поэтому дайте мне знать, если это работает:)

...