oauth2.0一键登录那些事(代码片段)

爱叨叨的程序狗 爱叨叨的程序狗     2022-11-29     437

关键词:

OAuth 2.0应用场景

程序员对GiteeGithub都不陌生,Github可能是起源时间最早、用户范围最大的代码开源仓库,Gitee作为国产代码仓库的后起之秀,在用户模块也是做到了兼容Github的功能,如,在Gitee的登录界面可以通过Github授权的方式登录。这就是今天我要讲的OAuth 2.0,大家可以去Gitee体验一下UI交互流程,以更形象的理解OAuth 2.0的授权流程。

OAuth2.0业务角色

作用:

使客户端安全可控的获取”用户“授权,与服务提供商交互。

OAuth 2.0运行流程

摘自RFC 6749.

用户授权方式有五种:

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)

授权方式-以authorization-code为例

认证流程:

  1. 用户访问客户端,客户端跳转至认证服务器认证页面
  2. 用户选择是否授权
  3. 若选择授权,则用户自行选择认证登录,如:验证码、账号密码等
  4. 认证服务器发放Authorization Code,页面从认证服务器Redirection URI到Client
  5. Client拿Authorization Code去请求认证服务器
  6. 若认证无误,则发放Access Token/Refresh Token
信息补充

Access Token: An OAuth Access Token is a string that the OAuth client uses to make requests to the resource server.

Refresh Token: An OAuth Refresh Token is a string that the OAuth client can use to get a new access token without the user’s interaction.

Scope: Scope is a mechanism in OAuth 2.0 to limit an application’s access to a user’s account. An application can request one or more scopes, this information is then presented to the user in the consent screen, and the access token issued to the application will be limited to the scopes granted.


更为形象的流程-来自阿里云

SP:客户端

IDP:认证服务器

A步骤中,客户端申请认证的URI,包含以下参数:

  • response_type:表示授权类型,必选项,此处的值固定为"code"
  • client_id:表示客户端的ID,必选项
  • redirect_uri:表示重定向URI,可选项。认证服务器认证完成后,重定向到客户端的uri
  • scope:表示申请的权限范围,可选项
  • state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。

如:

http://example.com?code=xxx&state=test&response_type=code&client_id=xxxx&redirect_uri=xxxx.com

C步骤中,服务器回应客户端的URI,包含以下参数:

  • code:表示授权码,必选项。该码的有效期应该很短,通常设为10分钟,客户端只能使用该码一次,否则会被授权服务器拒绝。该码与客户端ID和重定向URI,是一一对应关系。
  • state:如果客户端的请求中包含这个参数,认证服务器的回应也必须一模一样包含这个参数。

D步骤中,客户端申请服务端令牌,入参有:

返回值有:

认证流程完成,接下来就可以拿服务端生成的Access Token获取服务端的资源了。

更新token

Access Token 一般都设有过期时间,在访问时如果客户端的访问令牌已经过期,则需要使用”更新令牌“申请一个新的访问令牌。入参使用grantType、refreshToken、scope。

seo那些事:一句代码一键分享网站

这是很久以前就已经写过的笔记了,有一个习惯,每次遇到一个问题,都会进行百度,然后把解决问题的关键点记录下来,有人问我,为什么更新频率如此之快,大部分都是从前积累的知识点。其实每天工作所涉及的知识点都非... 查看详情

oauth2.0-自定义模式授权-短信验证码登录(代码片段)

一、OAuth2.0-自定义模式授权上篇文章我们分析了目前的情况,演示了微服务的大环境下在保证安全的情况下通过SpringGateWay实现统一的鉴权处理,但是前面的演示中,我们都是基于用户名密码的方式,但是现在已经... 查看详情

使用springsecurity登录认证,通过oauth2.0开发第三方授授权访问资源项目详解(代码片段)

1.OAuth2.0简介OAuth2.0提供者机制负责公开OAuth2.0受保护的资源。该配置包括建立可独立或代表用户访问其受保护资源的OAuth2.0客户端。提供者通过管理和验证用于访问受保护资源的OAuth2.0令牌来实现。在适用的情况下,提供商还必须... 查看详情

oauth2.0知多少(代码片段)

 1.引言周末逛简书,看了一篇写的极好的文章,点击大红心点赞,就直接给我跳转到登录界面了,原来点赞是需要登录的。可是没有我并没有简书账号,一直使用的QQ的集成登录。下面有一排社交登录按钮,我们可以用第三... 查看详情

cas单点登录:开启oauth2.0协议(代码片段)

1.添加依赖<dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-oauth-webflow</artifactId><version>$cas.version</version></dependency&g 查看详情

反向工程解析qq扫码登录的oauth2流程(代码片段)

1.引言-与OAuth2有关??OAuth2.0协议(RFC6749)被广泛应用于互联网应用中,最常见的可能就是第三方授权登录应用了。在许多应用网站中用户登录时,可以使用支付宝、微信、QQ的已有账号进行登录,这些应用网站与阿里、腾讯共享了用... 查看详情

oauth2.0学习(代码片段)

2019年也过了四分之三了,一直在忙着项目的事情都没有静下心来好好学习。前几天Google第三方登录又出问题了,报的是com.google.android.gms.common.api.ApiException:10这个错误,查了一圈,说是配置错误。之前在做Google第... 查看详情

const那些事(代码片段)

Const那些事const对象默认为文件局部对象注意:非const变量默认为extern。要使const变量能够在其他文件中访问,必须在文件中显示地指定它为extern。未被const修饰的变量在不同文件的访问//file1.cppintext;//默认为extern//file2.cpp#include<i... 查看详情

微信第三方登录集成(代码片段)

...接入微信第三方登录准备工作。移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并... 查看详情

支持oauth2.0协议认证,jumpserver堡垒机v2.25.0发布(代码片段)

...机正式发布v2.25.0版本。在这一版本中,用户登录支持OAuth2.0协议认证方式,管理员配置OAuth2相关的认证信息,用户在登录时即可通过OAuth2认证方式进行认证登录。同时,系统设置新增系统⼯具Ping和Telnet,更方... 查看详情

异常的那些事(代码片段)

使用traceback获取详细的异常信息try:1/0exceptException,e:printe结果:integerdivisionormodulobyzero只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。 下面使用traceback模块importtracebacktry:1/0exceptException,e:traceback.print_exc(... 查看详情

springboot+oauth2.0实现微信扫码登录,这才叫优雅!!(代码片段)

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇微信开放平台:微信扫码登录功能官方文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html1授权流程说明微信OAut 查看详情

oauth2.0入门与进阶(代码片段)

 一、基础知识1、OAuth产生背景  很多网站、APP弱化甚至没有搭建自己的账号体系,而是直接使用社会化登录的方式,这样不仅免去了用户注册账号的麻烦、还可以获取用户的好友关系来增强自身的社交功能。  比如我们... 查看详情

闭包那些事(代码片段)

定义:在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。 例子: 1defmake_adder(addend):2defadder(augend):3returnaugend+addend4returnadder6p=make_adder(23)7q=make_adder(44)89p... 查看详情

xampp那些事(代码片段)

xampp依赖库https://www.microsoft.com/zh-CN/download/details.aspx?id=29下载地址https://www.apachefriends.org/zh_cn/download.htmlxampp数据库配置修改注意事项Composer官网https://getcomposer.org/download/Composer安装注意事项D:xamp 查看详情

基于oauth2.0实现应用的第三方登录(代码片段)

OAuth2OAuth2所涉及到的对象主要有以下四个:Client第三方应用,我们的应用就是一个ClientResourceOwner资源所有者,即用户AuthorizationServer授权服务器,即提供第三方登录服务的服务器,如GithubResourceServer拥有资源信息的服务器,通常... 查看详情

static那些事(代码片段)

static那些事当与不同类型一起使用时,static关键词具有不同的含义。静态变量:函数中的变量、类中的变量静态类的成员:类对象和类中的函数静态变量函数中的静态变量当变量声明为static时,空间将在程序的生命周期内分配。... 查看详情

关于android性能监控matrix那些事?你知道那些?(完)(代码片段)

关于Android性能监控Matrix那些事?你知道那些?(上)关于Android性能监控Matrix那些事?你知道那些(中)?视频也更新了:微信Matrix卡顿监控实战,函数自动埋点监控方案今天抽空把后面的... 查看详情