首页 > 其他分享 >OAuth2 简介

OAuth2 简介

时间:2023-01-31 20:57:07浏览次数:72  
标签:code OAuth2 URL 简介 client 授权 服务器 Authorization

OAuth 是一种授权框架,用来让用户允许第三方应用访问他的账户资源的一种授权框架,例如很多网站提供的 QQ/微信/微博登录,即使该网站和腾讯微博并没有什么关系。

OAuth 定义了四个角色:
Resource Owner:资源所有者,也就是用户
Client:客户端,例如你想要使用 QQ 登录博客园网站,那么博客园就是 Client
Resource Server:资源服务器,例如 QQ 服务器
Authorization Server:授权服务器,例如 QQ 服务器

对于开发者来说通常 Resource Server 和 Authorization Server 是绑定在一起的。

OAuth 的简化抽象授权流程如下图所示:

应用向用户请求授权,当授权被同意以后,应用请求并获取令牌,然后通过令牌向资源服务器请求服务。

同时应用在使用 OAuth 之前,需要向授权服务器注册并至少提供应用名,应用站点和回调 URL 等信息。在注册完成以后,授权服务将提供 client identifier 和 client secret 来标识和证明应用的身份,client identifier 是公开的,但是 client secret 是机密。

OAuth2 定义了三种主要的授权方式:

  1. Authorization Code
  2. Client Credentials
  3. Device Code

Authorization Code

Authorization Code 是应用最多的,适用于服务端应用程序,也就是各种网站站点。具体流程如下

首先进入授权页面,例如

/v1/oauth/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_URL&scope=read

然后在该页面完成授权,例如

然后跳转到你的应用注册的回调 URL,并且携带上 Authorization Code,此时 Redirect 的 URL 类似这样

https://cnblogs.com/callback?code=AUTHORIZATION_CODE

那么此时你已经获得了授权码,此时向授权服务器请求 Token,当获得到 Token 以后就可以向资源服务器请求资源。

Client Credentials

Client Credentials 直接向授权服务器发送证书,请求 Token,例如 Post 发送 URL https://oauth.example.com/token?grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

Device Code

适用于没有浏览器或者输入方式受限的设备,实际可见二维码登录等。

机器首先 Post 发送 device code 授权请求(同时携带 Client ID),然后授权服务器可能返回一个如下的响应

{
  "device_code": "IO2RUI3SAH0IQuESHAEBAeYOO8UPAI",
  "user_code": "RSIK-KRAM",
  "verification_uri": "https://example.okta.com/device",
  "interval": 10,
  "expires_in": 1600
}

其中 device_code 可能是类似的一串代码,又或者是一个 URL 或者是一个二维码。

  1. 如果是一串代码,用户方法在指定的 URL 输入这串代码
  2. 如果是一个 URL,用户访问这个 URL
  3. 如果是一个二维码,用户扫描这个二维码

然后应用轮询这个 verification_uri,知道返回错误或者返回 Token。

标签:code,OAuth2,URL,简介,client,授权,服务器,Authorization
From: https://www.cnblogs.com/freesfu/p/17080732.html

相关文章

  • 易语言简介
    易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛。易语言早期版本的名字为E语言。其最早的版本的发布可追溯至2000年9月11日。创造易语言的初衷是进......
  • JS语言简介
    JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript......
  • seql sever INSERT语句简介
    INSERT语句简介要向表中添加一行或多行,可以使用INSERT语句。下面说明了INSERT语句的最基本形式: INSERTINTOtable_name(column_list) VALUES(value_list);......
  • 歪兔工具条(YToolsforArcMap)简介之自然资源确权地籍调查表、登记簿制作工具
    相关链接:歪兔工具条(YToolsforArcMap)简介之自然资源确权地籍图图廓(标准分幅图)制作工具将登记单元信息、自然资源信息、关联信息写入一维数据表(Excel,各表以登记单元编码关联......
  • (原创)【B4A】一步一步入门01:简介、开发环境搭建、HelloWorld
    一、前言作者注:絮絮叨叨,可跳过不看。一直有开发跨平台软件的需求。因为我的主力是C#,所以当MAUI出现后,我欣喜若狂的开始学习研究。但是经历了两个月左右的时间,我弃坑了,我......
  • 16.1 SQL Server角色简介
    SQLServer角色目录SQLServer角色简介把用户添加到角色示例创建用户自定义角色总结简介角色是一组权限。角色帮助简化权限管理。例如,可以将权限分组到一个角色中,并将用......
  • OAuth2.0
    TheOAuth2.0AuthorizationFrameworkOAuth2.0授权框架支持第三方访问有限的HTTP服务,通过在资源所有者和HTTP服务之间进行一个批准交互来代表资源者去访问这些资源,或者......
  • 【数据结构和算法】Trie树简介及应用详解
    作者:京东物流马瑞1什么是Trie树1.1Trie树的概念Trie树,即字典树,又称单词查找树或键树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以......
  • [etcd]简介与安装
    简介etcd是一个采用Raft协议实现强一致性的分布式键值数据库,它提供了一种可靠的方式存储需要被分布式系统或机器集群访问的数据。常见使用场景:服务注册与发现、键值对存......
  • 第五节:Less、Scss简介以及核心用法总结
    一.Less简介       二.Less核心用法       三. Scss简介      四. Scss核心用法        !作 ......