畅购商城项目day9: 用户认证

一、用户认证思想

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、生成公钥私钥:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值