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