使用基本身份验证重定向到HttpWebResponse Uri的问题

时间:2019-05-25 07:12:43

标签: c# asp.net authentication asp.net-core httpwebrequest

我需要将Web应用程序外部的用户重定向到使用基本身份验证的页面。

以下是我一直在尝试的内容:

HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;    

String username = "username";
            String password = "password";
            String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));
            req.Headers.Add("Authorization", "Basic " + encoded);

HttpWebResponse response = req.GetResponse() as HttpWebResponse;
return this.Redirect(response.ResponseUri.ToString());

我也尝试过缓存方案,但是没有成功:

CredentialCache myCache = new CredentialCache();

            myCache.Add(new Uri(url), "Basic", new NetworkCredential(username, password));
            req.Credentials = myCache;

我可以寻求帮助吗?

1 个答案:

答案 0 :(得分:1)

  

将我的Web应用程序外部的用户重定向到使用基本身份验证的页面

因此您想将某人重定向到另一个页面,并且该页面需要基本身份验证?因此,您想将用户定向到该目标页面吗?

然后,您将无法仅通过基本身份验证请求目标页面并对其进行处理。您基本上在这里有两个选择:

  1. 从另一个页面检索内容并自己显示。这不会重定向用户,但会将其保留在您的网站上。
  2. 重定向到目标页面的URL,但将凭据作为URL的一部分包含在内,以便用户的浏览器将使用这些凭据再次对该页面执行基本身份验证。

    具有基本身份验证凭据的URL通常如下所示:https://username:password@example.com/

    因此,如果您希望凭据重定向到用户,则实际上必须向用户公开凭据。否则,您将无法让他们自己去那里,因为在没有使用户可见的情况下无法通过身份验证。