微服务开放平台接口设计
什么是開(kāi)放平臺(tái)接口
在一些大型互聯(lián)網(wǎng)公司,隨著公司的業(yè)務(wù)發(fā)展逐漸龐大,需要和外部合伙伙伴進(jìn)行合作,需要將公司的接口開(kāi)放給外部其他合伙伙伴進(jìn)行調(diào)用。
比如騰訊的?QQ互聯(lián)網(wǎng)、微信開(kāi)放平臺(tái)、螞蟻金服開(kāi)放平臺(tái)?、釘釘開(kāi)放平臺(tái)、微博開(kāi)放平臺(tái),比如實(shí)現(xiàn)功能QQ聯(lián)合登陸、微信掃碼登陸比如騰訊的QQ互聯(lián)網(wǎng)、微信開(kāi)放平臺(tái)、螞蟻金服開(kāi)放平臺(tái)?、微博開(kāi)放平臺(tái),比如實(shí)現(xiàn)功能QQ聯(lián)合登陸、微信掃碼登陸。
還有就是在大型集團(tuán)公司中,分為總公司,和旗下多個(gè)分公司,總公司與分公司相互通訊也可以采用開(kāi)放平臺(tái)形式對(duì)接口進(jìn)行授權(quán)。
什么是Oauth2.0
OAuth: OAuth(開(kāi)放授權(quán))是一個(gè)開(kāi)放標(biāo)準(zhǔn),允許用戶授權(quán)第三方網(wǎng)站訪問(wèn)他們存儲(chǔ)在另外的服務(wù)提供者上的信息,而不需要將用戶名和密碼提供給第三方網(wǎng)站或分享他們數(shù)據(jù)的所有內(nèi)容。
QQ登錄OAuth2.0:對(duì)于用戶相關(guān)的OpenAPI(例如獲取用戶信息,動(dòng)態(tài)同步,照片,日志,分享等),為了保護(hù)用戶數(shù)據(jù)的安全和隱私,第三方網(wǎng)站訪問(wèn)用戶數(shù)據(jù)前都需要顯式的向用戶征求授權(quán)。
QQ登錄OAuth2.0采用OAuth2.0標(biāo)準(zhǔn)協(xié)議來(lái)進(jìn)行用戶身份驗(yàn)證和獲取用戶授權(quán),相對(duì)于之前的?OAuth1.0協(xié)議,其認(rèn)證流程更簡(jiǎn)單和安全。
在開(kāi)放平臺(tái)接口設(shè)計(jì)中,遵循Oauth2.0認(rèn)證授權(quán)協(xié)議 JWT。
QQ授權(quán)用到的字段屬性介紹:
appid:應(yīng)用的唯一標(biāo)識(shí)。在OAuth2.0認(rèn)證過(guò)程中,appid的值即為oauth_consumer_key的值。商戶號(hào)? ?永久不能進(jìn)行修改的,就像我們的身份證號(hào)一樣。
appkey:appid對(duì)應(yīng)的密鑰,訪問(wèn)用戶資源時(shí)用來(lái)驗(yàn)證應(yīng)用的合法性。在OAuth2.0認(rèn)證過(guò)程中,appkey的值即為oauth_consumer_secret的值。商戶密鑰?這個(gè)可以進(jìn)行修改,但是應(yīng)該注意修改過(guò)之后進(jìn)行同步的問(wèn)題。
授權(quán)碼Code:獲取accessToken。
accessToken:調(diào)用接口權(quán)限訪問(wèn)令牌。
回調(diào)地址:授權(quán)成功之后,重定向的地址。
openId:開(kāi)放平臺(tái)生產(chǎn)唯一的用戶Id。
Oauth2授權(quán)原理
OAuth認(rèn)證和授權(quán)的過(guò)程如下:
1、用戶訪問(wèn)第三方網(wǎng)站網(wǎng)站,想對(duì)用戶存放在服務(wù)商的某些資源進(jìn)行操作。
2、第三方網(wǎng)站向服務(wù)商請(qǐng)求一個(gè)臨時(shí)令牌。
3、服務(wù)商驗(yàn)證第三方網(wǎng)站的身份后,授予一個(gè)臨時(shí)令牌。
4、第三方網(wǎng)站獲得臨時(shí)令牌后,將用戶導(dǎo)向至服務(wù)商的授權(quán)頁(yè)面請(qǐng)求用戶授權(quán),然后這個(gè)過(guò)程中將臨時(shí)令牌和第三方網(wǎng)站的返回地址發(fā)送給服務(wù)商。
5、用戶在服務(wù)商的授權(quán)頁(yè)面上輸入自己的用戶名和密碼,授權(quán)第三方網(wǎng)站訪問(wèn)所相應(yīng)的資源。
6、授權(quán)成功后,服務(wù)商將用戶導(dǎo)向第三方網(wǎng)站的返回地址。
7、第三方網(wǎng)站根據(jù)臨時(shí)令牌從服務(wù)商那里獲取訪問(wèn)令牌。
8、服務(wù)商根據(jù)令牌和用戶的授權(quán)情況授予第三方網(wǎng)站訪問(wèn)令牌。
9、第三方網(wǎng)站使用獲取到的訪問(wèn)令牌訪問(wèn)存放在服務(wù)商的對(duì)應(yīng)的用戶資源。
?
QQ聯(lián)合登錄的流程
1、 生成授權(quán)Code鏈接,獲取授權(quán)碼
2、 根據(jù)用戶獲取的授權(quán)碼,獲取對(duì)應(yīng)的AccessToken
3、 根據(jù)AccessToken獲取對(duì)應(yīng)的openId
4、 根據(jù)openId獲取對(duì)應(yīng)的用戶信息
?
SpringCloud Oauth2
在Spring Cloud需要使用oauth2來(lái)實(shí)現(xiàn)多個(gè)微服務(wù)的統(tǒng)一認(rèn)證授權(quán),通過(guò)向OAUTH服務(wù)發(fā)送某個(gè)類型的grant type進(jìn)行集中認(rèn)證和授權(quán),從而獲得access_token,而這個(gè)token是受其他微服務(wù)信任的,我們?cè)诤罄m(xù)的訪問(wèn)可以通過(guò)access_token來(lái)進(jìn)行,從而實(shí)現(xiàn)了微服務(wù)的統(tǒng)一認(rèn)證授權(quán)。
客戶端根據(jù)約定的ClientID、ClientSecret、Scope來(lái)從Access Token URL地址獲取AccessToken,并經(jīng)過(guò)AuthURL認(rèn)證,用得到的AccessToken來(lái)訪問(wèn)其他資源接口。
Spring Cloud oauth2 需要依賴Spring security
?Oauth2角色劃分
1、Resource Server:被授權(quán)訪問(wèn)的資源
2、Authotization Server:OAuth認(rèn)證授權(quán)中心
3、Resource Owner: 用戶
4、Client:使用API的客戶端(如Android 、IOS、web app)
OAuth2四種授權(quán)方式
1、授權(quán)碼模式(authorization code)用在客戶端與服務(wù)端應(yīng)用之間授權(quán),做授權(quán)使用。
2、簡(jiǎn)化模式(implicit)用在移動(dòng)app或者web app(這些app是在用戶的設(shè)備上的,如 在手機(jī)上調(diào)起微信來(lái)進(jìn)行認(rèn)證授權(quán))
3、密碼模式(resource owner password credentials)應(yīng)用直接都是受信任的(都是由一家公司開(kāi)發(fā)的),使用密碼進(jìn)行驗(yàn)證登錄的。
4、客戶端模式(client credentials)用在應(yīng)用API訪問(wèn)
?
項(xiàng)目整合授權(quán)認(rèn)認(rèn)證中心程圖
?
?
QQ開(kāi)放平臺(tái)地址:http://wiki.connect.qq.com/
源碼地址:https://gitee.com/MingTian-NiHao/springboot-oauht2.0
轉(zhuǎn)載于:https://www.cnblogs.com/ming-blogs/p/11025797.html
總結(jié)
以上是生活随笔為你收集整理的微服务开放平台接口设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mac版本钉钉6.0.18版本无法获取摄
- 下一篇: 学习企业管理最有效的方法就是看这管理类书