当前位置: 首页 > 工具软件 > Oauth.io > 使用案例 >

oauth2相关理解(网上的都是互相抄还是错的,学的很累,所及决定参照官网自己整理一份)

魏高邈
2023-12-01

一:首先要理解Oauth2是什么?有什么用?

	spring.io官网解释:
	The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service,either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the 	third-party application to obtain access on its own behalf.		
	
	Oauth2是一种协议,用来解决支持第三方应用程序以自己的名义获取已经被授权的资源。
	这么解释可能还是难理解:再详细解释:
	
	1.1 Oauth2是一种协议:
		可以理解为Oauth2是一种规范,规定了第三方应用获取资源必须要遵守这样的“模式”(等下再解释“模式”);
		既然是规范,可以联想到,http协议也是一种规范,JPA也是一种数据持久化规范;
		规范产生就一定伴随着很多具体实现的框架的产生,
		例如HttpClient是http协议的具体实现一种,Hibernate是JPA具体实现的一种,
		那么Oauth2的具体实现框架有security,shiro,甚至可以自己实现;应为security是spring自己的亲儿子,所以就有Spring security Oauth2,其实就是security对Oauth2的实现,spring有springBoot项目的快速构建,那当然也少不了Spring boot整合security快速构建认证授权项目。
		
	1.2“Oauth2是一种协议,用来解决支持第三方应用程序以自己的名义获取已经被授权的资源”我们可以从这几句话分离出几个名词,Oauth2对这些名词有特别解释;
		“第三方应用程序”	:第三方应用程序-client
		“获取资源过程”	:服务提供商(资源的管理员,一般指网关)
		“自己的名义”		:资源所有者-user
		“授权”			:认证授权服务器-authServer
		“资源”			:资源服务器-resourceServer
		
	1.3 “模式”
			授权码模式
			简单模式
			密码模式
			客户端模式

。。。。。。。。。。。。。。继续更新中。。。。。。。。。。。。。。。

1.需求1:

admin用户可以访问所有资源,role1用户只可以访问role1资源
	
		:只需要spring security就能实现
//spring security提供的关键类,实现2+1方法(实现2个方法,另外一个返回PasswordEncoder的方法)
WebSecurityConfigAdapter
	/**
		方法一:配置UserDetailService 数据源。设置用户信息
	**/
	config(AuthenticationManagerBuilder auth)
	/**
		方法二:校验请求资源和授权规则:(/**这个路径需要admin权限;/role1/**这个路径需要role1资源)
	**/
	config(HttpSecurity http)
	/**
		方法三:获取密码比对器,作用是用来比对用户输入密码跟程序存的(设置)密码的匹配方式
	**/
	PasswordEncoder getPasswordEncoder()

2:需求2:

role1资源部署在role1服务器,role2资源部署在role2服务器。
	场景:admin需要访问role1,再去访问role2。
	问题:访问role1时需要输入账号密码,再访问role2时也需要再输入用户密码
	解决:第一次访问role1在登陆成功后,生成一个token,存在数据库(redis或mysql)
	     中或者(启用网关服务存在网关的session中);访问role2时携带token,创建一个
	     前置过滤器验证token正确性。

	需要:springsecuriyweb 过滤器链
	
 类似资料: