首页 > 其他分享 >#yyds干货盘点#JSON Web Tokens 是如何工作的

#yyds干货盘点#JSON Web Tokens 是如何工作的

时间:2023-03-18 22:32:59浏览次数:52  
标签:yyds 令牌 Web JWT 信息 Tokens 访问 应用程序 授权

在用户权限校验的过程中,一个用户如果使用授权信息成功登录后,一个 JSON Web Token 将会返回给用户端。

因为返回的令牌包含有授权信息,应用程序应小心保存这些授权信息,以避免不必要的安全问题。你的应用程序在不需要授权信息的时候,应用程序不应该保留授权成功后返回的令牌。

应用程序也不应该将这些敏感信息保存在浏览器中,因为这样会更加容易导致信息泄漏,请参考链接:​​https://cheatsheetseries.owasp.org/cheatsheets/HTML5_Security_Cheat_Sheet.html#local-storage​​ 中的内容。

在任何时候,如果用户希望访问一个受保护的资源或者路由的时候,用户应该在访问请求中包含 JWT 令牌。通常这个令牌是存储在 HTTP 请求的头部信息,一般会使用 Authorization 字段,使用 Bearer 模式。

Http 头部发送给后台所包含的内容看起来如下所示:

Authorization: Bearer <token>

在某些情况下,可以使用无状态的授权机制。服务器上受保护的路由将会检查随着访问提交的 JWT 令牌。如果令牌是有效的,用户将会被允许访问特定的资源。

如果 JWT 令牌中包含有必要的信息,服务器的服务端将不需要再次对数据库进行查询以加快访问速度。当然,不是所有的时候都可以这样进行处理。

当令牌随着头部中的 Authorization 信息一同发送,那么我们不需要使用 cookies,因此跨域访问(Cross-Origin Resource Sharing (CORS))也不应该成为一个问题。

下面的示例图展示了JWT 是如何被获得的,同时也展示了 JWT 是如何被使用来访问服务器 API 的。

#yyds干货盘点#JSON Web Tokens 是如何工作的_html

  1. 应用程序或者客户端,通过对授权服务器的访问来获得授权。这个可能有不同的授权模式。例如,通常我们可以使用 OpenID Connect 提供的标准的授权地址来进行授权,请参考链接:​​http://openid.net/connect/​​。通常来说一个标准的授权地址为 /oauth/authorize,并且使用下面类似的标准授权流程,请参考链接:​​http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth​​ 中的内容。
  2. 当授权完成后,授权服务器将会返回访问令牌(access token)给应用。
  3. 应用使用获得的令牌来访问收到保护的资源(例如 API)等。

需要注意的是,通过使用了签名的令牌,尽管用户可能没有办法对使用的令牌进行修改,但是令牌中包含的所有信息将会暴露给用户或者其他的应用。因此,你不应该在你的令牌中存储密钥或者任何的敏感信息。

标签:yyds,令牌,Web,JWT,信息,Tokens,访问,应用程序,授权
From: https://blog.51cto.com/u_11365839/6129832

相关文章

  • #yyds干货盘点#JSON Web Tokens 是如何工作的
    在用户权限校验的过程中,一个用户如果使用授权信息成功登录后,一个JSONWebToken将会返回给用户端。因为返回的令牌包含有授权信息,应用程序应小心保存这些授权信息,以避免不......
  • #yyds干货盘点#对于babel的一些理解
    Babel是一个JavaScript编译器Babel是一个工具链,主要用于将采用ECMAScript2015+语法编写的代码转换为向后兼容的JavaScript语法,以便能够运行在当前和旧版本的浏览器......
  • RHEL 7配置HAProxy实现Web负载均衡
    本文将简单介绍使用HAProxy实现web负载均衡,主要内容包括基于权重的轮询、为HAProxy配置https、配置http重定向为https、配置HAProxy使用独立日志。一、测试环境HAProxy:......
  • 旁挂式三层组网-隧道转发模式web配置
    拓扑图相关命令1.AR12.AR23.LSW14.LSW25.AC16.Cloudweb配置在ac1上配置与cloud相关网段的vlan1,同时开启HTTP服务在浏览器上登入https://网段......
  • webpack原理(1):Webpack热更新实现原理代码分析
    热更新,主要就是把前端工程文件变更,即时编译,然后通知到浏览器端,刷新代码。服务单与客户端通信方式有:ajax轮询,EventSource、websockt。客户端刷新一般分为两种:整体页面刷新,......
  • webpack原理(2):ES6 module在Webpack中如何Tree-shaking构建
    Tree-shaking最早由​​打包工具Rollup​​ 提出DCE作用于模块内(webpack的DCE通过UglifyJS完成),而Tree-shaking则是在打包的时候通过模块之间的信息打包必须的代......
  • webpack原理(3):Tapable源码分析及钩子函数作用分析
    webpack本质上是一种事件流的机制,它的工作流程就是将各个插件串联起来,而实现这一切的核心就是Tapable,webpack中最核心的负责编译的Compiler和负责创建bundles的Compilation......
  • webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载
    webpackensure相信大家都听过。有人称它为异步加载,也有人说做代码切割,那这个家伙到底是用来干嘛的?其实说白了,它就是把js模块给独立导出一个.js文件的,然后使用这个模块的时......
  • webpack性能优化(2):splitChunks用法详解
    之前写的《​​webpack性能优化(0):webpack性能优化概况-优化构建速度​​​》、《​​webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载​​》如果使用vue-cli,默认......
  • PentestLab-web安全SQL注入-EXP6
    我们打开靶机,选择“SQL Injections”选择“Example6”观察页面我们使用工具测试参数为-u"http://192.168.29.148/sqli/example6.php?id=2"--dumpall开始测试没有发现我......