`
阅读更多
配置身份验证

Asp.net Framework支持三种验证类型
   Windows身份验证
   .net Passport身份验证
   Forms身份验证

对于特定程序,同一时刻只能启用一种身份验证方式

默认情况下,系统将启用Windows身份验证。验证用户职责委派给了IIS
.Net Passport身份验证是诸如MSN和Hotmail这样的微软Web站点使用的验证类型。
Forms身份验证。启用Forms身份验证后,通常会使用Cookie来验证用户。

Web.Config
<configuration>
  <system.web>
    <authentication mode="Forms">
    </authentication>
  </system.web>
</configuration>


1、配置Forms身份验证
Forms身份验证的几个配置选项如下所示:
  cookieless  不支持Cookie时也可以使用Forms身份验证   UseCookies,UseUri,AutoDetect和UseDeviceProfie默认值 UseDeviceProfie
  defaultUrl  用于指定用户通过身份验证后转向的页面,默认值:default.aspx
  domain      用于指定与验证Cookie相关的域,默认为空字符串
  enableCrossAppRedirects  用于通过传递查询字符串中的验证凭证来在应用程序之间验证用户。默认:false
  loginUrl    用于指定Login页面的路径。默认:Login.aspx
  name         用于指定验证cookie的名字。默认:.ASPXAUTH
  path          用于指定和验证cookie相关联的路径。默认值:/
  protection   用于指定如何对验证cookie进行加密。取值:All,Encryption,None和Validation。默认:ALL
  requiressSSL   用于指定在传递验证Cookie时是否需要使用SSL连接,默认False
  slidingExpiration 用于防止验证Cookie在一段时间内的再次访问中过期。取值:true,false 默认:true
  timeout 用于指定验证Cookie有多少分钟后过期。默认30

<?xml version="1.0"?>

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms name="s2_2"/>
    </authentication>
  </system.web>
</configuration>

2、使用无Cookie的Forms身份验证
Forms身份验证通常是使用Cookie来识别用户。有不支持Cookie的,可以用无Cookie身份验证功能。
启用无Cookie身份验证功能后,将通过一串添加到页面URL中的唯一字符串标识来识别用户。
如果用户在应用程序的相关页面间来回导航,那么字符串标识也将自动地在这些页面间进行传递,同时应用程序会在这样的页面交叉请求中自动识别用户。
如果希望ASP.NET Framework能自动检测浏览器是否支持Cookie功能,必须将Cookieless特性设置为AutoDetect。
<?xml version="1.0"?>

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms  cookieless="AutoDetect"/>
    </authentication>
  </system.web>
</configuration>


3、在Forms身份验证中使用相对超时限制
用户在一段30分钟时间间隔内即使没有请求任何页面,该用户也仍然处于已验证状态。如果用户在合法登录后越过30分钟未访问任何页面,那么该用户将自动登出应用程序。
<?xml version="1.0"?>

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms slidingExpiration="false" timeout="1"/>
    </authentication>
  </system.web>
</configuration>

强制用户每分钟都进行一次登录。

4、跨应用程序使用Forms身份验证
问题:
1.不希望公司的员工在公司不同的应用程序间切换时时行多次登录
2.在运行一个Web服务器集群(web farm ),不希望用户在访问不同的Web服务器时都进行登录。

通过Web配置文件的machineKey元素,可以设置该加密密钥和校验码。
<?xml version="1.0"?>

<configuration>
  <system.web>
    <machineKey decryption="Auto" validation="SHA1" decryptionKey="AutoGenerate,IsolateApps" validationKey="AutoGenerate,IsolateApps"/>
    <authentication mode="Forms">
      <forms slidingExpiration="false" timeout="1"/>
    </authentication>
  </system.web>
</configuration>


GenerateKeys.aspx
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Security.Cryptography" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        lblAES.Text = GetSequence(64);
        lblSHA1.Text = GetSequence(128);
    }

    private string GetSequence(int length)
    {
        byte[] buffer = new byte[length / 2];
        RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();
        provider.GetBytes(buffer);
        StringBuilder builder = new StringBuilder(length);
        for (int i = 0; i < buffer.Length; i++)
            builder.Append(string.Format("{0:X2}", buffer[i]));
        return builder.ToString();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        AES:
        <asp:Label ID="lblAES" runat="server" />
        <br />
        <br />
        SHA1:
        <asp:Label ID="lblSHA1" runat="server" />
    </div>
    </form>
</body>
</html>


显示指定了密钥的MachineKey元素,可以加入服务器根目录的Web配置文件。

5、跨域使用Forms身份验证
P62

6、使用FormsAuthentication类
使用Forms身份验证的主要API是FormsAuthentication类。
属性:

  cookieDomain   返回身份验证Cookie关联的域
  cookieMode      返回无Cookie身份验证模式。
  cookieSupported   支持cookie 并Forms启用了cookie功能,返回true
  DefaultUrl          验证成功后所转向的页面URL
  EnableCrossAppRedirects            当身份验证凭证从查询字符串中删除时,该属性返回True
  FormsCookieName              返回身份验证Cookie的名字
  FormsCookiePath               返回和身份验证Cookie相关联的路径
  LoginUrl                           返回和用户身份验证时所转向的页面URL
  RequiredSSL                    
  SlidingExpiration                  相对超时限制策略
方法:
  Authenticate      根据存储在Web配置文件中的用户名和密码清单来验证输入的用户名和密码
  Decrypt             用于解密身份验证Cookie
  GetAuthCookie   用于获取身份验证Cookie
  GetRedirectUrl    用于获取重定向到Login页面之前的原始页面路径
  HashPasswordForStoringInConfigFile   对将要存入Web配置文件中的密码进行散列
  RedirectFromLoginPage   使用返回重定向到Login页面前的原始页面
  RedirectToLoginPage    将用户请求重定向到Login页面
  RenewTicketIfOld    用于更新身份验证cookie的过期时间
  SetAuthCookie     创建和发布身份验证Cookie
  SignOut               移除身份验证Cookie并同时使用户登出应用程序

7、使用User类
通过Page.User或HttpContext.User属性可以获取当前用户的用户信息。

2011-5-4  10:07:23 danny
分享到:
评论

相关推荐

    谷歌身份验证器插件,谷歌身份验证器插件,谷歌身份验证器插件,谷歌身份验证器插件谷歌身份验证器插件

    谷歌身份验证器是一款用于增强在线安全的工具,尤其在谷歌浏览器环境下使用广泛。这款插件主要功能是提供两步验证(2-Step Verification)服务,为用户的账户添加额外的安全层。两步验证是一种安全措施,它要求用户...

    O365 EWS模拟角色配置(新式身份验证)

    本指南将介绍如何在新式身份验证环境下为Exchange Online配置EWS模拟角色,以便服务账户可以代表其他用户执行操作。 首先,我们需要进行环境准备。确保在具有管理员权限的PowerShell环境中运行以下步骤: 1. 更改...

    解决连接无法继续,因为未启用身份验证,并且远程计算机需要启用身份验证以进行连接.docx

    这个错误通常表明远程计算机已经启用了身份验证要求,但你的本地计算机没有设置相应的身份验证策略,或者RDP客户端未配置为使用必要的安全层。Windows RDP默认情况下要求使用网络级别身份验证(Network Level ...

    基于forms 的身份验证例子源代码

    5. **web.config**: 这是应用程序的配置文件,其中定义了身份验证和授权规则。对于Forms身份验证,你需要在`&lt;system.web&gt;`部分设置`authentication`和`authorization`元素。例如,`&lt;authentication mode="Forms"&gt;`...

    PPP PAP验证功能配置 路由器配置

    这意味着,当PPP连接建立时,将使用system域中的本地用户进行身份验证。 3. **链路协议和验证模式**:在接口配置中明确指定了链路协议为PPP,并且配置了PAP验证模式。这是实现双向PAP验证的关键步骤之一。 通过...

    WCF通过消息拦截进行身份验证

    2. **配置服务和客户端**:在服务和客户端的配置文件中,将自定义行为添加到适当的行为集合,并指定使用自定义的身份验证机制。这可以通过修改`behaviors`节和添加`behaviorConfiguration`属性来完成。 3. **处理...

    vSphere 身份验证(VMware vSphere 7.0,VMware ESXi 7.0,vCenter Server 7

    【vSphere 身份验证详解】 vSphere 是 VMware 提供的一种虚拟化管理平台,它包含了 VMware ESXi(轻量级操作系统)和 vCenter Server(中央管理工具)。在 vSphere 7.0 中,身份验证机制是确保数据中心安全的重要...

    SQLSERVER身份验证登录不上

    SQLSERVER身份验证登录不上 SQLSERVER2005 解决 Windows 身份验证和 SQLSERVER 身份验证登录不上的问题是一个常见的问题。正如标题所示,本文将讨论两种身份验证登录不上的问题及其解决方法。 一、Windows 身份...

    JAAS 身份验证技术入门

    4. **身份验证**:LoginModule完成身份验证后,会创建一个或多个Principal对象,并将其添加到Subject中,表示认证成功。 5. **授权**:一旦Subject通过身份验证,就可以基于Subject的权限执行授权操作,决定用户...

    为XP远程连接增加网络身份验证

    下面将详细介绍如何为Windows XP SP3系统配置网络级身份验证。 #### 实现原理 Windows XP SP3本身具备支持NLA的能力,但是默认情况下这项功能未被启用。为了激活该功能,需要通过修改注册表来开启必要的组件和服务...

    windows远程桌面连接时,显示发生身份验证错误,给函数提供的身份无效.docx

    在使用Windows远程桌面连接时,有时可能会遇到一个棘手的问题,即显示“发生身份验证错误,给函数提供的身份无效”。这个错误通常是由于安全更新或安全策略的要求,特别是涉及到凭据安全支持提供程序协议(CredSSP)...

    forms身份验证

    在本教程中,我们将深入探讨Forms身份验证的工作原理、配置过程以及相关的代码实现。 1. **Forms身份验证概述** Forms身份验证是ASP.NET中的默认身份验证方法,适合不需要域控制器或活动目录的环境。它通过...

    IIS 6.0入门及进阶系列课程之九:理解IIS 6.0中的身份验证

    为了深入了解IIS 6.0的身份验证,可以通过观看"msft110905vxpm.wmv"这个视频文件,它可能包含详细的演示和讲解,帮助你更好地理解和配置IIS的身份验证机制。 总之,理解并正确配置IIS 6.0的身份验证对于确保网站和...

    下载增强型身份验证插件.txt

    根据提供的文件信息“下载增强型身份验证插件.txt”及其描述“虚拟化WEB登录下载增强型身份验证插件”,我们可以深入探讨相关知识点,包括增强型身份验证插件的重要性、工作原理以及如何在虚拟化环境中实施。...

    SMTP客户端未通过身份验证等多种错误解决方案分享

    在使用SMTP客户端发送邮件时,可能会遇到多种错误,特别是涉及到安全性和身份验证的问题。以下是一些常见的错误及其解决方案: 错误一:SMTP 服务器要求安全连接或客户端未通过身份验证(5.7.1 Client was not ...

    使用加密狗进行身份验证,加密狗验证失败怎么办,C#

    4. **身份验证逻辑**:在应用程序启动时,通过读取类与加密狗通信,尝试获取必要的认证信息。如果成功,应用程序继续运行;如果失败,通常会显示错误信息并阻止程序的执行。 5. **异常处理**:在编程过程中,要处理...

Global site tag (gtag.js) - Google Analytics