Javascript:如何在HTTP GET中传递基本身份验证的当前用户凭据

时间:2012-10-17 09:38:11

标签: javascript authentication xmlhttprequest

我想将用户从一台服务器上的一个网页重定向到另一台服务器上的另一个网页。第一个应用程序使用Active Directory进行身份验证。第二个应用程序未使用Active Directory进行身份验证。但是,第二个应用程序允许在HTTP GET请求中使用基本身份验证来传递auth头。

我测试了发送Auth标头并且成功了:

function DoLogin()
{
    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        if(xmlhttp.status==200)
            window.location = "http://server:port/home";
        else
            document.getElementById("myDiv").innerHTML="Error in Login";
        }
      }
    xmlhttp.open("GET","http://server:part/auth",true);
    xmlhttp.setRequestHeader("Accept","application/rdf+xml");
    xmlhttp.setRequestHeader("Authorization","Basic Z29082FtaWs6TDN0bWVpbkBPZmZp=45^");
    xmlhttp.send();
}

但是,在此代码中,我发送了一组硬编码凭据。我无权访问创建此哈希所需的用户名和密码。我想知道是否还有获取凭据的哈希并传递它们?

1 个答案:

答案 0 :(得分:2)

出于安全原因,我认为没有,也没有办法获得第一个站点(站点A)的Active Directory身份验证凭据。

您的选择

  1. 在第二台服务器上实施Active Directory身份验证
  2. 作为一种解决方法,实施某种基于令牌的身份验证,让用户在识别到站点A后访问站点B.
  3. 在这两种情况下,您都需要访问网站B.

    如果您无法访问网站B,我看不到解决方案。