oauth2

  1. 生词:

    1. 授权码模式(authorization code)
    2. 简化模式(implicit)
    3. 密码模式(resource owner password credentials)
    4. 客户端模式(client credentials)
  2. 问题:

    1. 分享目标:大致了解oauth的运行流程,及如何使用oauth(代码实现)。
    2. oauth是什么?
      1. oauth是目前最流行的一套授权机制标准。
    3. oauth的应用场景?
      1. 假设一个例子:

        1. 有一个在线读取pdf的网站。极速PDF在线阅读
        2. 我们想要在线阅读百度云存储的pdf文档,那么就需要让极速pdf来读取百度云存储的pdf,那么极速pdf是怎样获取到用户的授权呢?
        3. 传统的做法是我们将百度云账号密码告诉极速pdf,这样后者就可以进行读取pdf文档了
        4. 这样的做法会有几个严重的缺点
          1. 极速pdf为了后续的在线阅读服务可能会保存我们的百度云账号密码
          2. 极速pdf会读取我们百度云所有资料。
          3. 只有我们修改密码后才能控制极速pdf的权利,于此同时我们用的其他第三方应用也都失效了
        5. 这时由国外的几位大佬共同发起的,为API访问授权提供一套标准:Oauth
  3. oauth2.0 运行流程

    1. A:第三方请求用户获取授权

      B:用户同意授权

      C:第三方带着用户授权向认证服务器获取token

      D:认证服务器校验用户授权后,返回token

      E:带着token请求资源服务器

      F:资源服务器校验token 后返回所需资源

  4. 授权码模式(authorization code)

      1. 第三方服务跟用户索要授权
      2. 用户给予授权
      3. 浏览器拿着加密的用户信息和回调地址给认证服务器
      4. 认证服务器校验用户信息和回调地址后返回授权码。
      5. 第三方应用再根据授权码和回调地址请求认证服务器
      6. 认证服务器校验后返回token
  5. 简化模式(implicit grant type)

    1. 执行流程:
      1. 获取用户授权
      2. 将用户client信息和回调地址发送到认证服务器
      3. 认证服务器校验成功后返回重定向地址和token对象的哈希值
      4. 浏览器带着重定向地址向资源服务器发出请求
      5. 资源服务器返回一个页面,根据hash值获取token信息
  6. 密码模式(Resource Owner Password Credentials Grant)

    1. 执行流程
      1. 用户向客户端提供账号密码
      2. 客户端用账号密码请求认证服务器
      3. 认证服务器校验成功后返回token
  7. 客户端模式(Client Credentials Grant)

    1. 第三方服务带上client信息向认证服务器请求获取token
    2. 认证服务器校验client信息后返回token

oauth2学习的更多相关文章

  1. OAuth2学习及DotNetOpenAuth部分源码研究

    OAuth2学习及DotNetOpenAuth部分源码研究 在上篇文章中我研究了OpenId及DotNetOpenAuth的相关应用,这一篇继续研究OAuth2. 一.什么是OAuth2 OAuth是 ...

  2. OAuth2学习中的一些高频问题的QA

    关于OAuth2相信很多初学者都有一些疑问,胖哥将这些疑问一一收集了起来做成了QA,或许能帮助学习者. OAuth2相关的QA Q:OAuth2 的一些常用场景? A: OAuth2主要用于API授权 ...

  3. Spring Security OAuth2学习

    什么是 oAuth oAuth 协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需 ...

  4. OAuth2学习笔记

    参考:https://aaronparecki.com/oauth-2-simplified/ 1.角色定义 应用程序(客户) 需要获取用户的账号信息,获得相关权限. API服务器 资源服务器就是AP ...

  5. 使用DotNetOpenAuth搭建OAuth2.0授权框架

    标题还是一如既往的难取. 我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物总归趋于混沌,而OAuth协议就是混沌中的产物,不管是1.0. ...

  6. DotNetOpenAuth搭建OAuth2.0

    使用DotNetOpenAuth搭建OAuth2.0授权框架 标题还是一如既往的难取. 我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物 ...

  7. C#搭建Oauth2.0认证流程以及代码示例

    我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物总归趋于混沌,而OAuth协议就是混沌中的产物,不管是1...0a还是2.,单看版本号就 ...

  8. java技术

    线程池的原理及实现:https://blog.csdn.net/hsuxu/article/details/8985931 Java高级工程师面试题总结及参考答案:https://www.cnblog ...

  9. OAuth2.0学习(1-12)开源的OAuth2.0项目和比较

    OAuth2.0学习(2-1)OAuth的开源项目   1.开源项目列表 http://www.oschina.net/project/tag/307/oauth?lang=19&sort=t ...

随机推荐

  1. github编程类书籍

    https://github.com/justjavac/free-programming-books-zh_CN

  2. Fitness初接触

    http://www.fitnesse.org/FitNesseDownload 1. Click on the most recent fitnesse-standalone.jar file an ...

  3. IOS-swift5.1快速入门之旅

    快速之旅 传统表明,新语言中的第一个程序应在屏幕上打印“Hello,world!”字样.在Swift中,这可以在一行中完成: print("Hello, world!") // P ...

  4. 微信小程序列表时间戳转换

    第一步先写js   随便命名为times.js function toDate(number){     var n=number * 1000;     var date = new Date(n) ...

  5. Spring Boot 静态资源处理,妙!

    作者:liuxiaopeng https://www.cnblogs.com/paddix/p/8301331.html 做web开发的时候,我们往往会有很多静态资源,如html.图片.css等.那如 ...

  6. [BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 (Treap+单调队列)

    题面 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个"群".每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi( ...

  7. adb shell常用命令总结

    一.文件操作相关命令 1.文件操作命令 子命令 参数 说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容-n:显示行号-b:显示行号,但 ...

  8. StackExchange.Redis 使用LuaScript脚本模糊查询hash

    原文:StackExchange.Redis 使用LuaScript脚本模糊查询hash 获取redis连接 public class RedisHelper { private static rea ...

  9. python 类的私有属性和方法 (转载)

    转载:http://www.runoob.com/python/python-object.html 类属性与方法 类的私有属性 __private_attrs:两个下划线开头,声明该属性为私有,不能 ...

  10. 初学Java 彩票

    import java.util.Scanner; public class Lottery { public static void main(String[] agrs) { ); Scanner ...