oauth2.0系统学习2-理论基于token的认证方式

oauth2.0系统学习2-理论基于token的认证方式


一、理论:基于token的认证方式

1.1、优点

  1. 服务端不用存储认证数据,易维护扩展性强
  2. 客户端可以把token存在任意地方、
  3. 适合统一认证的机制,客户端、一方应用、三方应用都遵循一致的认证机制
  4. token认证方式对第三方应用接入更适合,因为它更开放,可使用当前有流行的开放协议Oauth2.0、JWT等.
  5. 一般情况服务端无需存储会话信息,减轻了服务端的压力。

1.2、缺点

  1. token由于自包含信息,因此一般数据量较大,而且每次请求都需要传递,因此比较占带宽。
  2. token的签名验签操作会给cpu带来额外的处理负担

1.3、分布式系统认证技术方案见下图

在这里插入图片描述

流程描述:

  1. 用户通过接入方(应用)登录,接入方采取OAuth2.0方式在统一认证服务(UAA)中认证。

  2. 认证服务(UAA)调用验证该用户的身份是否合法,并获取用户权限信息。

  3. 认证服务(UAA)获取接入方权限信息,并验证接入方是否合法。

  4. 若登录用户以及接入方都合法,认证服务生成jwt令牌返回给接入方,其中jwt中包含了用户权限及接入方权限。

  5. 后续,接入方携带jwt令牌对API网关内的微服务资源进行访问。

  6. API网关对令牌解析、并验证接入方的权限是否能够访问本次请求的微服务。

  7. 如果接入方的权限没问题,API网关将原请求header中附加解析后的明文Token,并将请求转发至微服务。

  8. 微服务收到请求,明文token中包含登录用户的身份和权限信息。

后续微服务干两件事:

  1. 用户授权拦截(看当前用户是否有权访问该资源)

  2. 将用户信息存储进当前线程上下文(有利于后续业务逻辑随时获取当前用户信息)

1.4、pring-Security-OAuth2

  1. 对OAuth2的一种实现

  2. OAuth2.0的服务提供方涵盖两个服务

    1. 授权服务: AuthorizationServer,也叫认证服务

    2. 资源服务:ResourceServer

001)、授权服务

  1. 包含对接入端以及登入用户的合法性进行验证并颁发token等功能,对令牌的请求端点由SpringMVC控制器进行实现,下面是配置一个认证服务必须要实现的endpoints:

    1. AuthorizationEndpoint:认证请求

      1. 默认url:/oauth/authorize
    2. TokenEndpoint:访问令牌的请求

      1. 默认url:/oauth/token

002)、资源服务

  1. 应包含对资源的保护功能,对非法请求进行拦截,对请求中token进行解析鉴权等,下面的过滤器用于实现OAuth2.0资源服务

    1. OAuth2AuthenticationProcessingFilter

      1. 用来对请求给出的身份令牌解析鉴权。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值