Oauth2认证、登录模式

一、OAuth2(开放授权)
1、一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息
2、应用场景:
第三方应用授权登录:访问平台,需要用户登录时,如qq、微信、微博等

在这里插入图片描述

3、四种角色

​ 1、资源所有者:代表用户本身

​ 2、资源服务器:存储受保护的账号信息

​ 3、授权服务器:成功验证用户身份,并获得授权后,给客户端派发资源令牌

​ 4、客户端:代表访问的第三方应用

4、授权模式

(1)授权码模式:功能最完整、流程最严密的授权模式

​ 1)用户访问客户端,后者将前者导向认证服务器,假设用户给与授权,认证服务器将用户导向客户端事先指定的重定向URL,并附上一个授权码

​ 2)客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌:GET /oauth/token?response_type=code&client_id=test&redirect_uri=重定向页 面链接。请求成功返回code授权码,一般有效时间是10分钟。

​ 3)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。POST /oauth2/authorize?response_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=重定向页面链接

在这里插入图片描述

参数:

​ client_id 客户端接入标识。

​ response_type 授权码模式固定为code

​ scope 客户端权限

​ redirect_uri 跳转uri,当授权码申请成功后会跳转到此地址,并在后边带上code参数(授权码)

例如: 微博授权码登录:(微博开放平台:https://open.weibo.com/developers/identity)

1)获取授权码code

https://api.weibo.com/oauth2/authorize?client_id=4075361029&response_type=code&scope=app&redirect_uri=https://sh28673186.jz.fkw.com/

2)浏览器出现向授权服务器授权页面,之后将用户同意授权

3)授权服务器将授权码(AuthorizationCode)转经浏览器发送给client(通过redirect_uri)

4)客户端拿着授权码向授权服务器索要访问access_token,请求如下:

参数:

​ client_id 客户端接入标识。

​ client_secret 客户端秘钥

​ grant_type 授权类型,填写authorization_code,表示授权码模式

​ code 授权类型,填写authorization_code,表示授权码模式

​ redirect_uri 跳转uri,当授权码申请成功后会跳转到此地址,并在后边带上code参数(授权码)

https://api.weibo.com/oauth2/authorize?client_id=4075361029&client_secret=60a58550dff2982696a0e57f482bbb25&grant_type=authorization_code&code=10bb57bdb44e97026ab5e231ab6b0529&redirect_uri=https://sh28673186.jz.fkw.com/

注:四种模式中最安全的一种模式

​ 这种模式中access_token不会经过浏览器或移动端的App,而是直接从服务端去交换,这样就最大限度的减小了令牌泄漏的风险

(2)密码模式

​ 密码模式使用较多,适应于第一方的单页面应用以及第一方的原生App,比如:闪聚支付平台运营平台用户使用此模式完成用户登录。 密码模式认证流程如下:

在这里插入图片描述

1)资源拥有者将用户名、密码发送给客户端

2)客户端拿着资源拥有者的用户名、密码向授权服务器请求令牌(access_token),请求如下:

https://api.weibo.com/oauth2/authorize?client_id=4075361029&client_secret=60a58550dff2982696a0e57f482bbb25&grant_type=password&username=18298325163&password=qi092612&redirect_uri=https://sh28673186.jz.fkw.com/

参数列表:

​ client_id 客户端准入标识

​ client_secret 客户端秘钥

​ grant_type 授权类型,填写password表示密码模式

​ username 资源拥有者用户名

​ password 资源拥有者密码

3)授权服务器将令牌(access_token)

发送给client 这种模式十分简单,但是却意味着直接将用户敏感信息泄漏给了client,因此这就说明这种模式只能用于client是 我们自己开发的情况下。

因此密码模式一般用于我们自己开发的,第一方原生App或第一方单页面应用。

(3)客户端模式

在这里插入图片描述

1)客户端向授权服务器发送自己的身份信息,并请求令牌(access_token)

2)确认客户端身份无误后,将令牌(access_token)发送给client,请求如下:

https://api.weibo.com/oauth2/authorize?client_id=4075361029&client_secret=60a58550dff2982696a0e57f482bbb25&grant_type=client_credentials&redirect_uri=https://sh28673186.jz.fkw.com/

参数列表:

参数列表:

​ client_id 客户端准入标识

​ client_secret 客户端秘钥

​ grant_type 授权类型,填写client_credentials表示客户端模式

注意:

这种模式是最方便但最不安全的模式。因此这就要求我们对client完全的信任,而client本身也是安全的。

(4)简化模式

在这里插入图片描述

1)资源拥有者打开客户端,客户端要求资源拥有者给予授权,它将浏览器被重定向到授权服务器,重定向时会附加客户端的身份信息。

​ https://api.weibo.com/oauth2/authorize?client_id=4075361029&response_type=token&scope=app&redirect_uri=https://sh28673186.jz.fkw.com/

参数列表:

​ client_id 客户端准入标识

​ response_type 简化模式固定为token , response_type=token,说明是简化模式

​ scope 客户端权限

​ redirect_uri 跳转uri,当授权码申请成功后会跳转到此地址,并在后边带上code参数(授权码)

2)浏览器出现向授权服务器授权页面,之后将用户同意授权。

3)授权服务器将授权码将令牌(access_token)以Hash的形式存放在重定向uri的fargment中发送给浏览器

注:

fragment 主要是用来标识 URI 所标识资源里的某个资源,在 URI 的末尾通过 (#)作为 fragment 的开头, 其中 # 不属于 fragment 的值。如https://domain/index#L18这个 URI 中 L18 就是 fragment 的值。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spring Cloud OAuth2是一个基于Spring Cloud的OAuth2认证和授权框架。它提供了一组工具和库,用于构建安全的分布式系统。Spring Cloud OAuth2支持多种OAuth2授权流程,包括授权码模式、密码模式客户端模式和简化模式。它还提供了一些可扩展的组件,如令牌存储、用户信息服务和授权服务器。使用Spring Cloud OAuth2,您可以轻松地将OAuth2认证和授权集成到您的应用程序中,从而实现更安全的分布式系统。 ### 回答2: Spring Cloud OAuth2认证是一种集成了OAuth2标准的身份验证框架,它可以用来保护和授权API访问,也可以用于单点登录和资源服务器保护。 与传统的身份验证方式相比,Spring Cloud OAuth2认证的主要优势在于其更为灵活的授权方式,可以支持不同的授权流程,例如授权码、简化流程和密码凭据流程。此外,Spring Cloud OAuth2认证还提供了可定制化的身份验证流程和接口,开发人员可以根据业务需求对其进行定制。 在使用Spring Cloud OAuth2认证时,需要先配置授权服务器,包括定义客户端类型、授权模式等。接着,在客户端应用程序中会添加安全配置,以确保请求可以被身份验证和授权。最后,当用户请求受保护的API时,Spring Cloud OAuth2认证将使用令牌管理器验证用户身份和访问权限,并允许或拒绝请求。 总的来说,Spring Cloud OAuth2认证为开发人员提供了一种安全、灵活和可定制的身份验证和授权框架,可以帮助企业保护他们的API和资源服务器,同时也可以提高用户体验和安全性。 ### 回答3: Spring Cloud OAuth2是基于OAuth2协议的分布式认证和授权框架。OAuth2协议是一种在客户端与服务端之间进行授权委托的协议,它通过令牌(Token)的方式将授权信息传递给客户端或第三方服务。 Spring Cloud OAuth2提供了一系列组件,包括OAuth2认证服务,资源服务器以及客户端工具,为企业微服务架构提供了安全可靠的认证和授权机制。下面分别介绍OAuth2认证服务、资源服务器以及客户端工具的功能和作用。 1. OAuth2认证服务: OAuth2认证服务是指用于管理令牌(Token)的服务。在Spring Cloud OAuth2中,认证服务可以基于内存存储令牌,也可以基于数据库存储令牌。认证服务主要负责令牌的颁发以及令牌的刷新和撤销。 2. 资源服务器: 资源服务器是指受保护的服务提供方,它需要对请求者的身份进行认证和授权才能够提供服务。Spring Cloud OAuth2提供了一套成熟的资源服务管理机制,通过oauth2-resource注解来声明当前服务是资源服务。 3. 客户端工具: 客户端工具是指用于进行OAuth2认证和授权的工具,可以是Web应用,也可以是移动应用。在Spring Cloud OAuth2中,客户端工具可以通过注解的方式来进行OAuth2认证和授权,简化了客户端代码实现过程。 通过Spring Cloud OAuth2框架的应用,我们可以实现企业级的分布式认证和授权,规范了服务之间的安全通信,助力于微服务架构的安全发展。同时也提供了多种服务集成方案,如内存存储和数据库存储等,方便开发者根据实际需求选择合适的方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值