zoukankan      html  css  js  c++  java
  • 使用Windows身份验证的Intranet网站安全管理 Windows Authentication

    ASP.NET开发网站的身份验证通常使用两种办法:一种是Forms身份验证(authentication),这是典型的Internet应用,用户名及密码保存在数据库内(默认数据库名ASPNETDB.MDF);另外一种办法是Windows身份验证,这是ASP.NET默认的身份验证方式,这是典型的Intranet应用,它使用Windows网络域中有效的用户名及口令,包括组成员(一般在Active Directory内)来对用户进行身份验证。
    如果网站放在一个局域网内,只允许局域网内的有效用户进行访问,使用Windows身份验证是一个好的选择。这时,网管只需要维护Windows系统用户,不需要额外维护网站的用户,因为可以通过对Windows系统用户进行维护,从而让Intranet网站使用Windows的系统用户进行登录。
    在Internet(即Forms身份验证)中,开发人员需要创建一个Login页面,对用户名及密码进行身份验证(相应的用户名及密码在数据库内);在Intranet(即Windows身份验证)中,开发人员就不需要设计登录页面及登录逻辑,用户可以直接点击网站运行(前提是用户使用自己的Windows用户名及密码进入系统),开发人员可以根据用户名及其Group Membership判断用户是在哪一个组,从而对该用户进行授权。
    由于是Windows身份验证,所以不允许任何没有Windows有效账号的用户访问,因此,需要对web.config文件进行适当的配置如下:
    <configuration>

        <system.web>

            <authentication mode="Windows" />

             <authorization>
                 <deny users="?"/>
              </authorization>
        </system.web>
    </configuration>

    注意语句<deny users="?"/>中"?"指的是匿名用户,即本网站不允许任何匿名用户访问。
    如果要获取用户名,可以使用如下代码:
    string username = HttpContext.Current.User.Identity.Name;
    如果获取用户组(即对应ASP.NET中Forms身份验证的角色),假设在Windows服务器的Active Directory中有用户组为Domain\Admin,则可以这样写:
    if (User.IsInRole("Domain\Admin"))
        Label1.Text = User.Identity.Name + " is an Admin";
    else
        Label1.Text = User.Identity.Name + " is not an Admin";
     
    根据上面所述的办法,可以根据用户所在Group Membership(即Role),对用户进行授权管理
     
    今天是注册博客园第一天,关于网站开发类的文章将从新浪博客迁移到本博客。
  • 相关阅读:
    重新整理 .net core 实践篇————防跨站脚本攻击[四十]
    重新整理 .net core 实践篇————重定向攻击[三十九]
    低数值精度推理和训练
    FinFET与芯片制程
    LLVM Backend技术
    安霸Ambarella CV系列芯片
    3D卷积,代码实现
    TVM darknet yolov3算子优化与量化代码的配置方法
    英特尔 QLC 3D NAND 数据存储
    Graph Representation 图神经网络
  • 原文地址:https://www.cnblogs.com/wusir/p/3061261.html
Copyright © 2011-2022 走看看