一、用户认证思想
1、单点登录+第三方授权登录:SpringSecurity Oauth2.0实现
2、SpringSecurity Oauth2.0认证模式有两种:
授权码授权模式
密码授权模式
3、单点登录的实现方式:
Apache Shiro
CAS
Spring security CAS
4、
1:认证与授权
身份认证:登录,校验用户密码、账号是否匹配,身份合法可继续访问。常见的身份认证表现形式有:用户名密码登录、指纹打卡等。
用户授权:身份认证之后,系统会判断用户是否有访问系统资源的权限,就是鉴别你是什么身份,你有什么权限,做这个角色相关的事情。
2: 单点登录介绍(SIngle Sign On)SSO:在一个系统登录后,其他受信任的系统免登录。一次登录。
3 : 第三方授权认证介绍:由第三方系统对用户认证通过,并授权资源的访问权限。比如微信认证。
优点:方便、快捷、不用注册。
第一次绑定后,之后用户可以一键登录。
降低了用户的注册或登录成本,从而减少由于本地注册的繁琐性而带来的隐形用户流失,最终提高注册转化率
5、认证技术方案
1:单点登录技术方案
解决方案思路:
首先搭建一个独立的系统(这个系统做用户登录+授权),
用户通过微服务网关进来,先登录授权,
然后系统会把我们的登录信息(令牌token)存到redis,
再把存到redis信息(令牌token)存到客户端,用户每次访问其他微服务的时候,就会把令牌带过去,验证用户是否有效,认证系统去redis查询令牌,如果能查到,有效,再把用户信息给你,用户就可以访问系统
没查到,就告诉你这个用户信息无效,可以登录,但是用户不能访问系统。
解决方案:
Oauth2.0介绍:
他是一个开放的授权认证标准,没有强调受信任;
允许用户授权第三方应用(比如抖音),授权抖音来访问自己服务器上(比如微信上)的资源。
用户不需要向第三方应用提供账号密码。
Oauth2.0授权流程分析:
2:SpringSecurity Oauth2.0认证解决方案
解决思路:
用户先去认证服务中心(SpringSecurit)请求认证(登录与授权),
我们的用户信息(包含角色)-》加密》得到令牌token(JWT),再返回令牌给用户。
用户会携带token通过微服务网关再访问各大微服务,
相关的微服务系统,进行一个本地令牌认证。
二、资源服务授权流程
2.1 业务流程
1、客户端请求认证服务申请令牌
2、认证服务生成令牌认证服务采用非对称加密算法(RSA算法),使用私钥生成令牌。
3、客户端携带令牌访问资源服务客户端在Http header 中添加: Authorization:Bearer 令牌。
4、资源服务请求认证服务校验令牌的有效性资源服务接收到令牌,使用公钥校验令牌的合法性。
5、令牌有效,资源服务向客户端响应资源信息
2.2 公钥私钥原理(公钥加密,私钥解密)
1、以前秘钥都是相同的(对称加密),被别人截取,也可以解密,不安全!
2、公钥加密,私钥解密:
张三有两把钥匙,一把是公钥,一把是私钥。
张三把公钥送给他的朋友们—-李四、王五、赵六—-每人一把。
李四要给张三写一封保密的信。她写完后用张三的公钥加密,就可以达到保密的效果。
张三收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要张三的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
张三给李四回信,决定采用“数字签名”。他写完后先用Hash函数,生成信件的摘要(digest)。张三将这个签名,附在信件下面,一起发给李四。
李四收信后,取下数字签名,用张三的公钥解密,得到信件的摘要。由此证明,这封信确实是张三发出的。李四再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
3、生成公钥私钥: