加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 22:51:12 所属栏目:asp.Net 来源:网络整理
导读:我们有一个在IIS6上运行的ASP.Net Web应用程序,它管理着自己的用户数据库. 网站本身只允许匿名访问,所有的身份验证/安全性都是使用我们的应用程序本身来管理的. 我们有一个页面,其中包含我们导入到Excel中的HTML数据表,然后用于报告.该页面目前没有实现安全
我们有一个在IIS6上运行的ASP.Net Web应用程序,它管理着自己的用户数据库.

网站本身只允许匿名访问,所有的身份验证/安全性都是使用我们的应用程序本身来管理的.

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

我们需要增加这个页面的安全性,所以如果这些电子表格落在错误的手中,那么数据不能“刷新”,而不提供用户名/密码.

如果我将此页面设置为不允许Anonymouse访问,那么我可以使用Windows用户的Basic / Windows身份验证,以确保此页面的安全.然后当Excel刷新数据时弹出密码对话框.

问题是我需要能够根据数据库中的用户来保护这个页面,而不会是Windows用户.我还需要这样做,这样可以让Excel管理不包含基于表单的身份验证的身份验证.

任何人有任何想法?是否可以让IIS查看其他地方的基本身份验证?

解决方法

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

第二个解决方案和我正在进行的解决方案是感谢这个问题/答案.

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();
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读