首页 > 其他分享 >开发中需要知道的相关知识点: 什么是 OAuth 2.0 密码授予类型?

开发中需要知道的相关知识点: 什么是 OAuth 2.0 密码授予类型?

时间:2023-04-15 10:38:02浏览次数:55  
标签:知识点 令牌 应用程序 密码 OAuth 授权 2.0

OAuth 详解<3> 什么是 OAuth 2.0 密码授予类型?

开发中需要知道的相关知识点: 什么是 OAuth 2.0 密码授予类型?_访问令牌

OAuth 2.0 密码授权类型是一种在给定用户名和密码的情况下获取访问令牌的方法。它通常仅由服务自己的移动应用程序使用,通常不提供给第三方开发人员。

这篇文章是我们探索常用的 OAuth 2.0 授权类型系列文章的第三篇。之前我们介绍了授权代码隐式授权类型。如果您想在我们开始之前稍微回顾一下并了解有关 OAuth 2.0 的更多信息,请查看OAuth 到底是什么?.

什么是 OAuth 2.0 授权类型?

在 OAuth 2.0 中,术语“授权类型”是指应用程序获取访问令牌的方式。OAuth 2.0 定义了几种授权类型,包括密码授权。OAuth 2.0 扩展还可以定义新的授权类型。

每种授权类型都针对特定用例而设计,无论是网络应用程序、移动或桌面应用程序,还是服务器到服务器应用程序。

OAuth 2.0 密码授予

密码授权是最简单的 OAuth 授权之一,只涉及一个步骤:应用程序提供一个传统的用户名和密码登录表单来收集用户的凭据,并向服务器发出 POST 请求以将密码交换为访问令牌。应用程序发出的 POST 请求如下例所示。

POST /oauth/token HTTP/1.1
Host: authorization-server.com
Content-type: application/x-www-form-urlencoded

grant_type=password
&username=exampleuser
&password=1234luggage
&client_id=xxxxxxxxxx

此请求中的 POST 参数解释如下。

  • grant_type=password- 这告诉服务器我们正在使用密码授予类型
  • username=- 他们在应用程序中输入的用户名
  • password=- 他们在应用程序中输入的用户密码
  • client_id=- 开发者在注册时获得的应用的公共标识符
  • client_secret=-(可选)- 如果应用程序是“机密客户端”(不是移动或 JavaScript 应用程序),那么秘密也包括在内。
  • scope=- (可选)- 如果应用程序请求范围有限的令牌,它应该在此处提供请求的范围。

服务器以与其他授权类型相同的格式回复访问令牌。

{
  "access_token": "MTQ0NjOkZmQ5OTM5NDE9ZTZjNGZmZjI3",
  "token_type": "bearer",
  "expires_in": 3600,
  "scope": "create"
}

何时使用密码授予类型?

密码授权要求应用程序收集用户的密码。这当然正是创建 OAuth 时首先要避免的问题。那么为什么将密码授予作为 OAuth 的一部分包含在内呢?

将密码授予添加到 OAuth 的最初原因是允许 OAuth 之前的应用程序无需任何用户交互即可升级到 OAuth。当 HTTP Basic Auth 被普遍使用时,工作的方式是浏览器会询问用户的密码并将其存储在内部,然后在每次请求时将其呈现给 Web 服务器。这种方法有很多局限性,这就是为什么十多年来它一直没有得到普遍使用的原因。密码授予的理论是允许浏览器通过将用户密码交换为访问令牌,然后在将来继续使用访问令牌来无缝升级到 OAuth。实际上,情况并非如此,许多应用程序开发人员将密码授予误解为从移动应用程序使用 OAuth 的可接受方式。今天,OAuth 2.0 安全最佳当前实践有效地从 OAuth 中删除了密码授予。

标签:知识点,令牌,应用程序,密码,OAuth,授权,2.0
From: https://blog.51cto.com/demo007x/6192218

相关文章

  • 会计知识点
    会计知识点1利润表1.1利润表​当期损益指损益类科目的当期的发生额,即净利润。2资产类2.1现金方式取得金融资产的核算科目:交易性金融资产核算-其他货币资金长期债券投资-银行存款债权投​资-银行存款​长期股权投资-银行存款2.2无形资产摊销额按照受益对象计入相......
  • ubuntu22.04 部署 dnsmasq
    禁用systemd-resolved#sudosystemctldisablesystemd-resolved#sudosystemctlstopsystemd-resolved安装依赖#apt-yinstallmakegcc下载dnsmasq#wgethttps://thekelleys.org.uk/dnsmasq/dnsmasq-2.89.tar.gz安装dnsmasq创建dnsmasq用户#groupadd-rdnsmasq......
  • MCP2542FDT-E/MFVAO符合各种汽车要求,设计用于CAN 2.0和CAN FD网络之间的接口。
    MCP2542FDT-E/MFVAOCANFD收发器设计用作物理总线和CAN协议控制器之间的接口。这些收发器具有适用于CAN协议控制器的差分传输和接收能力。MCP2542CANFD收发器具有出色的环路延迟对称性,可支持面向CANFD的高达8Mbps的数据速率。这些收发器可在高压尖峰和CAN控制器之间提供缓冲。......
  • c# 计算器2.0源码
      主要时间浪费在 //执行计算objectresult=newDataTable().Compute(s,"");这条语句上。如果不加处理,特别大的整数相乘,会提示值太大。只好将整数加个0变为小数;usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;......
  • 前端小知识点扫盲笔记记录8
    前言我是歌谣放弃很容易但是坚持一定很酷今天继续对前端知识的小结命令模式宏命令<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="......
  • Java基础知识点内部类之成员内部类
    一:概述1.成员内部类顾名思义就是写在成员位置的,属于外部类成员。2.成员变量可以被一些修饰符所修饰,比如:private,default,public,static等。3.在成员内部类中,jdk16之前不能定义静态变量,jdk16开始才可以定义静态变量。二;获取内部类对象方法一;当成员内部类被private修饰时,在外部类中......
  • Linux操作系统汇编指令入门级整理知识点
    前言我们大都是被高级语言惯坏了的一代,源源不断的新特性正在逐步添加到各类高级语言之中,汇编作为最接近机器指令的低级语言,已经很少被直接拿来写程序了,不过我还真的遇到了一个,那是之前的一个同事,因为在写代码时遇到了成员函数权限及可见性的问题,导致他无法正确调用想执行的函数,结......
  • 关于“存储新常态2.0”,明白这5点就够了
    企业面临数字化转型中,哪些新兴技术更利于他们开拓与创新呢?Gartner数据中心研究团队研究总监EvanZeng分析指出,通过2017年技术度曲线图来看,在未来5到10年里可能帮助大家建立颠覆性竞争优势的相关新兴技术和趋势中,值得关注的在于:无所不在的人工智能、透明浸入式体验、数字化平台。趋......
  • golang 标准库bytes有哪些知识点
    标准库bytes是Go语言中用来操作字节串(byteslice)的包。以下是bytes包的一些重要知识点:bytes.Buffer类型:这是bytes包中最常用的类型之一。Buffer类型表示一个缓冲区,可以用来动态地构建字节串,也可以用来读取字节串。bytes.NewBuffer()函数:这是一个用来创建bytes.Buffer类型的......
  • 9.【RabbitMQ实战】- RabbitMQ其他知识点
    幂等性MQ消费者的幂等性的解决一般使用全局ID或者写个唯一标识比如时间戳或者UUID或者订单消费者消费MQ中的消息也可利用MQ的该id来判断,或者可按自己的规则生成一个全局唯一id,每次消费消息时用该id先判断该消息是否已消费过在海量订单生成的业务高峰期,生产端有可能就会重复发......