LD is tigger forever,CG are not brothers forever, throw the pot and shine forever.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code and KPI, Keep progress,make a better result.
Survive during the day and develop at night。
目录
概 述
OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。
QQ登录OAuth2.0采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,相对于之前的OAuth1.0协议,其认证流程更简单和安全。
注意使用这个框架时候,表名不要随便改!底层都是写好了的昂!
我们自己做完开放平台api接口,配备的还要有文档,我们自己整合swagger就OK了。
常用开放平台
什么是Oauth2
在微服务里面,Oauth2 有密码模式 授权码模式
认证授权协议,其实都是用链接,点解时候发起授权。比如点击登录,点击了一个连接进行授权。
OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。
QQ登录OAuth2.0:采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,相对于之前的OAuth1.0协议,其认证流程更简单和安全。
appId (商户号,给子公司或者合作商户提供的)+ appKey(密钥,验证密钥) (这俩配套的 都是必备的,并且appID永久不能改,appKey可以改)
accessToken 调用接口权限访问令牌
回调地址 授权成功 重定向地址 保证安全性 不要随便拼接成别的地址了
Authorization code 通过授权码获取accessToken
openId 开放平台生成唯一的id
体验下开放平台——调用QQ互联网接口的大体流程:
用户点击之后,才会获取授权码
注意这个连接的 client_id 就是 appId (商户号,给子公司或者合作商户提供的, 第三方需要的)
state是防止csrf攻击的,随机生成的
PS:如果我们自己设计的话,重要表结构: 回调地址的作用:以连接形式跳转到腾讯获取授权码,用户授权成功之后,跳转到回调地址redirect_uri回调地址(我们自定义的地址)
上面的那个连接是网易自己封装的,我随便截的图,我们开发时候自己封装连接,在我们自己的网站上面,点击这个连接,然后会跳转到腾讯那边
会调用:http://toov5.fuck.com/qqLoginBack?code=23EDESD2346FSDFNWE436346&state=99
2、 使用授权码获取AccessToken
获取到授权码之后,代表登录成功了,但是不代表合作伙伴已经对接成功。 授权码获取accessToken,然后再去获取openId,然后再去数据库查询关联的openId。有的话直接登录,没有就需要关联之
令牌的作用,就是临时的效果作用(10分钟)。
https://graph.qq.com/oauth2.0/token? grant_type=authorization_code&client_id=101462456&client_secret=23EDESD2346FSDFNWE436346&code=23EDESD2346FSDFNWE436346 & redirect_uri=http://mayikt.s1.natapp.cc/qqLoginBack
授权类型 密钥 配置好的appKey 授权码 返回的 Authorization code : 回调地址
在Spring Cloud里面流程底层已经帮助实现了哈 只要关注表接口就OK了
通过访问这个地址就会获取到 accessToken!! 拿到accessToken就可以调用接口了! (父公司可以通过 accessToken 逆向出 谁在调用我的接口。 在表里面accessToken和openId是关联的(每个合作的网站www.toov5.com是唯一的,一个域名一个openid的))、
3、 使用AccessToken获取openId
通过accessToken之后,进而获取用户openId
获取到 openId就可以获取到用户相关信息了,授权码只能用一次! 授权了一段时间后就销毁了。需要重新授权哈
4、 使用openId获取用户信息
https://graph.qq.com/user/get_user_info?access_token=B2FD1997D149313F16C93D91C75AC75E&oauth_consumer_key=101462456&openid=4B1717CBBFE1E900D2A1482C4A18B3BD
accessToken appId openId
此时会返回各种用户信息的~ 包括头像 图片之类的 性别 地址等等
注: 数据库中 user 表 新增一个字段 qq_pen_id 字段
认证授权协议: 通过连接进行授权
Oauth2授权原理
OAuth认证和授权的过程如下:
1、用户访问第三方网站网站(自公司),想对用户存放在服务商的某些资源进行操作。
2、第三方网站(自公司)向服务商(父公司)请求一个临时令牌。
3、服务商验证第三方网站的身份后,授予一个临时令牌。
4、第三方网站获得临时令牌后,将用户导向至服务商的授权页面请求用户授权,然后这个过程中将临时令牌和第三方网站的返回地址发送给服务商。
5、用户在服务商的授权页面上输入自己的用户名和密码,授权第三方网站访问所相应的资源。
6、授权成功后,服务商将用户导向第三方网站的返回地址。
7、第三方网站根据临时令牌从服务商那里获取访问令牌。
8、服务商根据令牌和用户的授权情况授予第三方网站访问令牌。
9、第三方网站使用获取到的访问令牌访问存放在服务商的对应的用户资源。
小结
管理和存储数据节点(小数据量)。
参考资料和推荐阅读
1.链接: 参考资料.