1、HTTP Basic认证

用户每次发送请求的时候,在请求头中携带能通过认证的身份信息;Authorization: <username>:<password>

1.1 交互过程

① 客户端发起请求,未携带身份信息的请求;

② 服务端返回401 Unauthorized状态,并在返回头中说明要用Basic方法进行认证:WWW-Authenticate:Basic;

③ 客户端发起请求,并在请求头中携带身份信息:Authorization:Basic password;

④ 服务端验证请求头中的身份信息,并相应地返回200或者403状态码;

⑤ 之后,客户端每次请求都在请求头中携带身份信息;

1.2 优缺点

优点:

简单,容易理解;

缺点:

不安全,认证身份用明文传输,需要配合https使用;

效率低,服务端处理请求的时候,每次都要验证身份信息:用户名、密码;

2、Session 认证

结合了session和cookie。服务端将本次会话信息以session对象的形式保存在服务端的内存、数据库或系统文件中,并将对应的session的对象ID值以cookie的形式返回给客户端。sessionID保存在客户端的cookie中。

是一种有状态的认证方法,服务端保存session对象,客户端以cookie形式保存sessionid。

2.1 交互过程

① 客户端在登录页面输入身份信息,如用户名、密码;

② 服务端验证身份信息,通过后生成一个session对象,保存到服务端,并将sessionid值以cookie的形式返回给客户端;

③ 客户端将接收到的sessionid保存到cookie中,并且之后的每次请求都在请求头中携带sessionid cookie;

④ 服务端从请求的cookie中获取sessionid,并查询其对应的session对象,从而获得身份信息;

⑤ 客户端退出本次会话后,客户端删除sessionid和cookie,服务端删除session对象;

⑥ 客户端重新登录,生成新的session对象和sessionid;

2.2 优缺点

优点:

较安全:客户端每次请求时无需发送身份信息,只需要发送sessionid;

较高效:服务端无需每次处理请求时验证身份信息,只需通过sessionid查询session对象;

缺点:

扩展性差:session对象保存在服务端,如果保存在多个服务器上,有一致性问题,如果保存在单个服务器上,无法适应用户增长;

基于cookie的sessionid不能跨域共享,同一用户的多个客户端不能共享sessionid;

基于cookie的sessionid容易被截获生成csrf攻击;

3、token认证

是一种无状态的认证方法,是SPA应用和APP经常使用的认证方法;

客户端首先将用户信息发送给服务端,服务端根据用户信息+私钥生成一个唯一的Token并返回给客户端。Token只保存在客户端,之后,客户端的每个请求头都携带token,而服务端只通过运算来验证用户;

HTTP身份认证的更多相关文章

  1. "用户增长"--快速身份认证实现用户增长的技术和产品方案

    "用户增长"--快速身份认证实现用户增长的技术和产品方案 1   引言 作为一个互联网产品,用户量的增长是一个非常重要的衡量指标. 这是一个集合了销售,市场,运营,技术的综合能力. ...

  2. 基于token的多平台身份认证架构设计

    基于token的多平台身份认证架构设计 1   概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格 ...

  3. .NET Web的身份认证

    百度一下”asp.net身份认证“,你会得到很多相关的资料,这些资料通常上来就会介绍诸如”Form认证“”Windows认证“等内容,而没有给出一个完整的流程.初学者对此往往一头雾水,我也曾经被坑过很 ...

  4. ABP源码分析四十二:ZERO的身份认证

    ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展.同时重写了ABP核心模块中的permission功能,以实现 ...

  5. RESTful Api 身份认证安全性设计

    REST是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 H ...

  6. ASP.NET MVC 身份认证

    身份认证的好处就是, 如果这个页面没有登录, 刷新后会自动跳到登录页要求登录,保证了应用程序的安全.而Forms 身份认证是web下最常用的,如何配置呢?见下(基于mvc 4) 1.在webconfi ...

  7. C#进阶系列——WebApi 身份认证解决方案:Basic基础认证

    前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想 ...

  8. 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证

    注:下载本文提到的完整代码示例请访问:How to authorization Angular 2 app with asp.net core web api 在ASP.NET Core中使用Angu ...

  9. 如何在ASP.NET Core中实现一个基础的身份认证

    注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ...

  10. 在ASP.NET Core中实现一个Token base的身份认证

    注:本文提到的代码示例下载地址> How to achieve a bearer token authentication and authorization in ASP.NET Core 在 ...

随机推荐

  1. VUE3+VITE 常见问题解决

    reactive解构最深的一层,失去响应性问题 pinia创建的store,使用结构失去响应性 reactive包裹后的对象 重新赋值失去响应性 无法动态引入图片 在computed中传参数 vue3 ...

  2. java中indexOf()获取指定次数的下标

    indexOf() :指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检查指定数量的字符位置 Java中提供了四中查找方法: int indexOf(String str) 返回第一 ...

  3. Delphi 自定义窗体类名

    原理就是覆盖原CreateParams函数,重写新CreateParams函数,在新CreateParams函数继承完之后马上修改Parames.WinClassName type TForm1 = ...

  4. mysql 导入问题排查

    ERR] 2006 - MySQL server has gone away -- 查询最大数 show global variables like 'max_allowed_packet'; -- ...

  5. A表某字段==B表某字段 更新A表的数据

    update mls_supplytask t1 -- 供应商认证任务 JOIN mls_sup_cert_report t2 -- 供应商认证报告 on t1.id = t2.certTaskId ...

  6. OS X Maven 安装与使用简介

    Java真的很重很复杂,连项目构建和编译都得专门拉出来学,这里整理一下在OS X上使用Maven的注意事项. 一.安装 [bash] 1.从http://maven.apache.org/downlo ...

  7. serializers序列化函数简单入门

    1. 创建Django项目和应用程序 首先,我们需要创建一个Django项目和一个Django应用程序.如果你已经有了Django项目和应用程序,请跳过这一步. $ django-admin star ...

  8. .NetCore【工作应用】Unity

    Unity Unity是一个IoC容器,用来实现依赖注入(Dependency Injection,DI),减少耦合 Unity安装 install-package Unity 使用 IUnityCo ...

  9. docker镜像原理(一)

    在理解什么是docker镜像之前我们需要搞懂虚拟机系统到底是怎么组成的如何实现的,docker中又是如何安装和使用虚拟机系统的,怎样可以高效灵活的切换系统发行版等问题 一.centos7系统长什么样 ...

  10. Web开发 学习 调试 调优

    目录 快捷操作 调试方法 基本调试方法 修改参数和请求重发 Chrome抓包分析 性能优化 安全 cURL请求 参考 参考:MDN 调试HTML 参考:什么是浏览器开发者工具? 参考:检查和编辑页面与 ...