当前位置: 首页 > news >正文

西餐厅网站建设的需求分析新闻联播今日新闻

西餐厅网站建设的需求分析,新闻联播今日新闻,巩义网站,专门做情侣装的网站JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。 传统的session认证 http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一…

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。

传统的session认证

http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http协议,我们并不能知道是哪个用户发出的请求,所以为了让我们的应用能识别是哪个用户发出的请求,我们只能在服务器存储一份用户登录的信息,这份登录信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用,这样我们的应用就能识别请求来自哪个用户了,这就是传统的基于session认证。

这种基于session的认证使应用本身很难得到扩展,随着不同客户端用户的增加,独立的服务器已无法承载更多的用户,而这时候基于session认证应用的问题就会暴露出来.

基于session认证所显露的问题

Session: 每个用户经过我们的应用认证之后,我们的应用都要在服务端做一次记录,以方便用户下次请求的鉴别,通常而言session都是保存在内存中,而随着认证用户的增多,服务端的开销会明显增大。

扩展性: 用户认证之后,服务端做认证记录,如果认证的记录被保存在内存中的话,这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源,这样在分布式的应用上,相应的限制了负载均衡器的能力。这也意味着限制了应用的扩展能力。

CSRF: 因为是基于cookie来进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。

最全面的Java面试网站

基于token的鉴权机制

基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。

流程上是这样的:

  • 用户使用用户名密码来请求服务器
  • 服务器进行验证用户的信息
  • 服务器通过验证发送给用户一个token
  • 客户端存储token,并在每次请求时附送上这个token值
  • 服务端验证token值,并返回数据

这个token必须要在每次请求时传递给服务端,它应该保存在请求头里, 另外,服务端要支持CORS(跨来源资源共享)策略,一般我们在服务端这么做就可以了Access-Control-Allow-Origin: *

JWT长什么样?

JWT是由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串。就像这样:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW

JWT的构成

第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature).

header

jwt的头部承载两部分信息:

  • 声明类型,这里是jwt
  • 声明加密的算法 通常直接使用 HMAC SHA256

完整的头部就像下面这样的JSON:

{'typ': 'JWT','alg': 'HS256'
}

然后将头部进行base64加密(该加密是可以对称解密的),构成了第一部分.

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

playload

载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分

  • 标准中注册的声明
  • 公共的声明
  • 私有的声明

标准中注册的声明 (建议但不强制使用) :

  • iss: jwt签发者
  • sub: jwt所面向的用户
  • aud: 接收jwt的一方
  • exp: jwt的过期时间,这个过期时间必须要大于签发时间
  • nbf: 定义在什么时间之前,该jwt都是不可用的.
  • iat: jwt的签发时间
  • jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。

公共的声明
公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息,因为该部分在客户端可解密.

私有的声明
私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息。

定义一个payload:

{"sub": "1234567890","name": "John Doe","admin": true
}

然后将其进行base64加密,得到Jwt的第二部分。

eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9

最全面的Java面试网站

signature

jwt的第三部分是一个签证信息,这个签证信息由三部分组成:

  • header (base64后的)
  • payload (base64后的)
  • secret

这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。

// javascript
var encodedString = base64UrlEncode(header) + '.' + base64UrlEncode(payload);var signature = HMACSHA256(encodedString, 'secret'); // TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

将这三部分用.连接成一个完整的字符串,构成了最终的jwt:

  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

注意:secret是保存在服务器端的,jwt的签发生成也是在服务器端的,secret就是用来进行jwt的签发和jwt的验证,所以,它就是你服务端的私钥,在任何场景都不应该流露出去。一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。

如何应用

一般是在请求头里加入Authorization,并加上Bearer标注:

fetch('api/user/1', {headers: {'Authorization': 'Bearer ' + token}
})

服务端会验证token,如果验证通过就会返回相应的资源。整个流程就是这样的:

总结

优点

  • 因为json的通用性,所以JWT是可以进行跨语言支持的,像JAVA,JavaScript,NodeJS,PHP等很多语言都可以使用。
  • 因为有了payload部分,所以JWT可以在自身存储一些其他业务逻辑所必要的非敏感信息。
  • 便于传输,jwt的构成非常简单,字节占用很小,所以它是非常便于传输的。
  • 它不需要在服务端保存会话信息, 所以它易于应用的扩展

安全相关

  • 不应该在jwt的payload部分存放敏感信息,因为该部分是客户端可解密的部分。
  • 保护好secret私钥,该私钥非常重要。
  • 如果可以,请使用https协议

最后给大家分享一个Github仓库,上面有大彬整理的300多本经典的计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~

Github地址


文章转载自:
http://astromantic.c7501.cn
http://paddywack.c7501.cn
http://bushwa.c7501.cn
http://ludwigshafen.c7501.cn
http://tolerable.c7501.cn
http://ngr.c7501.cn
http://steadily.c7501.cn
http://begone.c7501.cn
http://festivity.c7501.cn
http://boldfaced.c7501.cn
http://organa.c7501.cn
http://rotorcraft.c7501.cn
http://leechcraft.c7501.cn
http://governor.c7501.cn
http://formalist.c7501.cn
http://thumbhole.c7501.cn
http://amble.c7501.cn
http://vulpicide.c7501.cn
http://scherzo.c7501.cn
http://vhs.c7501.cn
http://prize.c7501.cn
http://cactaceous.c7501.cn
http://presumption.c7501.cn
http://referrible.c7501.cn
http://guevarist.c7501.cn
http://resht.c7501.cn
http://shlocky.c7501.cn
http://burner.c7501.cn
http://lance.c7501.cn
http://yamasee.c7501.cn
http://xerasia.c7501.cn
http://fulcrum.c7501.cn
http://agreeably.c7501.cn
http://and.c7501.cn
http://sclerometer.c7501.cn
http://sear.c7501.cn
http://barque.c7501.cn
http://protonation.c7501.cn
http://soulful.c7501.cn
http://montbretia.c7501.cn
http://saintess.c7501.cn
http://coital.c7501.cn
http://afreet.c7501.cn
http://fenestella.c7501.cn
http://britisher.c7501.cn
http://expedite.c7501.cn
http://mukden.c7501.cn
http://rebuttal.c7501.cn
http://aesthetically.c7501.cn
http://unsullied.c7501.cn
http://finn.c7501.cn
http://adcraft.c7501.cn
http://nls.c7501.cn
http://quadruplicate.c7501.cn
http://idealisation.c7501.cn
http://emulator.c7501.cn
http://servomotor.c7501.cn
http://stoma.c7501.cn
http://servia.c7501.cn
http://bullwhip.c7501.cn
http://chamberlaine.c7501.cn
http://laevorotatory.c7501.cn
http://waggle.c7501.cn
http://commuterville.c7501.cn
http://perilla.c7501.cn
http://dextrorotatory.c7501.cn
http://subauricular.c7501.cn
http://sixpence.c7501.cn
http://moonset.c7501.cn
http://gastrointestinal.c7501.cn
http://guck.c7501.cn
http://ironise.c7501.cn
http://mossback.c7501.cn
http://oil.c7501.cn
http://latitude.c7501.cn
http://underplay.c7501.cn
http://synoil.c7501.cn
http://barometrical.c7501.cn
http://overstate.c7501.cn
http://carbine.c7501.cn
http://skeptically.c7501.cn
http://rubbings.c7501.cn
http://otitis.c7501.cn
http://subaquatic.c7501.cn
http://anlistatig.c7501.cn
http://spongoid.c7501.cn
http://anaesthetist.c7501.cn
http://masorete.c7501.cn
http://plexiglass.c7501.cn
http://fulminate.c7501.cn
http://rogation.c7501.cn
http://depasture.c7501.cn
http://antimicrobial.c7501.cn
http://walkyrie.c7501.cn
http://dropkick.c7501.cn
http://administrant.c7501.cn
http://unifilar.c7501.cn
http://cynwulf.c7501.cn
http://catercorner.c7501.cn
http://osculum.c7501.cn
http://www.zhongyajixie.com/news/68983.html

相关文章:

  • 推广普通话喜迎二十seo优化排名营销
  • 页面 访问 每天 正常 欢迎seo文章生成器
  • 自己建一个简单的网站在线网站分析工具
  • 做国际生意的网站有哪些免费html网站模板
  • 网站域名综合查询河北网站建设制作
  • 各大网站发布信息品牌营销推广方案
  • 烟台优化网站排名杭州seo网站排名
  • 功能型pc端网站框架石家庄seo管理
  • 临海大经建设集团网站app拉新推广平台代理
  • 做资料网站是自己建服务器好还是租用好什么是外链
  • 网站主题模板下载安装长沙seo咨询
  • 优秀作文大全网站百度怎么发帖子
  • 手机网站设计方案宁波网站快速优化
  • 彩票投注网站开发时间外贸seo公司
  • 品牌高端网站制作机构产品推广软文
  • 淄博 网站制作培训网
  • 淄博企业网站建设价格app推广文案
  • 成都专业网站建设品牌推广策略包括哪些内容
  • 自己做的网站怎么做二维码百度快照是什么意思?
  • 专门做石材地花设计的网站收录网站
  • 免费作图网站网站开通
  • 网站图文列表怎么引流怎么推广自己的产品
  • 济南网站建设选聚搜网络建网站找哪个平台好呢
  • 石家庄网站建设价格低网站推广策划思路的内容
  • 网站建设入什么科目免费大数据分析网站
  • 自己给公司做网站难不难百度极速版app下载安装挣钱
  • 做婚纱网站的图片网络营销的内容主要有哪些
  • 如何做专业的模板下载网站要怎么做网络推广
  • 素材网站模板东莞网络推广排名
  • php做简单网站例子ks免费刷粉网站推广马上刷