单点登录的微服务实现

登录机制
粗略地分析, 登录机制主要分为登录验证、登录保持、登出三个部分。登录验证是指客户端提供用户名和密码,向服务器提出登录请求,服务器判断客户端是否可以登录并向客户端确认。 登录认保持是指客户端登录后, 服务器能够分辨出已登录的客户端,并为其持续提供登录权限的服务器。登出是指客户端主动退出登录状态。容易想到的方案是,客户端登录成功后, 服务器为其分配sessionId, 客户端随后每次请求资源时都带上sessionId。

登录保持
在最原始的方案中, 登录保持仅仅靠服务器生成的sessionId: 客户端的请求中带上sessionId, 如果服务器的redis中存在这个id,就认为请求来自相应的登录客户端。 但是只要sessionId被截获, 请求就可以为伪造, 存在安全隐患。

引入token后,上述问题便可得到解决。 服务器将token和其它的一些变量, 利用散列加密算法得到签名后,加密的方法有

#ldap.auth.password.encryption.algorithm=BCRYPT
#ldap.auth.password.encryption.algorithm=MD2
#ldap.auth.password.encryption.algorithm=MD5
ldap.auth.password.encryption.algorithm=NONE
#ldap.auth.password.encryption.algorithm=SHA
#ldap.auth.password.encryption.algorithm=SHA-256
#ldap.auth.password.encryption.algorithm=SHA-384
#ldap.auth.password.encryption.algorithm=SSHA
#ldap.auth.password.encryption.algorithm=UFC-CRYPT
#ldap.auth.password.encryption.algorithm=PBKDF2WithHmacSHA1/160/128000
,连同sessionId一并发送给服务器; 服务器取出保存于服务器端的token,利用相同的法则生成校验签名, 如果客户端签名与服务器的校验签名一致, 就认为请求来自登录的客户端。

其他:token的保存

1.cookie 早些时候,本地存储使用的是 cookie。但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以存储大量的数据,而不影响网站的性能.数据以 键/值 对存在, web网页的数据只允许该网页访问使用。

2.localStorage - 没有时间限制的数据存储

3.sessionStorage - 针对一个 session 的数据存储(关闭窗口,存储的数据清空)

介绍setItem和getItem,还有什么removeItem删除key、clear清除所有的key/value操作。

setItem存储value
  用途:将value存储到key字段
  用法:.setItem( key, value)
  代码示例:

sessionStorage.setItem(“key”, “value”); localStorage.setItem(“site”, “js8.in”);
  getItem获取value
  用途:获取指定key本地存储的值
  用法:.getItem(key)
  代码示例:

var value = sessionStorage.getItem(“key”); var site = localStorage.getItem(“site”);

作者:javafanwk
来源:CSDN
原文:https://blog.csdn.net/fwk19840301/article/details/79525558?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/wxy49212/article/details/83090826