一次性弄清楚Authentication&Authorization以及CookieSessionToken

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

不出意外情况,我想这是一个绝大多数人都会混淆的问题。首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。

说简单点就是:

稍微正式点(啰嗦点)的说法就是:

这两个一般在我们的系统中被结合在一起使用,目的就是为了保护我们系统的安全性。

Cookie有时也用其复数形式Cookies,存储类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。

Cookie特点:

Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。

Cookie主要用于下面三个目的:

Cookie应用:

下面是Cookie的一些应用案例:

在计算机中,尤其是在网络应用中,通常称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。

Session的主要作用就是通过服务端记录用户的状态。用于保持状态的基于Web服务器的方法。Session允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象。

Session的一些应用案例:

由于HTTP协议无状态的缺陷。WEB的设计者们提出了Cookie和Session两种解决机制。通过对两者的比较分析,指出了它们的区别与联系。

5.Session实例是轻量级的,所谓轻量级:是指他的创建和删除不需要消耗太多资源;

2.CORS(跨域资源共享):Session状态使用范围的局限性,当一个用户从一个网站访问到另外一个网站时,这些Session信息并不会随之迁移过去。

3.存在Cookie的依赖性,实际上客户端的Session信息是存储在Cookie中的,如果客户端完全禁用掉了Cookie功能,也就不能享受到了Session提供的功能了。

4.每次认证用户发起请求时,服务器需要去创建一个记录来存储信息。当越来越多的用户发请求时,内存的开销也会不断增加;

安全性相对较低;

1.Cookie捕获/重放;

2.恶意Cookies;

3.会话定置(SessionFixation)攻击;

4.跨站请求伪造(Cross-SiteRequestForgery,简称CSRF)攻击;

安全性相对较高;

1.web服务器防护;

2.主机安全防护;

3.跨站请求伪造(Cross-SiteRequestForgery,简称CSRF)攻击;

因为创建Session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以过度使用Session变量将会导致代码可读性降低,使项目维护困难。

打个比方:浏览器就好像一个要去银行开户的人,而服务器就好比银行,这个要去银行开户的人这个时候显然没有帐号(SessionID),所以到银行后,银行工作人员问有没有帐号,他说没有,这个时候银行就会为他开通一个帐号。所以可以这么说,每次打开一个新的浏览器去请求的一个页面的时候,服务器都会认为,这是一个新的请求,他为你分配一个新的SessionID。

基于以上问题,于是有人就会思考,服务器为什么要保存这些信息呢,只让每个客户端去保存该多好?服务端只需把关好验证即可,因此在这种情况下,Token应用而生。

Token是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回Token给前端。前端可以在每次请求的时候带上Token证明自己的合法地位。

说到Token我们不得不谈JWT,Why...

JWT是JSONWebToken的缩写,是目前最流行的跨域认证解决方案。

互联网服务离不开用户认证。一般流程是下面这样。

这种模式的问题在于,扩展性(scaling)不好。单机当然没有问题,如果是服务器集群,或者是跨域的服务导向架构,就要求session数据共享,每台服务器都能够读取session。

JWT的原理是,服务器认证以后,生成一个Base64URL编码后的JSON对象,发回给用户,JSON明文信息如下(后面叙述)。

以后,用户与服务端通信的时候,都要发回这个JSON对象。服务器完全只靠这个对象认定用户身份。为了防止用户篡改数据,服务器在生成这个对象的时候,会加上签名(详见后文)。

服务器就不保存任何session数据了,也就是说,服务器变成无状态了,从而比较容易实现扩展。

{"sub":"1234567890","name":"chait","admin":true}注意:JWT默认是不加密的,任何人都可以读到,所以不要把秘密信息放在这个部分。Signature(签名)首先,需要指定一个密钥(secret),这个密钥只有服务器才知道,不能泄露给用户。然后,使用Header里面指定的签名算法(默认是HMACSHA256),按照下面的公式产生签名:

HMACSHA256(base64UrlEncode(header)+"."+base64UrlEncode(payload),secret)算出签名以后,把Header(Base64URL编码)、Payload(Base64URL编码)、Signature三个部分拼成一个字符串,每个部分之间用"点"(.)分隔,就可以返回给用户。

前面提到,Header和Payload串型化的算法是Base64URL。

这个算法跟Base64算法基本类似,但有一些小的不同,区别如下:

JWT作为一个令牌(token),有些场合可能会放到URL(比如api.example.com/token=xxx)。Base64有三个字符+、/和=,在URL里面有特殊含义,所以要被替换掉:=被省略、+替换成-,/替换成_。

你可以把它放在Cookie里面自动发送,但是这样不能跨域,针对跨域提供两种方案:

(1)JWT默认是不加密,但也是可以加密的。生成原始Token以后,可以用密钥再加密一次。(2)JWT不加密的情况下,不能将秘密数据写入JWT。(3)JWT不仅可以用于认证,也可以用于交换信息。有效使用JWT,可以降低服务器查询数据库的次数。(4)JWT的最大缺点是,由于服务器不保存session状态,因此无法在使用过程中废止某个token,或者更改token的权限。也就是说,一旦JWT签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。(5)JWT本身包含了认证信息,一旦泄露,任何人都可以获得该令牌的所有权限。为了减少盗用,JWT的有效期应该设置得比较短。对于一些比较重要的权限,使用时应该再次对用户进行认证。(6)为了减少盗用,JWT不应该使用HTTP协议明码传输,要使用HTTPS协议传输。

虽然基于Token的身份验证实现的方式很多,但大致过程如下:

每一次请求都需要Token。Token应该在HTTP的头部发送从而保证了Http请求无状态。我们也需要设置服务器属性【Access-Control-Allow-Origin:*】来让服务器能接受到来自所有域的请求。

需要注意的是,在ACAO头部指定*时,不得带有像HTTP认证,客户端SSL证书和cookies的证书。

执行流程如下:

执行流程说明:

当我们在程序中认证了信息并取得token之后,我们便能通过这个token做许多的事情。我们甚至能基于创建一个基于权限的token传给第三方应用程序,这些第三方程序能够获取到我们的数据(当然只限于该token被允许访问的数据)。

THE END
1.过滤器路径/和/*区别JAVA之家TY过滤器路径/和/*区别 分类: Web 好文要顶 关注我 收藏该文 微信分享 JAVA之家TY 粉丝- 8 关注- 7 +加关注 0 0 升级成为会员 ? 上一篇: Layui对话框的提示图标 ? 下一篇: 正则中文和字母数字混合 posted @ 2020-06-12 19:39 JAVA之家TY 阅读(667) 评论(0) 编辑 收藏 举报 ...https://www.cnblogs.com/java-ty/p/13109764.html
2.Hbase过滤器使用如果column_a的单元值被更改为value_new,过滤过程中发现与设定的单元值过滤条件不符,这一行数据将会被全部过滤掉。 2,SingleColumnValueExcludeFilter 单列值不包含过滤器:与单列值过滤器类似,只是无论是否符合过滤条件,返回的结果都不会包含指定的列。 构造函数: SingleColumnValueExcludeFilter(byte[] family, ...https://www.jianshu.com/p/18ef91fbb090
3.无菌室阳性对照室微生物限度室效价室等等区别7、尘埃粒子计数仪)检测尘埃粒径0.5m的粒数不得超过3.5个/升,5m的粒数为0,空气流速应0.35m/s,可根据无菌状况必要时置换过滤器。阳性对照和限度室的区别:功能上不一样,硬件上应该是一样的。限度室主要是做限度检查的即规定量样品中含菌量。阳性对照室是做阳性对照的,和一些加菌试验或检测。 限度室是提供一...https://www.renrendoc.com/paper/212112155.html
4.细胞培养板的选择注意每一小瓶的量不要太满,若20ml的瓶子,只装15ml可,若太满,放于-2度有可能会将瓶子弄碎,因冻后体积增加。(我就有这个教训) 另外烧杯,小瓶、移液管都要灭菌处理的,泡酸高压什么的。我们用的是一种用注射器过滤的过滤器,一次性的。一个能最多有效 过滤200ml。 http://m.whb-bio.com/nd.jsp?id=33&id=33
5.HEPA过滤器与ULPA超过滤器的区别ULPA超过滤网,ULPA是在HEPA的基础上经进一步加强了HEPA的过滤效果,ULPA对0.3微米以上的微粒子的过滤效率达到99.99%以上。ULPA与HEPA相比,滤料结构更紧凑、过滤效率更高。ULPA过滤器过滤面积更大,容尘能力更强。 当HEPA过滤器达到HEPA标准的过滤网,对于0.1微米和0.3微米的有效率达到99.998%,HEPA过滤器特点就是具有无缝...https://www.chem17.com/tech_news/detail/1380758.html
1.拦截器与过滤器的区别,在理解/和/*的区别拦截器与过滤器的区别,在理解/ 和 /* 的区别 过滤器: 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些...https://blog.csdn.net/code_mzh/article/details/107196935
2.生物滤池和流化床有什么区别25. 筛网过滤器的类型很多,有旋转式、振动式、转鼓式等。 26. 沉淀是固液分离或液液分离的过程。 27. 悬浮物在水中的沉淀可分为四种基本类型:自由沉淀、絮凝沉淀。拥挤沉淀和压缩沉淀。 28. 沉淀池的形式按池内水流方向的不同,可分为平流式、竖流式、辐流式和斜流式四种。 https://www.cinmm.com/35191.html
3.双非本科跨专业5面京东,8600小时后收到通知,流下喜悦泪水(4)布隆过滤器原理 3、Mysql (1)三大范式,为什么用范式 (2)事务的四大特性,具体说一下 (3)隔离级别,分别解决什么问题 (4)说一下脏读 4、Java (1)collection集合 (2)ArrayList和linkedList的区别 (3)线程安全的有哪些 (4)synchronized 5、算法题:反转链表 ...https://maimai.cn/article/detail?fid=1632778078&efid=DWfu7WeSgiHv2qWOUabF1g
4.过滤隔板和与无隔板的区别在哪里?形成空气通道。 除了某些耐高温和高安全性要求的特殊场合,无隔板过滤器均可取代有隔板高效过滤器。https://www.to8to.com/ask/k7230192.html
5.SpringBoot面试突击之过滤器和拦截器区别详解java过滤器(Filter)和拦截器(Interceptor)都是基于 AOP(Aspect Oriented Programming,面向切面编程)思想实现的,用来解决项目中某一类问题的两种“工具”,但二者有着明显的差距,接下来我们一起来看+ 目录实现过滤器和拦截器首先,我们先来看一下二者在 Spring Boot 项目中的具体实现,这对后续理解二者的区别有很大的帮助。https://www.jb51.net/article/265166.htm
6.Spring学习笔记(8)一、实现原理区别 过滤器和拦截器 底层实现方式大不相同:过滤器是基于函数回调的,拦截器则是基于Java的反射机制(动态代理)实现的。 过滤器(Filter):它依赖于servlet容器。在实现上是基于函数回调。《Java过滤器Filter详解》 在我们自定义的过滤器中都会实现一个doFilter()方法,这个方法有一个FilterChain参数,而实际上...https://cloud.tencent.com/developer/article/1981326
7.过滤器和净水器的区别有哪些我们平时在家中或者是在公司都希望能够喝到健康的水源,健康的水源来源于过滤器以及净水器,用过滤器和净水器过滤过的水源都是比较健康和干净的,今天小编就来跟大家说一说过滤器和净水器的区别有哪些,希望可以给大家带来帮助。 一、过滤器和净水器的区别有哪些 1、过滤器是可以去除一些颗粒状的物体,但是不能够去除...https://m.jia.com/zixun/jxwd/943958.html
8.保安过滤器滤芯5um和1微米的区别是什么??保安过滤器滤芯滤芯5um和1微米的区别是过滤精度不同。 1微米 等于 2500目 等于 每英寸2500个筛孔 5um 等于 12500目 等于 每英寸12500个筛孔 当然在实际应用环境当中还需要考虑温度、腐蚀性等一系列其它实际生产环境中应该考虑到的问题,以此来选择不同过滤材料的滤芯。 https://www.china.cn/zixun/20220809/n155468.html
9.SpringCloud最全面试题整理,全是干货可以对路由指定 Predicate(断言)和 Filter(过滤器); 集成Hystrix的断路器功能; 集成Spring Cloud 服务发现功能; 易于编写的 Predicate(断言)和 Filter(过滤器); 请求限流功能; 支持路径重写。 45、Spring Cloud Gateway 与 Zuul的区别? Zuul 1.x,是一个基于阻塞 I/ O 的 API Gateway Zuul 1.x 基于...https://www.nowcoder.com/discuss/1044144