OAuth2与JWT的区别和联系

JWT:JSON Web Token // 是一种具体的Token实现框架
OAuth2:Open Authorization // 是一种授权协议,是规范,不是实现
Spring Security OAuth2:Spring 对 OAuth2 的开源实现,优点是能与Spring Cloud技术栈无缝集成
Spring Security:前身是 Acegi Security ,能够为 Spring企业应用系统提供声明式的安全访问控制
这里需要理解两个概念:

Authentication:用户认证,一般是通过用户名密码来确认用户是否为系统中合法主体,
Authorization:用户授权,一般是给系统中合法主体授予相关资源访问权限。

jwt是基于token的认证协议的实现,OAuth2是一种授权框架,提供了一套详细的授权协议标准(指导)。

jwt的基本思路就是用户提供用户名和密码给认证服务器,服务器验证用户提交信息信息的合法性;如果验证成功,会产生并返回一个Token(令牌),用户可以使用这个token访问服务器上受保护的资源。

对于OAuth2的使用场景,官方文档都提到针对第三方应用,需要强调的是,这个第三方应用,不要只当作一个完全不相干的应用,这里除了服务本身外的应用,就算第三方应用,即使是你自己的应用,也是第三方应用,不要把第三方应用只当作其他公司开发的应用或系统,如果这样就对OAuth的理解太狭隘了。从广义上讲,你自己开发的客户端也是一种第三方,只是你的客户端是可以输入用户名密码获取令牌的,而真正的第三方是不可以使用用户名和密码获取令牌的(这样暴露用户密码给第三方了),一般是通过审核过后的开发者id来获取令牌的,所以他们在流程上是有很大一部分是相似的。

Oauth2的几种授权模式:

授权码模式(Authorization Code)(正统方式)(支持refresh token)
授权码简化模式(Implicit)(为web浏览器设计)(不支持refresh token)
Pwd模式(Resource Owner Password Credentials) (基本不用)(支持refresh token)
Client模式(Client Credentials) (为后台api调用设计)(不支持refresh token)
扩展模式(Extension)(自定义模式)

Oauth的几个概念:

Roles角色
应用程序或者用户都可以是下边的任何一种角色:
    资源拥有者
    资源服务器
    客户端应用
    授权服务器
Client Types客户端类型
这里的客户端主要指API的使用者。它可以是的类型:
    私有的
    公开的
Client Profile客户端描述
OAuth2框架也指定了集中客户端描述,用来表示应用程序的类型:
    Web应用
    用户代理
    原声应用
Authorization Grants认证授权
认证授权代表资源拥有者授权给客户端应用程序的一组权限,认证授权方式可以是下边几种形式:
    授权码
    隐式授权
    资源拥有者密码证书
    客户端证书
Endpoints终端
OAuth2框架需要下边几种终端:
    认证终端
    Token终端
    重定向终端

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值