outh2是什么?
OAuth 2.0不是一个API或者服务,是一个业界标准的授权协议,而是一个验证授权(Authorization)的开放标准 。OAuth 2.0提供一种协议交互框架,让某个 A应用 能够以安全地方式获取到 B用户 的 C委派书,这个 C委派书 在OAuth 2.0中就是访问令牌(access token),随后 A应用 便可以使用 该C委派书,代表 B用户 来访问 B用户的相关资源。
什么?上面那些你一句看不懂?那看这里,今天必须让你吃饱!
俗话:我 在 CSDN平台 要登录账号,但是不想通过CSDN注册账号,我选择通过点击 CSDN平台登录下方的 微信 登录,手机扫码后 微信 告诉是不是要在 CSDN平台 上登录并授权自己的 微信基本信息,我选择了 登录并授权 , CSDN平台 就帮我注册了一个账号,并且账号里还有我的一些 微信 的基本信息。
在OAuth 2.0的协议交互中,有四个角色的定义,
- 资源所有者(Resource Owner):即( 我 )用户,(但不限于人,如某些应用也会创建资源),拥有资源的所有权。
- 资源服务器(Resource Server):( 微信基本信息 )即保存着受保护的用户资源,本身可以是资源服务。
- 应用程序(Client):即( CSDN平台 )( 微信 )准备访问用户资源的应用程序,其可能是web应用,或是后端web服务应用,或是移动端应用,也或是桌面可执行程序。
- 授权服务器(Authorization Server):即( 登录并授权 )授权服务器,在获取用户的同意授权后,颁发访问令牌给应用程序,以便其获取用户资源。
Oauth选择依赖包应该怎么选?
#在接下来的演示中不会出现该依赖包
spring-security-oauth2 -> 被废弃,建议不使用,否则后期无法维护
spring-security-oauth2-autoconfigure -> 自动配置,没有用处
#主要使用以下的依赖包
spring-boot-starter-oauth2-client -> 最新
spring-boot-starter-oauth2-resource-server -> 最新
spring-cloud-starter-oauth2 -> 引用 spring-security-oauth2,但尚未标注被废弃
项目介绍
在接下来的章节中,将使用 微服务Gateway+Redis+Token+Nacos+Security+Oauth2。
gateway:负责路由转发、资源服务器的认证授权;
redis:负责缓存;
Token:负责Token非对称RSA加密;
Nacos:负责服务注册;
Security:负责网络过滤;
Oauth2:负责授权服务器、认证和授权。