如何在访问其他URL时传递用户身份验证?

时间:2010-07-22 19:57:28

标签: asp.net authentication httphandler

假设我有一个Web应用程序MyApp。当我访问这个网络应用程序时,我输入了用户身份验证信息(用户名和密码),然后从这个网站,想要访问另一个网站,说你的网站也会要求身份验证。两个站点的相同身份验证都应该没问题。

所以我想将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。

如何实施此请求?

========== Moro关于我的情况的信息: MyApp是在IIS上运行的Asp.NET wep应用程序(Windows身份验证)。 YourSite是一个在另一个盒子上运行Tomcat的Java应用程序。 这两个应用程序都配置为在同一个Windows域服务器上使用Windows Active Directory用户帐户。

============更多信息: 我将上面的代码更改为(尝试使用当前凭据):

 public void ProcessRequest(HttpContext context)
    {
       string url = "http://YourSite/page/...";            
       HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
       myReq.Credentials = CredentialCache.DefaultCredentials;

       //.....
    }

但无法通过身份验证。

2 个答案:

答案 0 :(得分:0)

您可以在YourSite页面上使用MyApp网站的1像素乘1像素iframe,然后通过javascript / ajax传递信息吗?我想我会选择Darin的评论并建议OpenID,但这可能是一个选择。我没试过,所以请告诉我它是否有效:)

答案 1 :(得分:0)