SpringCloudAlibaba学习笔记--授权、鉴权中心微服务功能设计
JWT的基本概念
JSON WEB Token是一种开放标准,它定义一种紧凑、自包含的方式,用于作为JSON对象在各方之间安全传输消息。
JSON服务器通过每次校验整个返回的JSON数据
JWT的结构及其含义
JWT由三个部分组成:Header、Payload(真实的数据)、Signature(签名 ),且用圆点连接 xxxx.yyyy.zzzz
Header:由两部分(Token类型、加密算法名称)组成,并使用Base64编码{'alg':"HS256",'typ':"JWT"}
Payload:KV形式的数据,即你想传递的数据(授权的话就是Token信息)
Signature:为了得到签名部分,必须有编码过得Header、编码过得payload、一个密钥、签名算法是Header中指定的那个


RSA非对称加密
非对称加密算法指的是 加、解密使用不同的密钥,一把为公开的公钥,另一把为私钥。 公钥加密的内容只能由私钥进行解密,反之由私钥加密的内容只能由公钥进行解密。也就是说,这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容只能由对方进行解密。
基于Token与基于服务器身份认证区别
浏览器交互时候,服务器会开辟一块内存空间(session),用于存放这次会话的内容,存放数据的同时,会生成sessionid来标记这块内存区间是属于你的,并且这个sessionid会写入cookie中,只要浏览器没有关闭,每次服务端发送请求,服务器会从你发送过来的cookie中取这个sessionid,然后根据sessionid到相应内存中。
取出之前存放的数据,如果退出登录会清除属于自己的内存区域,再登录时,重新生成session。
- session 每次用户认证后,服务器都要创建一条记录保存用户数据,通常发生在内存中,随着认证通过的用户越来越多,服务器的在这里的开销就会越来越大…
- Scalability : 由于Session是在内存中的,这就带来一些扩展性的问题。
- CORS : 当我们想要扩展我们的应用,让我们的数据被多个移动设备使用时,我们必须考虑跨资源共享问题。当使用AJAX调用从另一个域名下获取资源时,我们可能会遇到禁止请求的问题。
- CSRF : 用户很容易受到CSRF攻击。
基于 token 的身份认证是无状态的,服务器或者 session 中不会存储任何用户信息。
- 采用token这种方式,通常是先去禁用session,设置session为SessionCreationPolcy.STATELESS
- 用户携带用户名和密码请求访问
- 服务器校验用户凭据
- 应用提供一个token给客户端
- 客户端存储token,并且在随后的每一次请求中都带着它
- 服务器校验token并返回数据

浙公网安备 33010602011771号