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验证一致,不过授权一般不再用了,改用过滤属性标识

  • 相关阅读:
    dijkstra最短路算法--模板
    k8s ansible自动化部署
    k8s persistenvolume 动态供给
    k8s 1.12二进制部署
    k8s 1.14.1 coredns部署
    django单表操作,增、删、改、查
    数据库基础
    TCP/IP协议 socket
    面向对象的程序设计
    模块
  • 原文地址:https://www.cnblogs.com/heroy/p/5387972.html
Copyright © 2011-2022 走看看