基于Oauth2.0的第三方账号登录实现

简介: ​ 基于 Oauth 2.0 的第三方账号登录实现 Oauth 2.0 原理与授权流程 1.刚开始的第三方应用接入其他账号登录过程: ​ 2.使用oauth改进的原理: ​ 3.使用oauth实现的具

基于 Oauth 2.0 的第三方账号登录实现

Oauth 2.0 原理与授权流程

  • 1.刚开始的第三方应用接入其他账号登录过程: 

存在问题:

  • 1.用户账号、密码信息透露给了第三方应用,导致安全问题
  • 2.用户要回收授权,只能通过修改密码来实现,此时如果有多个第三方应该,所有授权一起被回收
  • 3.很难安全的实现对不同的第三方应用给予不用的权限
  • 2.使用oauth改进的原理: 
  • 3.使用oauth实现的具体流程: 

3个关键过程:

  • 1.用户在服务商授权页完成授权,获得code
  • 2.第三方应用取得code后访问服务商应用,获得access_token
  • 3.第三方应用以access_token为凭证到服务商获取资源

百度平台授权流程及接口调用

Server端使用百度OAuth2.0授权调用开放API流程

  1. 引导用户到如下地址进行授权: http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
  2. 如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE 。
  3. 换取Access Token。 https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
code: 是授权成功后跳转到redirect_uri后面带的code
client_id: 是apiKey
client_secret:是secretKey
redirect_uri:是回调的url

测试用例

返回结果:
{
"expires_in": 2592000,
"refresh_token": "22.3fcc01b887492aa1776c64d22c5a4848.315360000.1865835419.2956862442-15580017",
"access_token": "21.90c30aff2eff3cffa42b49c152e9feae.2592000.1553067419.2956862442-15580017",
"session_secret": "b4a40269b5b1e7951d704bf5ff917d9e",
"session_key": "9mnRfQpMu/CXDG0NYlKZmj5DgbjYnUZHeePW5Z7chFc+/PFjB7Cv3MiS12m7iz8AP4SrYgz2HhwWNeC9/yFmy51Xu7sLiW9qZLg=",
"scope": "basic"
}

返回结果:
{
"uid": "2956862442",  (这个可以保存到数据库中做逻辑登录)
"uname": "幸运的深仔",
"portrait": "6db0e5b9b8e8bf90e79a84e6b7b1e4bb94353a"
}

目录
相关文章
|
8月前
|
移动开发 算法 编译器
OAUTH之 钉钉第三方授权登录
OAUTH之 钉钉第三方授权登录
371 0
|
8月前
|
Java Maven
淘东电商项目(32) -SSO单点登录(集成SSO认证服务)
淘东电商项目(32) -SSO单点登录(集成SSO认证服务)
48 0
|
8月前
|
前端开发
淘东电商项目(33) -SSO单点登录(改造SSO认证服务登录界面)
淘东电商项目(33) -SSO单点登录(改造SSO认证服务登录界面)
46 0
|
12月前
|
数据安全/隐私保护
认证服务:注册和登录
认证服务:注册和登录
|
12月前
|
存储 NoSQL 应用服务中间件
SSO(单点登陆)
SSO(单点登陆)
|
存储 开发框架 安全
快速理解 IdentityServer4 中的认证 & 授权
在实际的生产环境中,存在各种各样的应用程序相互访问,当用户访问 `app` 应用的时候,为了安全性考虑,通常都会要求搭配授权码或者安全令牌服务一并访问,这样可有效地对 `Server` 端的 `API` 资源起到一定程度的有效保护...
401 0
快速理解 IdentityServer4 中的认证 & 授权
|
SQL 安全 Java
自定义OAuth2短信登录GrantType
`Spring`提供的原生的`OAuth2`依赖内置了几种比较常用的授权方式:`password`、`authorization-code`、`client_credentials`、`refresh_token`、`implicit`等,虽然可以满足我们日常的需求,不过针对一些特殊的需求还是捉襟见肘,有点无奈,比如:`微信登录`、`短信登录`...,针对这一点`ApiBoot`通过修改`Spring OAuth2`依赖的源码,可以根据业务进行自定义添加`grantType`。
|
XML 安全 C++
认证与授权——单点登录协议盘点:OpenID vs OAuth2 vs SAML
无论是Web端还是移动端,现在第三方应用账户登录已经成为了标配,任意打开个网站都可以看到,QQ/微信账号登录的字样。使用第三方账户的登录的过程,既要限制用户身份只让有效注册用户才能登录,还要根据注册用户的不同身份来控制能浏览的内容,这就需要认证和授权 相关文章链接: OAuth2.
2131 0
|
负载均衡 Kubernetes 容器
统一认证中心 Oauth2 认证坑
统一认证Oauth2的认证完美填坑
|
数据安全/隐私保护
OIDC SSO - 相关SSO流程和注意事项
## 背景信息 > OIDC SSO相关文档总共4篇,主要内容为对OIDC实现SSO登录流程时的各个细节和相关技术的阐述:1. 《[OIDC SSO - OAuth2.0的授权模式选择](https://ata.alibaba-inc.com/articles/218489)》 2. 《OIDC SSO - 相关SSO流程和注意事项》 3. 《[OIDC SSO - Discovery Mech
507 0