• 使用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),对用户进行授权管理
     
    今天是注册博客园第一天,关于网站开发类的文章将从新浪博客迁移到本博客。
  • 相关阅读:
    Unity Ply网格读取
    LoadLibrary加载dll失败
    Anaconda引起cuda MSB3721 with return error code 1
    STL 如何对STL进行扩展,简单小结
    集群环境准备(Centos7)
    MySQL中的常见函数
    Mysql优化_第十三篇(HashJoin篇)
    docker创建和使用mysql
    JNI相关笔记 [TOC]
    选择排序
  • 原文地址:https://www.cnblogs.com/wusir/p/3061261.html
Copyright © 2020-2023  润新知