不会鉴权不行啊,通过Github理解鉴权

因为最近的一些需求,我不得不对鉴权反复翻检。如是

我通过了一些简单的例子对OAuth全面理解。其实并不高深,大约10分钟,就可以完全理解它。

OAuth 2.0

注册Github OAuth

最后如图

初步握手,获取Code

接口地址

https://github.com/login/oauth/authorize

请求参数

参数 描述
client_id 如上图所示,他是鉴别OAuth的
state 状态标识,面向第三方,可自定义
redirect_uri 回调地址,需要和Github中填写的一致

最后拼接

https://github.com/login/oauth/authorize?client_id=937bcc8fee696da4dde7&state=1&redirect_uri=https://img.i5res.com/#/login

请求后他能给我些什么?

?code=0dbc9506a2a4a0c1a1c9&state=1

请求鉴权回调返回access_token

接口地址

https://github.com/login/oauth/access_token

请求参数

参数 描述
client_id 如上图所示,他是鉴别OAuth的
client_secret 如上图所示,OAuth的秘钥(高密)
code 回调的用户鉴别
redirect_uri 回调地址

最后拼接

https://github.com/login/oauth/access_token?client_id=937bcc8fee696da4dde7&client_secret=63b41a1c278b37f348c956785e7d6d1fbc2084d9&code=4f9968079245b9ddbb8a&redirect_uri=https://img.i5res.com/#/login

请求后返回?

{    
  "access_token":"ACCESS_TOKEN",
  "token_type":"bearer",
  "expires_in":2592000,
  "refresh_token":"REFRESH_TOKEN",
  "scope":"read",
  "uid":100101,
  "info":{...}
}

使用Github的RSET API进行操作

具体参见: GitHub's rest API documentation

https://github.com/login/oauth/access_token
这两个都建议使用GET请求,也可以使用POST
https://api.github.com/user
需要使用HTTP模拟的GET请求!

OAuth的持续发展

是什么

https://blog.csdn.net/a595077052/article/details/118996218

OAuth 2.0 是一种开放协议。
OAuth 2.0 的标准是 RFC 6749 文件。

举例:我们都在网站或者手机应用中见过 “谷歌登陆” 和 “绑定 Facebook“ 这样的按钮。如果你点击这个按钮,就会有一个窗口弹出并显示“这个应用想要访问你的公共个人主页、通讯录……“,同时它会询问你是否授权。概括而言,这就是 OAuth

如今过半数的APP都使用到了这一鉴权方式,他相比对OAuth 1.0的安全性有大幅度提升

发展历程

  • 2007年发布了OAuthCore 1.0:此版本的协议存在严重的安全漏洞
  • 2009年6月发布了OAuthCore 1.0 Revision A:修复了前一版本的安全漏洞,并成为RFC5849
  • 2010年4月发布了OAuth2.0,是OAuth协议的下一版本,但与OAuth 1.0版本互不兼容。

所以我们现在可以只关注 OAuth2.0

OAuth core docs: https://oauth.net/

单点登录

开源项目jwt有简单的描述。

很简单的剖析一下,

一、假设你有很多服务器(集群),你需要一个所有集群都认可的鉴权。

二、你需要携带这份密钥行进在各页面之间。

如果解决这两大问题,那么就可以实现了。

jwt是目前很多公司的解决方案(包括我的学校)

其他第三方平台的鉴权方式

Gateway:网关鉴权