13 spring security和oauth2学习

Spring Security

简介

Spring Security是Spring Resource社区的一个安全组件,为系统提供安全的防护。Spring Security通过注解为每一层(controller、service、dao)都提供安全保护。

 

Spring Security的主要目标是认证和授权,认证即认证主体的过程,通常指可以在应用程序中执行操作的用户、设备或其他系统。授权即决定是否允许已认证的主体执行某一项操作。

 

这部分不做说明。(大佬的书中给了一个生动形象的例子,买本书看看非常好)

 

OAuth2

简介

OAuth2 是一个标准授权协议,允许不同的客户端通过认证和授权的形式来访问被其保护的资源。

认证授权流程:

 

  1. 用户通过客户端访问自己持有的资源;
  2. 资源服务器发现当前请求缺少用户身份标识,将请求重定向授权服务器;
  3. 客户端携带用户信息访问授权服务器;
  4. 用户信息正确,授权服务器返回用户访问资源服务器的令牌;
  5. 客户端携带令牌访问资源服务器;
  6. 资源服务器返回用户想访问的的资源。

 

OAuth2协议再Spring Resources中体现为Spring OAuth2。Spring OAuth2主要有两个部分OAuth2 Provider和OAuth2 Client。

 

OAuth2 Provider

负责公开被OAuth2包含起来的资源。包含权限控制,资源访问控制等功能。可以分为Authorization Service(授权服务)和Resource Service(资源服务),通常情况下,授权服务和资源服务不会部署再同一个服务中,应该是一个Authorization Service对应多个Resource Service。

 

Authorization Server

Authorization Server需要配置客户端的详细信息和令牌服务的实现。

开启Authorization Server的功能,实现以下配置:

  1. 配置客户端信息:ClientDetailsServiceConfigurer;
  2. 配置授权Token节点和Token服务:AuthorizationServerEndpointsConfigurer;
  3. 配置Token节点的安全策略:AuthorizationServerSecurityConfigurer

客户端信息 ClientDetailsServiceConfigurer

客户端Id:clientId,唯一

客户端密码:secret

客户端的域:scope

认证类型:authorizedGrantTypes

权限信息:authorities

配置授权Token节点和Token服务 AuthorizationServerEndpointsConfigurer

authenticationManager:密码验证配置

userDetailsService:配置获取用户认证信息接口

authorizationCodeService:配置验证码服务

implicitGrantService:配置管理implict验证的状态

tokenGranter:配置token Granter

配置Token节点的安全策略 AuthorizationServerSecurityConfigurer

其余的配置说明省略

 

 

示例

一共三个服务,一个注册中心,一个资源服务器,一个认证服务器

注册中心

使用之前的服务

资源服务器

配置访问规则:除特定路径,其他路径都需要校验权限

 

设置资源服务器的认证方式:访问认证服务器进行校验

 

配置客户端信息

 

认证服务器

设置安全认证

 

设置认证时获取信息的流程

 

说明

1.当调用认证服务进行获取token的时候,认证服务器根据userDetailsService获取用户信息,认证成功后往oauth_access_token表插入数据

 

 

2.根据获取到的access_token去请求资源服务器的接口

 

资源服务器在接收请求的时候,通过过滤器OAuth2AuthenticationProcessingFilter调用OAuth2AuthenticationManager发起rest请求,请求资源服务器,详细内容看OAuth2AuthenticationManagerauthenticate(Authentication authentication)方法
链路如下:
资源服务器-OAuth2AuthenticationProcessingFilter-OAuth2AuthenticationManager-UserInfoTokenServices-》认证服务器-OAuth2AuthenticationProcessingFilter-OAuth2AuthenticationManager-
DefaultTokenServices-JdbcTokenStore-》表oauth_access_token

 

 

内容来源《深入理解Spring Cloud与微服务构建》
 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值