SecurityAauth2安全认证

oauth2.0配置

配置token保存dataSource
配置客户端登录成功监听器
认证流程
	首先走-AbstractAuthenticationProcessingFilter-抽象父类(认证处理过滤器),处理是否请求包含(client_id)字段,如果有,就走oauth2.0认证过滤器(进行认证),没有就执行下一个其他过滤器
		ClientCredentialsTokenEndpointFilter-为oauth2.0继承继承过滤器实现认证流程。把请求参数取出来,构成oauth2.0认证对象,交给 AuthenticationManager (认证管理器进行认证,里面有认证提供商(AuthenticationProvider)、就是处理 oauth2.0认证的、和查数据库操作等)
			AuthenticationManager (获取所有的认证服务提供商,并循环处理需要认证的数据)。首先交给(AbstractUserDetailsAuthenticationProvider)抽象父类认证服务提供商进行处理,oauth2.0默认的认证服务为-DaoAuthenticationProvider(根据client_id,从数据库查询客户端是否存在、进行密码判断等)
				密码判断了成功,那么过滤器(AbstractAuthenticationProcessingFilter)处理完成,进行登录成功处理,通过请求
					接下来进入-(TokenEndpoint)类(
@RequestMapping(value = "/oauth/token"))地址,进行用户登陆处理
						创建token进入(tokenRequest)、根据客户端登录(password),进入(ResourceOwnerPasswordTokenGranter)密码token创建器,首先执行父类(AbstractTokenGranter)的(getAccessToken)方法获取token信息,再调用(getOAuth2Authentication)方法(可以不同的子类继承)进行用户登录验证,这里调用(ResourceOwnerPasswordTokenGranter)类里面的(getOAuth2Authentication)
							ResourceOwnerPasswordTokenGranter类,获取当前客户端登录验证的用户进行登录,进行调用(WebSecurityConfigurerAdapter-authenticate)配置类中方法进行验证用户。(WebSecurityConfigurerAdapter)里面有 认证管理器(ProviderManager),然后调用管理器当中的认证服务器提供商(DaoAuthenticationProvider)进行用户查询,调用(UserDetailsService(用户详情服务)的 (loadUserByUsername (根据用户名称加载登录用户))),返回登录的人员信息,在此处加载人员权限等
								默认token服务(DefaultTokenServices),根据登录的用户进行token创建。首先根据(JdbcTokenStore)token管理器,根据授权id查询已经授权的token信息,过期就移除重新创建刷新token,再根据storeAccessToken,创建新的token并保存
									token返回对象(OAuth2AccessToken)优化进行返回

spring-security配置
配置静态资源文件路径
配置允许访问路径、登录成功处理,登录失败处理

怎么实现登录认证的

  1. 登录认证请求地址 ->/oauth/token
    响应的SecurityAauth安全认证实现类: /oauth/token
  2. 项目2
  3. 项目3

关于请求头的设置

  1. SecurityAauth安全认证必须设置的请求头Authorization请求头,作为设置的token信息
  2. SecurityAauth安全认证设置的token前面需要加一个Bearer+空格 + token只有这样SecurityAauth安全认证才能解析出来正确的token信息
    注意这些请求头的设置都是通过SecurityAauth的拦截器:OAuth2AuthenticationProcessingFilter去进行拦截获取token信息的

备注:安全拦截截图
在这里插入图片描述

备注:请求头设置的截图

在这里插入图片描述请求示例:
在这里插入图片描述
重要
1、在使用 JdbcTokenStore 类作为token存储的时候
2、在请求头加上了token之后会取出token,然后把 token 进行md5 运算,在进行数据库 token_id 查找
3、存储时也是把生成的 token 进行 MD5运算,保存到 token_id

    //获取
	private static final String DEFAULT_ACCESS_TOKEN_INSERT_STATEMENT = "insert into oauth_access_token (token_id, token, authentication_id, user_name, client_id, authentication, refresh_token) values (?, ?, ?, ?, ?, ?, ?)";

	private static final String DEFAULT_ACCESS_TOKEN_SELECT_STATEMENT = "select token_id, token from oauth_access_token where token_id = ?";
    //获取
	private static final String DEFAULT_ACCESS_TOKEN_AUTHENTICATION_SELECT_STATEMENT = "select token_id, authentication from oauth_access_token where token_id = ?";
	// 插入
	private static final String DEFAULT_ACCESS_TOKEN_INSERT_STATEMENT = "insert into oauth_access_token (token_id, token, authentication_id, user_name, client_id, authentication, refresh_token) values (?, ?, ?, ?, ?, ?, ?)";

社交登录流程

微博登录

  1. 浏览器,用户点击微博登录图标(需要开发者到微博注册 client_id)
  2. 跳转到微博登录授权页面,跳转的时候需要带上client_id,以及登录成功的重定向地址:redirect_url
  3. 用户输入微博的用户名、密码进行登录
  4. 登录成功之后,根据重定向地址redirect_url进行返回,并携带 code,作为登录凭证
  5. 重定向地址为开发者的地址,解析得到的 code
  6. 根据code调用微博获取access_token的URL地址。调用的时候需要携带 凭证 code、注册 client_id、注册 的 秘钥key,重定向地址。
  7. 根据上一步可以得到access_token,然后通过access_token调用提供的一些基本的用户在微博上面的基础信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值