加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

确保在家办公员工的远程访问安全

发布时间:2021-02-11 15:10:51 所属栏目:评论 来源:互联网
导读:如上图所示:请求到达 Tomcat 后,可以调用单独的 Token 服务进行 Token 的生成,也可以将 Token 的生成逻辑封装成一个 jar 包来使用。需要注意的是如果用内嵌的方式,对应 Token 的加密配置要一致,否则会出现验证失败的情况。 Token 有点不好的地方在于无

如上图所示:请求到达 Tomcat 后,可以调用单独的 Token 服务进行 Token 的生成,也可以将 Token 的生成逻辑封装成一个 jar 包来使用。需要注意的是如果用内嵌的方式,对应 Token 的加密配置要一致,否则会出现验证失败的情况。

Token 有点不好的地方在于无法主动让它失效,比如我们用 Session 的场景,用户退出登录,直接将 Session 信息在服务端删除即可,即使后面用相同的 Session 信息去请求,服务端也找不到对应的信息了。

Token 是一个加密的字符串,里面包含了用户的信息,加密算法,过期时间。如果过期时间设置的比较长,也就意味着在过期时间之前都可以使用。

如果要实现退出登录的功能,既然不能对 Token 本身的过期时间进行改造,那么可以使用一个黑名单的机制来进行过滤即可。将退出登录的 Token 存储起来,使用的地方去匹配是否注销了,然后进行拦截即可。
 

少林之 Token 绝学

Token 认证是目前主流的认证方式之一,Token 最大的优势在于无状态,并且不用存储会话信息。也就是说通过 Token 就可以知道当前访问的用户是谁,不需要去 Web 容器的内存中获取,不需要去集中管理会话的存储中去获取。

Token 的生成方式有多种,可以自己定义固定的格式,比如里面包含了用户 ID,用户名等信息。也可以使用目前主流的 JWT 方式。

JWT(JSON Web Token)是为了在网络应用环境中传递声明而执行的一种基于 JSON 的开放标准。JWT 的声明一般被用在身份提供者和服务提供者间传递被认证的用户身份信息, 以便从资源服务器获取资源。

比如在用户登录时,基本思路就是用户提供用户名和密码给认证服务器,服务器验证用户提交信息的合法性;如果验证成功,会产生并返回一个 Token,后续请求用户带上这个 Token ,服务端就可以识别这个请求的身份信息。

JWT 由三部分构成,

  • 第一部分是头部(Header);
  • 第二部分是消息体(Payload);
  • 第三部分是签名(Signature)。

一个 JWT 生成的 Token 格式为:
 

Session 集中存储

Session 复制会占用服务器资源,影响性能。黏性会话存在单点故障风险。更好的分布式 Session 方式就是集中式存储。

所谓集中式存储就是将会话信息统一存储在某个地方,像 Tomcat 之类的 Web 服务器本身不存储会话信息,这样后端服务也就是无状态的,方便随时扩容。
 

黏性会话

黏性会话指的是对于同一个用户的请求,永远都只转发到某一个 Tocmat 的实例上,这样即使没有做 Session 复制,也不会出现问题。如果有节点挂掉了就会访问失败。

常见的方式有对 IP 做 Hash 进行转发,IP 不太可靠,因为会变。在 Nginx 中有一个 nginx-sticky-module 这个第三方模块用于添加一个粘性 Cookie,该粘性 cookie 始终转发到同一服务器。

nginx-sticky-module 会在 Cookie 中记录一个值来标识当前请求需要被转发到哪个节点,第一次没有的时候会先转发,然后在响应给客户端之前写入 Cookie。后面的请求都会在 Cookie 找到对应的标识,然后进行转发到固定的节点。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读