网络

210 阅读3分钟

1 jwt组成

  • 头部(Header)

    • Header 一般由两个部分组成:alg和typ。alg是所使用的hash算法,如:HMacSHA256或RSA,typ是Token的类型,在这里就是:JWT。

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

  • 负载(Payload) iss: 该JWT的签发者 sub: 该JWT所面向的用户 aud: 接收该JWT的一方 exp(expires): 什么时候过期,这里是一个Unix时间戳 iat(issued at): 在什么时候签发的 除了标准定义的字段外,我们还要定义一些我们在业务处理中需要用到的字段,例如用户token一般可以包含用户登录的token或者用户的id,一个简单的例子如下:

    { "iss": "Lefto.com", "iat": 1500218077, "exp": 1500218077, "aud": "www.leftso.com", "sub": "leftso@qq.com", "user_id": "dc2c4eefe2d141490b6ca612e252f92e", "user_token": "09f7f25cdb003699cee05759e7934fb2" }

  • 签名(Signature) 是对JWT的头部和负载整合的一个签名验证。例如前两部分数据加盐,再根据密钥进行HMacSHA256加密。能被解密出明文的,只有header和payload。 假如黑客/中间人串改了payload,那么服务器可以通过signature去验证是否被篡改过。在服务端在执行一次 signature = 加密算法(header + "." + payload, 密钥),然后对比 signature 是否一致,如果一致则说明没有被篡改。

  • jwt验证流程

    • 用户请求登录并提交用户名和密码;
    • 服务器验证用户名和密码的正确性;生成并签名一个JWT,将其返回给客户端;
    • 客户端将JWT存储在本地,可以通过cookie或localStorage存储;当客户端发送其他请求时,将JWT作为Authorization头发送给服务器;
    • 服务器解析JWT,验证消息的完整性,并验证签名是否正确;如果JWT验证成功,则处理请求并返回相应数据,如果验证不成功,则返回验证失败信息;
    • 客户端可以在需要时更新JWT,通常在JWT过期时间到期或规定的时间间隔到期时进行更新;
    • 服务器可以对JWT进行吊销或黑名单,以保证JWT的安全性。 正向代理和反向代理的区别 正向代理代理的对象是客户端(隐藏客户端身份),反向代理代理的对象是服务端(隐藏服务器信息) blog.csdn.net/qq_38890412…

2 正向代理和反向代理

  • 正向代理和反向代理的区别 正向代理代理的对象是客户端(隐藏客户端身份),反向代理代理的对象是服务端(隐藏服务器信息) blog.csdn.net/qq_38890412…

  • 反向代理的作用

    • 改进系统性能:反向代理可以将客户端的请求转发至多个目标服务器上,通过对请求进行合理的分配,可以充分利用服务器资源,提高系统的处理性能和响应速度。同时,反向代理还可以缓存一部分静态资源,在后续的请求中直接调用缓存,降低了目标服务器的压力。
    • 增强系统安全性:反向代理能够有效地隐藏目标服务器的IP地址和实际架构情况,对外提供统一的接口,保护服务器免受攻击。同时,反向代理还可以提供SSL加密功能,对外提供HTTPS访问,增强应用的安全性。
    • 提高系统可扩展性:通过反向代理,可以将请求分配到多个目标服务器上,其工作原理类似于负载均衡,一旦某个目标服务器不可用,反向代理会自动将请求转发到其他服务器上,从而保证系统的可用性。