OAuth2.0授权-gitee授权码模式
OAuth2.0授权验证-gitee授权码模式
本文主要介绍如何笔者自己是如何使用gitee提供的OAuth2.0协议完成授权验证并登录到自己的系统,完整模式如图

1、创建应用
打开gitee个人中心->第三方应用->创建应用
创建应用后在我的应用界面,查看已创建应用的Client ID和Client Secret
2、对接
如何对接呢?gitee提供了开放文档,打开任意一个gitee页面,到页脚部分,找到OpenAPI,这里就是gitee提供的开放文档了,下面开始根据文档进行对接
- 1、回调地址
根据协议,我们必须设置一个回调地址,来接收认证中心反馈给我们的信息,由于我是使用了vue+.net前后端分离的架构。所以需要再vue项目中创建一个页面,配置路由,并放开访问权限,这个页面的主要作用是为了让用户感知授权过程、授权成功后,回调页面会接收到state和code并转发给callback接口,页面显示授权成功,并随后关闭页面
{
path: "/oauth-callback",
name: "Callback",
component: () => import("@/views/login/Callback.vue"),
meta: {
title: "认证中心回调页面",
showLink: false,
rank: 101
}
}
- 2、callback接口
接收由步骤1传递过来的参数,并根据规则解析state,根据code参数,调用官方提供的api获取token,当拿到token后,就可以调用其他api了,也可以对token进行保存等其他操作。
var giteeTokenResult = await "https://gitee.com/oauth/token"
.SetQueryParams(new { grant_type = "authorization_code", code = input.Code, client_id = authorizationCenter.ClientId, redirect_uri = authorizationCenter.RedirectUri, client_secret = authorizationCenter.ClientSecret })
.PostAsync()
.ReceiveJson<GiteeTokenResult>();
我们这里调用了获取用户信息的接口,根据反馈的用户信息,去后面的逻辑
oAuth2UserInfo = await "https://gitee.com/api/v5/user"
.WithHeader("User-Agent", "purest-admin")
.SetQueryParams(new { access_token = giteeTokenResult.AccessToken })
.GetJsonAsync<OAuth2UserInfo>();
oAuth2UserInfo.Type = OAuth2TypeConst.GITEE;
- 3 用户注册以及绑定
当检测到系统中存在此认证用户后,检查是否有绑定本项目的用户,如果有直接返回token。登录到首页,如果没有则去绑定或注册
var oAuth2User = await _oAuth2UserManager.GetOAuth2UserPersistenceIdAsync(oAuth2UserInfo);
if (oAuth2User.UserId.HasValue)
{
var (accessToken, userInfo) = await GetTokenAndUserInfoAsync(oAuth2User.UserId.Value);
await _hubContext.Clients.Client(stateInfo.ConnectionId).NoticeRedirect(accessToken, userInfo);
}
else
await _hubContext.Clients.Client(stateInfo.ConnectionId).NoticeRegister(oAuth2User.PersistenceId);
3、测试

4、总结
gitee接入没遇到什么特别的问题,按部就班就完成了。接口如果调用异常,基本都是因为访问权限的问题,酌情处理吧
最后附上项目地址,如果您觉得还行,麻烦给个star吧。您的鼓励是我坚持更新的动力!
gitee:https://gitee.com/dymproject/purest-admin
github: https://github.com/dymproject/purest-admin
OAuth2.0授权-gitee授权码模式的更多相关文章
- OAuth2.0学习(1-6)授权方式3-密码模式(Resource Owner Password Credentials Grant)
授权方式3-密码模式(Resource Owner Password Credentials Grant) 密码模式(Resource Owner Password Credentials Grant ...
- OAuth2.0认证和授权以及单点登录
https://www.cnblogs.com/shizhiyi/p/7754721.html OAuth2.0认证和授权机制讲解 2017-10-30 15:33 by shizhiyi, 2273 ...
- OAuth2.0和SSO授权的区别
OAuth2.0和SSO授权 一.OAuth2.0授权协议 一种安全的登陆协议,用户提交的账户密码不提交到本APP,而是提交到授权服务器,待服务器确认后,返回本APP一个访问令牌,本APP即可用该 ...
- NET Core实现OAuth2.0的ResourceOwnerPassword和ClientCredentials模式
NET Core实现OAuth2.0的ResourceOwnerPassword和ClientCredentials模式 前言 开发授权服务框架一般使用OAuth2.0授权框架,而开发Webapi的授 ...
- OAuth2.0 四种授权模式
OAuth2.0简单笔记(四种授权模式) 金天:坚持写东西,不是一件容易的事,换句话说其实坚持本身都不是一件容易的事.如果学习有捷径,那就是不断实践,不断积累.写笔记,其实是给自己看的,是体现积累的一 ...
- springboot+spring security +oauth2.0 demo搭建(password模式)(认证授权端与资源服务端分离的形式)
项目security_simple(认证授权项目) 1.新建springboot项目 这儿选择springboot版本我选择的是2.0.6 点击finish后完成项目的创建 2.引入maven依赖 ...
- OAuth2.0 用户验证授权标准 理解
OAuth2.0是一套标准. 一.问题 这个标准解决了这样的一个问题. 允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. ...
- 理解OAuth2.0协议和授权机制
无论是自然资源还是互联网上的资源,需要控制使用权与被使用权,以保护资源的安全.合理的使用和有效的管控. 项目中,我们需要控制的是用户资源,既要保证有效用户的合理使用,又要防范非法用户的攻击.如此,如何 ...
- 一步步搭建最简单oauth2.0认证和授权
oauth2.0 最早接触这个概念是在做微信订阅号开发.当时还被深深的绕进去,关于oauth2.0的解释网上有好多,而且都讲解的比较详细,下面给大家价格参考资料. http://owin.org/ h ...
- OAuth2.0认证和授权机制讲解
第一章.OAuth2.0 介绍 OAuth认证 OAuth认证是为了做到第三方应用在未获取到用户敏感信息(如:账号密码.用户PIN等)的情况下,能让用户授权予他来访问开放平台(主要访问平台中的资源服务 ...
随机推荐
- oeasy 教您玩转 linux 之 010302 火狐浏览器 firefox
我们来回顾一下 上一部分我们都讲了什么? oneko xeyes 这次看看这个火狐 火狐 看看当前版本 看看是否可以更新 如果需要更新就更新 firefox -v apt search f ...
- [oeasy]python0048_取整_int_float_浮点型_cast_扮演_tab_制表键_制表符
转化为10进制 回忆上次内容 上次 把其他进制 转化回 十进制 用的是 int 函数 int 来自于 integer 同源词 还有 integrate entire 意思都是完整的 完整的 和 零散的 ...
- AT_abc182_d 题解
洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 从数轴的原点开始向正方向走. 第一次向前走 \(a_1\) 步,第二次向前走 \(a_ ...
- 数据分析应该掌握的知识及SQL技能
一.概念及常识 1.数据分析必备的统计学知识 描述统计学 1.平均值.中位数.众数 2.方差.标准差 3.统计分布:正态分布.指数分布.二项分布.卡方分布 推论统计学 1.假设检验 2.置信区间 3. ...
- 使用JavaScript编写vue指令v-model,v-model原理实现
首先先要知道的是v-model的作用是实现数据的双向绑定,即: 数据在视图层的双向响应. 实现思路主要分为两步: 第一步:数据层到视图层的响应 将数据响应到视图层的方式,在vue2使用的是Object ...
- 计算机二级考试 C语言篇
本篇仅适用于计算机二级考试C语言篇 首先介绍一下二级考试时间问题(以本人考试2022年为例): 一. 2022年全国计算机二级考试时间 2022年全国计算机考试举办4次,(3月.5月.9月.12月 ...
- [UE源码] 关于使用UE待改进的一些尝试
UE从自己做了一款游戏后,发现了蓝图以及UE引擎本身的一些优缺点: 1.蓝图在一些简单的逻辑上书写方便,直观,而且编译速度快,但是也有一些其他问题: 结构体赋值后,无法二次修改 只有3种容器Array ...
- JMeter+Ant+Jenkins接口自动化测试框架(Windows)
一:简介 大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件:Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具.将这三者结合起 ...
- 交叉熵、KL 散度 | 定义与相互关系
1 KL 散度 对于离散概率分布 \(P\) 和 \(Q\) ,KL 散度定义为: \[\text{KL}(P \| Q) = -E_{x\sim P}\log P(x)-\log Q(x) \\ = ...
- php使用jwt作登录验证
JWT官网 https://jwt.io/ 选择第一个 composer require firebase/php-jwt use Firebase\JWT\ExpiredException;use ...