oauth2四种授权方式小结

本文主要小结一下oauth2的四种模式的特点和适用场景。

四种授权方式

OAuth 2.0定义了四种授权方式。

  • 密码模式(resource owner password credentials)
  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 客户端模式(client credentials)

密码模式(resource owner password credentials

  • 这种模式是最不推荐的,因为client可能存了用户密码
  • 这种模式主要用来做遗留项目升级为oauth2的适配方案
  • 当然如果client是自家的应用,也是可以
  • 支持refresh token

授权码模式(authorization code

  • 这种模式算是正宗的oauth2的授权模式
  • 设计了auth code,通过这个code再获取token
  • 支持refresh token

简化模式(implicit

  • 这种模式比授权码模式少了code环节,回调url直接携带token
  • 这种模式的使用场景是基于浏览器的应用
  • 这种模式基于安全性考虑,建议把token时效设置短一些
  • 不支持refresh token

客户端模式(client credentials

  • 这种模式直接根据client的id和密钥即可获取token,无需用户参与
  • 这种模式比较合适消费api的后端服务,比如拉取一组用户信息等
  • 不支持refresh token,主要是没有必要

refresh token的初衷主要是为了用户体验不想用户重复输入账号密码来换取新token,因而设计了refresh token用于换取新token 这种模式由于没有用户参与,而且也不需要用户账号密码,仅仅根据自己的id和密钥就可以换取新token,因而没必要refresh token

小结

  • 密码模式(resource owner password credentials)(为遗留系统设计)(支持refresh token)
  • 授权码模式(authorization code)(正宗方式)(支持refresh token)
  • 简化模式(implicit)(为web浏览器应用设计)(不支持refresh token)
  • 客户端模式(client credentials)(为后台api服务消费者设计)(不支持refresh token)

原文发布于微信公众号 - 码匠的流水账(geek_luandun)

原文发表时间:2017-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小李刀刀的专栏

Laravel 5.5 在浏览器中渲染 Mailable 类型

Laravel 框架中提供了很方便快捷的面向对象风格的电子邮件相关功能,可以通过 Markdown 语法、Blade 模板引擎来制作邮件模板,然后通过扩展 Ma...

3785
来自专栏服务端技术杂谈

进程内缓存使用技术方案

进程内缓存可以采用带锁的Map或者第三方库,或者自己实现进程内缓存管理,如ConcurrentHashMap,ThreadLocal,guava cache等。

2493
来自专栏Timhbw博客

自用图片压缩工具推荐(优化博客加载速度)

2016-03-2318:22:27 发表评论 609℃热度 之前wordpress写博客时文章里面的图片都是上传到服务器中,以前以为这样省事,都是原图上传,...

46512
来自专栏程序员互动联盟

【答疑解惑第九讲】如何在linux下面编译一个简单的c语言程序

存在问题: 习惯了用IDE,习惯了点击执行按钮。在linux就不能这样了,该咋办? 解决方案: 随着android的大热,在linux下搞开发的人也越来越多,好...

38111
来自专栏about云

hadoop,hbase,hive,zookeeper整合可行性分析及版本确定【续篇】

问题导读 1.如何确定什么版本是稳定版本? 2.本文是如何确定各个版本的? 3.hbase1.x与hive1.x什么情况下是兼容的? 前面一篇写过 had...

4019
来自专栏架构师小秘圈

大型网站图片服务器架构的演进

作者:丁浪,非著名架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技术研究和分享。 声明:版权归丁浪...

7814
来自专栏开源优测

AutoLink开源平台源码组织结构

AutoLink是一个基于Python + Flask + RobotFramework开发的web IDE模式的自动化测试开源平台。

1533
来自专栏机器学习实践二三事

Mac无法升级six, numpy等

OS 10.10以上,会出现你无法直接使用pip升级向six, numpy等,报错就是各种权限不够,加上sudo结果也一样,原因就是MacOS的系统完整性保护(...

2988
来自专栏Java成神之路

Java企业微信开发_07_总结一下企业微信的配置

1192
来自专栏杨建荣的学习笔记

闪回区空间不足引发的SQL问题分析(r10笔记第32天)

有一天上班的时候,收到一封报警邮件。 ZABBIX-监控系统: ------------------------------------ 报警内容: ar...

3547

扫码关注云+社区

领取腾讯云代金券