OAuth2.0 授权码模式

OAuth2.0 授权码模式

OAuth 协议实际上是一个授权协议。

授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动。

作用:
用户在不将服务提供商的用户名和密码交给第三方应用的情况下,让第三方应用可以有权限去访问用户存在服务提供商上面的一些资源。

授权协议和第三方登录的关系:
如果第三方应用拿到用户基本信息,并且根据用户信息构建 Authentication 并放入 SecurityContext 中的,那么对于 Spring Security 来说已经代表登录成功了,相当于用户使用在服务提供商上面的用户信基本息登录了第三方应用。

OAuth协议中的授权模式:
1、授权码模式。
2、密码模式。
3、简化模式。
4、客户端模式。

授权码模式流程:
三个概念:
1、资源所有者(Resource Owner)。
2、第三方应用客户端(Client)。
3、服务提供商(Provider)存储用户数据,包括认证服务器(Authorization Server)和资源服务器(Resource Server)。

1、资源所有者(Resource Owner)也就是用户访问第三方应用客户端,如果需要用户授权会将用户导向认证服务器。
2、用户同意授权(授权动作是在认证服务器上完成)。
3、认证服务器会将用户重新导向第三方应用客户端(用回调地址导向)并返回授权码(注意此时还不是令牌)。
4、第三方应用客户端会用授权码去认证服务器申请令牌(注意这个动作是在客户端后台服务器完成,对用户是不可见的)。
5、认证服务会校验授权码,如果正确会发放令牌返回给第三方应用客户端。
6、第三方应用客户端拿着令牌去资源服务器获取用户基本信息。

与其他模式的区别:
用户的授权动作是在认证服务器上完成,其他模式授权动作都是在第三方应用客户端上完成的。
好处:
1、其他模式有可能伪造用户授权信息,授权码模式的好处是明确知道是用户自己同意授权而不是伪造,因为授权动作是在认证服务器上完成的。
2、它不是直接返回令牌而是先返回授权码,它要求第三方应用客户端必须有一个后台服务器,先拿着授权码去申请令牌,然后需要配置回调地址来接收令牌。(如果是简化模式:没有后台服务器只是一个静态页面,认证服务器返回的直接就是令牌,在浏览器中就可以拿到令牌,这种安全模式低)。

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值