获取中...

-

Just a minute...

OAuth2

授权码模式

第三方应用先要到授权服务器上进行注册,然后从授权服务器中获取 ClientID 和 ClientSecret,以便能够顺利完成如下授权过程:

  1. 第三方应用将资源所有者(用户)导向授权服务器的授权页面,并向授权服务器提供 ClientID 及用户同意授权后的回调 URI,这是一次客户端页面转向。
  2. 授权服务器根据 ClientID 确认第三方应用的身份,用户在授权服务器中决定是否同意向该身份的应用进行授权,用户认证的过程未定义在此步骤中,在此之前应该已经完成。
  3. 如果用户同意授权,授权服务器将转向第三方应用在第 1 步调用中提供的回调 URI,并附带上一个授权码和获取令牌的地址作为参数,这是第二次客户端页面转向。
  4. 第三方应用通过回调地址收到授权码,然后将授权码与自己的 ClientSecret 一起作为参数,通过服务器向授权服务器提供的获取令牌的服务地址发起请求,换取令牌。该服务器的地址应与注册时提供的域名处于同一个域中。
  5. 授权服务器核对授权码和 ClientSecret,确认无误后,向第三方应用授予令牌。其中必定要有的是访问令牌(Access Token),可选的是刷新令牌(Refresh Token)。
    1. 访问令牌用于到资源服务器获取资源,有效期较短,
    2. 刷新令牌用于在访问令牌失效后重新获取,有效期较长。
  6. 资源服务器根据访问令牌所允许的权限,向第三方应用提供资源。

授权码模式的调用时序图

相关文章
评论
分享
  • System-Security

    认证 认证(Authentication) 系统如何正确分辨出操作用户的真实身份? 通信信道上的认证:你和我建立通信连接之前,要先证明你是谁。在网络传输(Network)场景中的典型是基于 SSL/TLS 传输安全层的认证。 通信...

    System-Security
  • Java虚拟机

    JVM内存结构 VS Java内存模型 VS Java对象模型JVM内存结构Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,其中有些区域随着虚拟机...

    Java虚拟机
  • Computer-Network

    TCPTCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。 T...

    Computer-Network
  • Redis

    Redis介绍Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重...

    Redis
  • MySQL

    数据库基础知识数据库的定义数据库:物理操作文件系统或其他形式文件类型的集合;实例:MySQL 数据库由后台线程以及一个共享内存区组成;在 MySQL 中,实例和数据库往往都是一一对应的,而我们也无法直接操作数据库,而是要通过数据库实例...

    MySQL
  • Java并发

    什么是线程安全,怎么保证线程安全?线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题 如何保证线程安全 JAVA 线程状态转换图示线程共包括以下5种状态。 新建状态(New) : 线程对象...

    Java并发
  • DataStructures-Algorithms

    动态规划动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 背包问题总结背包问题 (Knapsack problem x )...

    DataStructures-Algorithms
  • DataBaseDesign

    MySQL数据库开发规范 所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小敏感,见名知意,最好不超过32字符) 所有的数据库对象名称禁止使用MySQL保留关键字(如 desc、range、match、delayed ...

    DataBaseDesign
  • Design-Patterns

    设计模式主要分三个类型:创建型、结构型和行为型。创建型 Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而...

    Design-Patterns
  • MyBatis

    MyBatis介绍在介绍MyBatis之前先简单了解几个概念:ORM,JPA。 ORMORM(Object-Relationship-Mapping):是对象关系映射的意思,它是一种思想,是指将数据库中的每一行数据用对象的形式表现出来...

    MyBatis
Please check the parameter of comment in config.yml of hexo-theme-Annie!