zoukankan      html  css  js  c++  java
  • Asp.net身份认证记录

    基础知识
      身份标识在客户端主要是两个存储位置:
        cookie 常用
        url 很少用 url作为cookie禁用的备选方案
        form 几乎不用 很麻烦,每次请求都必须是form提交方式
        authorization 很少用,header.authorization里面存的是base64的明文数据,不安全,一般在路由器或简单文档浏览上会用身份认证模式,因为简单方便

    普通登录,自己登录,验证授权
      OAuth2.0, 一个通用的认证授权服务,主要提供给app的api。特别是对于数据访问调用的情况。例如转发微博,但这个滥用比较危险
      OpenID , 通用的认证服务,用来统一登录功能的。网站A支持X的OpentID,则可以在登录时在X登录后拥有一个OpenId标识,这个标识A也是认可的身份标识,两方的数据并不通用,
      SSO, 单点登录 ,统一认证,授权的web服务。登录后可以有数据互通。

    net认证机制
      FORM身份验证, 依赖Cookie或URL中的标识
      集成WINDOWS验证 适合内联网(局域网)用,依赖于IIS
      Basic基础认证 将票据信息保存在head.Authorization里,跳转时必须url传送,不能自动携带,安全新低
      Digest摘要认证 客户端和服务器端 约定加密方式,传送单向加密信息摘要,服务端同样加密来验证

    服务器端的session数据存储位置为两种
      客户端,存储在cookie中,每次请求发送给服务器,解析后在后台代码中使用,客户流量大点,安全性低些,服务器内存占用低些
      服务器端,存储在服务器内存中,内存占用高一些,安全性高,流量低些

     

    Asp.Net身份认证--参考 http://tech.it168.com/a2012/0417/1338/000001338130_all.shtml
      认证:在Asp.Net管线中用AuthenticateRequest事件
        构造HttpContext.User对象
        由FormsAuthenticationModule 实现

      授权:在Asp.Net管线中用AuthorizeRequest事件
        检查授权,重定向
        由UrlAuthorizationModule实现(此moudule结合membership等)

      登陆:FormsAuthentication.SetAuthCookie() 方法,是默认的设定登陆票据方法,只有有一个标识,没有其他信息
        设定Cookie并加密

      注销:FormsAuthentication.SignOut() 方法
        清理Cookie标识

      判断:Request.IsAuthenticated判断是否登陆
        检查HttpContext.User,context.User.Identity,context.User.Identity.IsAuthenticated

      过期:FormsAuthenticationTicket为票据基类
        票据基类过期时间,SlidingExpiration=true, 则会二者任何一个过期就状态无效
        Cookie过期时间

      自定义Froms认证
        1.自定义用户信息类CustomerUser,实现IPrincipal接口
        2.登陆时构建FormsAuthenticationTicket票据,
          将CustomerUser实例作为Data传入
          加密字符串,FormsAuthentication.Encrypt(ticket)
          创建Cookie,名称=FormsAuthentication.FormsCookieName,
          写入Cookie
        3.Global.asax中加入事件处理
          Application_AuthenticateRequest事件
            将Cookie取出,解密,构建Context.User对象

      多台服务器使用Form认证
        默认情况随机密钥是本机生成存储在本地安全机构
        多台通用需要配置密钥
        <machineKey decryption="Auto" [Auto | DES | 3DES | AES] decryptionKey="AutoGenerate,IsolateApps" />
        decryption未加密算法

      MVC的Form验证一致,不过授权一般不再用了,改用过滤属性标识

  • 相关阅读:
    UVa 1151 Buy or Build【最小生成树】
    UVa 216 Getting in Line【枚举排列】
    UVa 729 The Hamming Distance Problem【枚举排列】
    HDU 5214 Movie【贪心】
    HDU 5223 GCD
    POJ 1144 Network【割顶】
    UVa 11025 The broken pedometer【枚举子集】
    HDU 2515 Yanghee 的算术【找规律】
    Java基本语法
    Java环境变量,jdk和jre的区别,面向对象语言编程
  • 原文地址:https://www.cnblogs.com/heroy/p/5387972.html
Copyright © 2011-2022 走看看