• IIS身份验证知识摘录


    IIS 身份验证

    ASP.NET 身份验证分为两个步骤。首先,Internet 信息服务 (IIS) 对用户进行身份验证,并创建一个 Windows 令牌来表示该用户。IIS 通过查看 IIS 元数据库设置,确定应该对特定应用程序使用的身份验证模式。如果 IIS 配置为使用匿名身份验证,则为 IUSR_MACHINE 帐户生成一个令牌并用它表示匿名用户。然后,IIS 将该令牌传递给 ASP.NET。

    其次,ASP.NET 执行自己的身份验证。所使用的身份验证方法由 authentication 元素的 mode 属性指定。以下身份验证配置指定 ASP.NET 使用 FormsAuthenticationModule 类:

    <authentication mode="Forms" />

    注 由于窗体身份验证不依赖于 IIS 身份验证,因此如果要在 ASP.NET 应用程序中使用窗体身份验证,则应该在 IIS 中为应用程序配置匿名访问

     

    forms 验证

    ASP.NET 窗体身份验证在 IIS 身份验证完成后发生。可以使用 forms 元素配置窗体身份验证。

    创建身份验证 Cookie

    通过 FormsAuthentication 类创建身份验证 Cookie,如下所示。用户经过验证后,FormsAuthentication 类在内部创建一个 FormsAuthenticationTicket 对象,方法是指定 Cookie 名、Cookie 版本、目录路径、Cookie 颁发日期;Cookie 到期日期、是否应该保留 Cookie,以及用户定义的数据(可选)。

    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
            "userName",
            DateTime.Now,
            DateTime.Now.AddMinutes(30), // value of time out property
            false, // Value of IsPersistent property
            String.Empty,
            FormsAuthentication.FormsCookiePath);

    接下来,如果 forms 元素的 protection 属性设置为 All 或 Encryption,则窗体身份验证使用 Encrypt 方法对窗体身份验证票进行加密和签名。

    string encryptedTicket = FormsAuthentication.Encrypt(ticket);

    ------------------------------

    用户登录的过程大致是这样的:
    1. 检查用户提交的登录名和密码是否正确。
    2. 根据登录名创建一个FormsAuthenticationTicket对象。
    3. 调用FormsAuthentication.Encrypt()加密。
    4. 根据加密结果创建登录Cookie,并写入Response。
    在登录验证结束后,一般会产生重定向操作, 那么后面的每次请求将带上前面产生的加密Cookie,供服务器来验证每次请求的登录状态。

    每次请求时的(认证)处理过程如下:
    1. FormsAuthenticationModule尝试读取登录Cookie。
    2. 从Cookie中解析出FormsAuthenticationTicket对象。过期的对象将被忽略。
    3. 根据FormsAuthenticationTicket对象构造FormsIdentity对象并设置HttpContext.User
    4. UrlAuthorizationModule执行授权检查。

     

    参考

    http://www.cnblogs.com/winnerzone/archive/2007/06/29/800225.html

    http://www.cnblogs.com/fish-li/archive/2012/04/15/2450571.html

  • 相关阅读:
    lamp环境安装二
    ubuntu14.04 sublime 出错
    lamp环境安装一
    jsp(Java Server Pages)和js(JavaScript)的区别:
    form表单验证jquery
    数据库分离 脱机
    数据绑定ds.ReadXml(stream);
    自定义类型转化
    temp
    一般处理程序获得一个链接返回的值
  • 原文地址:https://www.cnblogs.com/shijun/p/4153678.html
Copyright © 2020-2023  润新知