首页 > 其他分享 >OAuth2 认证详解

OAuth2 认证详解

时间:2023-12-21 18:25:36浏览次数:43  
标签:令牌 OAuth2 认证 访问 详解 服务器 授权 资源 客户端

摘自网上内容,写的很好。

是一种开放标准的授权框架,用于授权第三方应用程序访问受保护的资源,而无需提供直接的用户名和密码。它提供了一种安全的授权机制,允许用户授权第三方应用程序代表他们访问受保护的资源。下面将详细解释OAuth2的认证过程和相关概念。

OAuth2认证的主要参与者包括:

  1. 资源所有者(Resource Owner):即最终用户,拥有受保护资源的所有权。

  2. 客户端(Client):第三方应用程序,希望访问受保护资源。

  3. 授权服务器(Authorization Server):负责对资源所有者进行身份验证,并颁发访问令牌。

  4. 资源服务器(Resource Server):存储受保护的资源,并验证访问令牌以确保访问的合法性。

OAuth2认证过程如下:

  1. 注册应用程序:客户端首先需要在授权服务器注册,并获取客户端ID和客户端密钥。这些凭据将用于后续的认证和授权请求。

  2. 获取授权码:客户端将用户重定向到授权服务器,并请求授权。用户将在授权服务器上进行身份验证,并确认是否授权客户端访问其受保护的资源。一旦用户授权,授权服务器将生成一个授权码,并将其返回给客户端。

  3. 获取访问令牌:客户端使用授权码向授权服务器请求访问令牌。客户端将提供客户端ID、客户端密钥和授权码作为验证凭据。授权服务器对这些凭据进行验证,并在验证通过后颁发访问令牌。

  4. 访问受保护资源:客户端将访问令牌发送到资源服务器,并请求访问受保护的资源。资源服务器验证访问令牌的有效性和权限,并根据结果决定是否授予客户端访问受保护资源的权限。

OAuth2认证还涉及一些重要的概念:

  1. 访问令牌(Access Token):代表授权的凭据,用于访问受保护的资源。访问令牌通常具有过期时间,并且可以被客户端使用来请求访问受保护的资源。

  2. 刷新令牌(Refresh Token):用于获取新的访问令牌的凭据。当访问令牌过期时,客户端可以使用刷新令牌向授权服务器请求新的访问令牌,而无需重新进行用户授权。

  3. 范围(Scope):用于限定访问令牌的权限范围。资源服务器可以根据范围的不同,对客户端请求进行授权的级别和限制。

OAuth2认证提供了一种安全和可扩展的方式,允许用户控制第三方应用程序对其受保护资源的访问权限。它广泛应用于各种场景,如社交登录、API访问控制等。

OAuth2 四种认证模式(https://blog.csdn.net/admans/article/details/134238938)

1. Authorization Code(授权码模式)

 

  1. 【步骤1,2】用户访问客户端,需要使用服务提供商的数据(用户信息),客户端通过重定向跳转到服务提供商的页面。
  2. 【步骤3】用户选择是否给予客户端授权访问服务提供商(用户信息)数据的权限。
  3. 【步骤4】用户给与授权。授权系统通过重定向(redirect_uri)并携带 授权凭证(code) 跳转回客户端。
  4. 【步骤5,6】客户端将授权凭证(code)发送给客服端服务器,客户端服务器携带授权码(code)、客户端id(client_id)和秘钥(client_secret)向认证服务器请求访问令牌(access_token)。
  5. 【步骤7,8】认证服务器核对授权码等信息,确认无误后,向客户端服务器发送访问令牌(access_token)和更新令牌(refresh_token),然后客户端服务器再发送给客户端。
  6. 【步骤9,10】客户端持有访问令牌(access_token)和需要请求的参数向客户端服务器发起资源请求,然后客户端服务器再向服务提供商的资源服务器请求资源(web API)。
  7. 【步骤11,12,13】服务提供商的资源服务器返回数据给客户端服务器,然后再回传给客户端使用。

2. Impliclt Grant(隐式授权模式)

 

3. Resource Owner Password Credentials Grant(密码模式)

 

4. Client Credentials Grant(客户端凭证模式)

 

标签:令牌,OAuth2,认证,访问,详解,服务器,授权,资源,客户端
From: https://www.cnblogs.com/andy1234/p/17919807.html

相关文章

  • C9800配置MAB本地认证失败?
    本随笔不记录如何配置C9800上的MAB,而是相关的注意事项。在Release17.3以前的版本,在WEBUI配置MAB时,在添加DeviceAuthentication信息的时候,以xxxx.xxxx.xxxx或者xx:xx:xx:xx:xx:xx格式添加可能都会自动调整为xxxxxxxxxxxx在Release17.3以后得版本,将变化得不这么灵活,它可以添加x......
  • 7z 命令行压缩解压详解-中文版
    1)简介7z,全称7-Zip,是一款开源软件。是目前公认的压缩比例最大的压缩解压软件。主页:http://www.7-zip.org/中文主页:http://7z.sparanoid.com/命令行版本下载:http://7z.sparanoid.com/download.htmlWindows去官网下载安装包安装linux使用命令安装:sudoaptinstallp7zip-full......
  • 【教程】cocos2dx资源加密混淆方案详解
    ​ 【教程】cocos2dx资源加密混淆方案详解1,加密,采用blowfish或其他2,自定是32个字符的混淆code3,对文件做blowfish加密,入口文件加密前将混淆code按约定格式(自定义的文件头或文件尾部)写入到文件4,遍历资源目录,对每个文件做md5混淆,混淆原始串=“相对路径”+“文件名”+混......
  • k8s Ingress使用详解(云原生kubernetes)
    k8s Ingress使用详解(云原生kubernetes)目录一、什么是Ingress二、Ingress工作机制三、Ingress核心概念四、Ingress工作原理五、Ingress使用搭建Ingress环境1、获取ingress-nginx2、创建ingress-nginx部署两组service创建tomcat-nginx.yaml配置Http访问代理如何通过外网......
  • 排序算法详解 C# 版
    概述一般使用的八大排序算法是:插入排序、选择排序、冒泡排序、希尔排序、归并排序、快速排序、堆排序、基数排序,每个方法有其适合的使用场景,可以根据具体数据进行选择.冒泡排序//冒泡排序,比较相临两个数的大小,如lst[i]>lst[i+1],则互换位置staticint[]Bu......
  • 原生、复杂流程操作、融合专家系统,详解企业级Agent平台澜码AskXBOT
    文/王吉伟就在ChatGPT上线一年后的第一周,谷歌发布了其最强大模型Gemni,一度被称作GPT-4杀手锏,也被视作谷歌挣回面子的“雪耻”之作。然而没过几天,Gemini就被曝夸大营销,所谓的碾压GPT-4仅是嘴上功夫,通过与GPT-4不一致的测试标准混淆跑分,更被嘲讽是在趁OpenAI内部动荡搞事情。紧接着就......
  • JRebel2022.4 + idea23.2.2 插件使用详解
    下载下载jrebel插件(只能下载2022.4版本),其他版本是需要收费的安装中文路径安装将下载的文件解压,放到另一个全部是英文路径的地方例如这个.jrebel是激活后生成的,本来没有很正常在idea中安装插件修改路径最后一步激活地址:https://jrebel.qekang.com/可以......
  • Python接口测试get请求过程详解
    python做接口测试用到的是requests模块,首先要导入requests库,pipinstallrequests1、get直接请求方式以豆瓣网为例:url='https://read.douban.com/'respose=requests.get(url=url)#status_code为返回的状态码print(respose.status_code)#text为返回的数据print(res......
  • Python接口自动化之文件上传/下载接口详解
    〇、前言文件上传/下载接口与普通接口类似,但是有细微的区别。如果需要发送文件到服务器,例如:上传文档、图片、视频等,就需要发送二进制数据,上传文件一般使用的都是Content-Type:multipart/form-data数据类型,可以发送文件,也可以发送相关的消息体数据。反之,文件下载就是将二进制格式......
  • Python中Selenium模块的使用详解
    Selenium的介绍、配置和调用Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),Firefox,Safari,GoogleChrome,Opera等。这个工具的主要功能包括:测试浏览器的兼容性——......