什么是jwt

jwt的问题

jwt的是实践

https://www.pingidentity.com/en/company/blog/posts/2019/jwt-security-nobody-talks-about.html

OpenID+JWTs

我们之前提到过JWT在OpenID Connect中的使用。提供者向客户机发出身份令牌。该身份令牌包含有关用户与提供者的身份验证的信息。身份令牌是JWT令牌,使用提供者的私钥签名。

OpenID Connect花了很大力气来改进身份令牌的安全属性。例如,协议要求使用“exp”、“iss”和“aud”声明。此外,该令牌包含一个nonce来防止重放攻击。由于这些要求,滥用被盗的身份令牌变得非常困难,甚至不可能。

JWTs作为OAuth 2.0的access token

OAuth 2.0访问令牌是JWT的另一个很好的用例。这样的访问令牌允许客户机应用程序访问受保护的资源,比如API。OAuth 2.0访问令牌有两种形式:引用令牌和自包含令牌。

  • 引用令牌指向由授权服务器保存的服务器端元数据。引用令牌的功能类似于标识符,很像传统的会话标识符。
  • 自包含的令牌以JWT的形式出现。它包含作为有效负载的所有元数据。为了保护数据,发布方使用私钥签署令牌。

传统的OAuth 2.0令牌是承载令牌。如果一个人受到伤害,它可以被任何拥有它的人无限制地使用。被破坏的引用令牌可由授权服务器撤消。对于自包含的令牌,撤销要复杂得多。

因此,强烈建议尽可能缩短访问令牌的生命周期。分钟或小时的令牌生存期非常常见。不建议使用天或月的寿命。如果可能,短期访问令牌应该与refresh令牌结合使用,以提高安全性。

此外,规范中新增的内容通过引入拥有证明机制来处理承载令牌属性。

作为会话对象的JWTs

OpenID Connect和OAuth 2.0等协议积极尝试解决JWTs的弱点。不幸的是,我们还观察到许多将JWTs合并到其体系结构中的应用程序,而没有考虑到这些预防措施。

一个具体的示例是一个使用JWTs在客户机上存储授权状态的应用程序。这支持使用无状态后端,这使部署变得非常容易。

然而,这样的客户端令牌是承载令牌。没有适当的短生命期或撤销机制使这种情况非常脆弱。

token的类型:

https://leastprivilege.com/2015/11/25/reference-tokens-and-introspection/

session与jwt共同使用:

http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/

Stateless JWT: A JWT token that contains the session data, encoded directly into the token.
Stateful JWT: A JWT token that contains just a reference or ID for the session. The session data is stored server-side.
Session token/cookie: A standard (optionally signed) session ID, like web frameworks have been using for a long time. The session data is stored server-side.

https://cheatsheets.pragmaticwebsecurity.com/cheatsheets/jwt.pdf

jwt的思考的更多相关文章

  1. jwt 实践应用以及特殊案例思考

    JSON Web Token 是 rfc7519 出的一份标准,使用 JSON 来传递数据,用于判定用户是否登录状态. jwt 之前,使用 session 来做用户认证. 以下代码均使用 javasc ...

  2. spring cloud实战与思考(五) JWT之携带敏感信息

    需求: 需要将一些敏感信息保存在JWT中,以便提高业务处理效率. 众所周知JWT协议RFC7519使用Base64Url对Header和Payload的Json字符串进行编解码.A JWT is re ...

  3. spring cloud实战与思考(四) JWT之Token主动失效

    需求: JWT泄露.密码重置等场景下,需要将未过期但是已经不安全的JWT主动失效. 本文不再复述JWT的基础知识,不了解的小伙伴可以自行Google一下.这里主要是针对以上需求聊一聊解决方案.如果服务 ...

  4. 关于JWT(Json Web Token)的思考及使用心得

    什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(php 后端实现JWT认证方法一般用来做轻量级的API鉴权.由于许多API接口设计是遵循无状态的(比如 ...

  5. 关于Jwt的一些思考

    在使用jwt的过程中发现了两个问题续期和退出的问题. 续期 因为jwt的token在签发之后是有过期时间的,所以就存在管理这个过期时间的问题.我看网上有提出解决方案的大致有下面几个 每次更新过期时间, ...

  6. 看图理解JWT如何用于单点登录

    单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...

  7. js文件被浏览器缓存的思考

        我们的用户量大,修改js文件后,用户反馈登录出现问题.实际上刷新一下就没事了.就是因为用户的浏览器使用的还是本地缓存的js代码.   强制刷新一般就会重新去服务器获取新的js代码.但不能让用户 ...

  8. spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法

    spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法 前言 本篇接着<spring boot / cloud ...

  9. 初识SSO与JWT

    以前在学校做项目的时候,登录注销,权限验证这些事情,都是交给框架来做的,每次都是把这个架子拿到项目中去,也没有真正思考过它的过程,总觉的这些都是十分简单的逻辑. 然而来公司工作之后,慢慢觉得登录和权限 ...

随机推荐

  1. UE4的联网系统研究

    1. 物体复制 具体细节可参考官网内容:http://api.unrealengine.com/CHN/Gameplay/Networking/index.html 这里只挑部分点来展开. 首先,分为 ...

  2. 【Beta】Scrum Meeting 7 & 与助教谈话

    前言 Beta阶段第7次会议在5月12日22:00由PM在大运村一公寓三层召开, 时长30min. 任务分配 姓名 今日任务 明日任务 困难 周博闻 修复修改密码问题#54添加主页公告栏 #57(调整 ...

  3. mpvue中按需引入echarts

    大家都知道小程序文件大小不能超过2M, 在项目中引入echarts后,文件大小远远超出2M了.因为echarts文件默认是包含所有图表代码的,所以文件体积会比较大.解决办法如下: 安装 首先我们先安装 ...

  4. 【转】PostgreSQL与MySQL比较

    转自:https://www.cnblogs.com/geekmao/p/8541817.html PostgreSQL与MySQL比较   特性 MySQL PostgreSQL 实例 通过执行 M ...

  5. 【小实现】css after+border实现标签半菱形

    <!DOCTYPE html> <html lang="en"> <head> <style> .span-line-begin { ...

  6. odoo开发笔记 -- docker容器打包到另一台服务器部署异常

    场景描述: odoo.conf文件指定了数据库配置,如果docker打包的时候,没注意,新环境启动该镜像,会导致并没有连接本地的数据库,如果你配置文件中的数据库地址,当前这台服务器也可以访问到,那么问 ...

  7. 嵌入式开发之内核内存异常排查---关闭oom killer

    通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解.uptimedmesg | tailvmstat 1mpstat -P ALL 1pidstat 1iostat -xz 1free ...

  8. spark 监控--WebUi、Metrics System(转载)

    转载自:https://www.cnblogs.com/barrenlake/p/4364644.html Spark 监控相关的部分有WebUi 及 Metrics System; WebUi用于展 ...

  9. CentOS7下安装Mariadb 10.3.17

    1. install lsb packagesudo yum install -y redhat-lsb 2.install net-tools packagesudo yum install -y ...

  10. 容器docker快速入门

    一.概述 什么是docker docker是一个应用容器引擎,通俗的讲,docker和我们的vm虚拟机有很多相似的地方,当然也有很多不同的地方 Docker理念是将应用及依赖包打包到一个可移植的容器中 ...