他们是什么,他们是如何工作的, 为什么你的应用程序需要他们 你登录到一个应用程序。
几秒钟后,你进入了——这个应用程序知道你是谁,你被允许做什么,并且在你剩下的会议中一直知道。
怎么会?
服务器没有要求您再次登录下一页 。
它没有在数据库里查过你 每次点击。
有些东西带着你的身份, 在大多数现代应用中, 有些东西是JWT的标志。
本条解释了JWT标志是什么,包含什么,为什么它们成为现代应用中认证的标准机制.
JWT令牌在令牌之前解决的问题,最常见的方法是服务器侧会话.
当您登录时, 服务器在内存或数据库中创建了会话记录, 指定它为ID, 并将该ID作为 cookie 发送给您的浏览器 。
在之后的每一个请求中,浏览器都会将饼干发回,服务器查看会话,找到您的用户数据,然后继续.
这样做是可行的,但它有局限性。
服务器必须存储和查询每个单项请求的会话数据.
如果在负载平衡器后面有多个服务器,它们都需要访问同一会话商店.
如果你正在构建一个移动应用程序或第三方API集成,cookie是尴尬的工作.
随着申请的日益普及,会议也成为了瓶颈。
JWT令牌背后的想法不同:不是将您的身份存储在服务器上并交给您取回钥匙,服务器直接给了您身份数据——以不可被篡改的方式包装.
JWT JWT代表什么 JSON Web Token。
它是一个紧凑自成一体的字符串,以任何系统都能独立读取和验证的格式,携带一个用户的信息——或一个应用程序所获得权限的信息.
JWT看起来像这样: 它没有默认加密——它只是被编码.
也就是说你可以解码并读取里面的内容.
由点分隔出的三个部分是头,有效载荷和签名.
什么JWT实际上包含 信头描述了信使本身——具体来说,是用哪个算法来签名的.
这告诉接收者如何验证签名.
有效载荷是实际信息存在的地方.
这是一个JSON对象,包含一组权利要求——关于用户或指使物上下文的声明.
一个典型的有效载荷看起来是这样的:每个战地都是权利主张.
有些是标准化的——是主题(用户标识符),是到期时间戳.
其它类似的情况是:您的应用程序根据自身需求定义的习惯性主张。
签名是使象征值得信赖的。
它由授权服务器使用私人密钥生成,覆盖头和有效载荷.
如果有人甚至修改了该符号的单个字符,签名就变得无效. 💡 已编码, 未加密 标准JWT的有效载荷为Base64-encoded,指任何有信使的人都可以读取其内容.
从不把敏感信息——密码、信用卡号码和个人数据——放入JWT的有效载荷。
签名保证完整性,而不是保密性。
签名如何使它可信 当您的授权服务器发布 JWT 时, 它会用只有服务器持有的私人密钥来签名 。
当一个API收到该令牌时,它会使用相应的公钥验证签名——它可以从授权服务器的发现端得到.
如果签名是有效的,API知道两件事: 指使牌是由授权服务器真正发行的,其内容此后没有被修改.
不需要数据库的查询——这个信使是自成一体的,可以自我核查的.
因此,JWT标志在分布式系统中运作良好。
任何拥有公钥的服务可以独立地验证任何符号,而不与中央会话商店相协调.
您的应用为何需要这个 JWT 符号同时解决几个实际问题: 无国籍认证 — t