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),对用户进行授权管理
     
    今天是注册博客园第一天,关于网站开发类的文章将从新浪博客迁移到本博客。
  • 相关阅读:
    PMP工具与技术篇--4.2.1-4 思维导图(数据表现技术)
    PMP工具与技术篇--4.2.1-3 决策--多标准决策分析技术
    PMP工具与技术篇--4.2.1-2 决策--投票(举手表决)
    PMP工具与技术篇--4.2.1-1 标杆对照技术(数据收集技术)
    PMP工具与技术篇--4.2.1 收集需求工具与技术总结
    PMP--4.2.1-2 需求跟踪矩阵
    PMP--4.2.1-1 需求文件
    PMP--4.2.1 收集需求--需求文件--需求跟踪矩阵
    PMP工具与技术篇--4.2 备案分析(数据分析技术)
    PMP--4.2-2 开发方法
  • 原文地址:https://www.cnblogs.com/wusir/p/3061261.html
Copyright © 2011-2022 走看看