gpt4 book ai didi

ASP.Net - 在没有 Windows 用户的情况下使用基本身份验证

转载 作者:行者123 更新时间:2023-12-04 00:45:46 25 4
gpt4 key购买 nike

我们有一个在 IIS6 上运行的 ASP.Net Web 应用程序,它管理自己的用户数据库。

该站点本身只允许匿名访问,所有身份验证/安全性都使用我们的应用程序本身进行管理。

我们有一个页面,其中包含我们导入 Excel 的 HTML 数据表,然后用于报告目的。该页面目前没有实现安全措施。

我们需要为此页面添加安全性,以便如果这些电子表格落入坏人之手,则在不提供用户名/密码的情况下无法“刷新”数据。

如果我将此页面设置为不允许匿名访问,那么我可以对 Windows 用户使用基本/Windows 身份验证以保护此页面。然后,当 Excel 刷新数据时,会弹出密码对话框。

问题是我需要能够根据我们数据库中的用户来保护这个页面,他们不会是 Windows 用户。我还需要以允许 Excel 管理排除任何基于表单的身份验证的身份验证的方式来执行此操作。

有人有任何想法吗?是否有可能让 IIS 在其他地方寻找它的基本身份验证?

最佳答案

好的,所以我找到了两个解决此问题的方法。感谢 Zhaph - Ben Duguid 的回答,这是一个 HttpModule,它允许 ASP.Net 完全管理身份验证。

第二个解决方案,也是我要使用的解决方案,多亏了这个问题/答案。

HTTP Authentication (Basic or Digest) in ASP Classic via IIS

我已经把它去掉了,并有一个简单的测试工具,它似乎运行良好。在此示例中,它仅检查用户名和密码是否匹配并认为已通过身份验证,而不是数据库调用。

using System;
using System.Text;

namespace AuthenticationTests
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string authorisationHeader = Request.ServerVariables["HTTP_AUTHORIZATION"];

if (authorisationHeader != null && authorisationHeader.StartsWith("Basic ", StringComparison.InvariantCultureIgnoreCase))
{
string authorizationParameters = Encoding.Default.GetString(Convert.FromBase64String(authorisationHeader.Substring("Basic ".Length)));
string userName = authorizationParameters.Split(':')[0];
string password = authorizationParameters.Split(':')[1];

if (userName == password) //Perform your actual "login" check here.
{
//Authorised!
//Page loads as normal.
}
else
{
Unauthorised();
}
}
else
{
Unauthorised();
}
}

private void Unauthorised()
{
Response.AddHeader("WWW-Authenticate", "Basic");
Response.Status = "401 Unauthorized";
Response.End();
}
}
}

关于ASP.Net - 在没有 Windows 用户的情况下使用基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1887323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com