摘要:本文記錄一下我的用戶體系對接實(shí)驗(yàn)中的一些筆記,便于其他的用戶參閱。該服務(wù)是服務(wù),有獨(dú)立的用戶登錄登出功能。結(jié)語本文給出了一個最簡單的對接第三方用戶體系的方法。原文標(biāo)題騰訊管理端用戶體系對接發(fā)布日期原文鏈接。
背景
這段時(shí)間一直在基于 Tars 作開發(fā)。最近的文章也多是針對 Tars 的一些學(xué)習(xí)筆記。前面我們搭建了 Tars 基礎(chǔ)框架,打開了 Tars web 管理界面進(jìn)行服務(wù)的運(yùn)維操作。不過讀者肯定很快就會發(fā)現(xiàn):這好像不用登錄啊,那怎么保證只有有權(quán)限的用戶才能更改服務(wù)呢?
顯然 Tars web 是支持用戶鑒權(quán)的。官方文檔在這里。本文記錄一下我的用戶體系對接實(shí)驗(yàn)中的一些筆記,便于其他 Tars 的用戶參閱。(特別是像我這樣對 Node.js 不熟悉的小白……)
本系列文章:
騰訊 Tars 基礎(chǔ)框架手動搭建——填掉官方 Guide 的坑
騰訊 Tars-Go 服務(wù) Hello World——從 HTTP 開始
騰訊 Tars-Go 服務(wù) Hello World——RPC 通信
騰訊 Tars-Go 服務(wù)獲取自定義模版(配置)值
騰訊 Tars Web 管理端用戶體系對接(本文)
本文地址:https://segmentfault.com/a/1190000019657656
Tars 用戶鑒權(quán)流程 準(zhǔn)備如果要啟用 Tars web 的用戶功能,那么首先開發(fā)者需要設(shè)計(jì)一個自己的用戶登錄服務(wù)。該服務(wù)是 http 服務(wù),有獨(dú)立的用戶登錄、登出功能。Tars Web 本身實(shí)現(xiàn)了一個簡單的用戶功能,不過本文我們重新設(shè)計(jì)一個。為便于說明,我們假設(shè)這個 Tars web 和用戶服務(wù) web 環(huán)境如下:
Tars Web URL:https://tars.amc.com
用戶 Web URL:https://user.amc.com
基本流程從用戶通過瀏覽器訪問 Tars web 管理平臺開始,如果啟用了用戶功能,那么基本流程如下:
一言以蔽之:每當(dāng)瀏覽器向 Tars web 發(fā)起一個請求時(shí),Tars web 均向用戶服務(wù)器發(fā)起請求,判斷用戶是否有權(quán)限;如果鑒權(quán)通過,則正常操作 Tars;如果沒有,則重定向至用戶登錄頁面。
Tars Web 端配置用戶體系配置在 TarsWeb/config/loginConfig.js 文件中,讀者可以查詢代碼直接研究詳細(xì)用法,我這邊對接的是最基礎(chǔ)的功能(其實(shí)也夠用了),下面列出涉及到的相關(guān)配置值:
module.exports = { enableLogin: true, // 啟用登錄驗(yàn)證 loginUrl: "https://user.amc.com/login.html", // 當(dāng)鑒權(quán)失敗時(shí),重定向的 URL redirectUrlParamName: "redirect_url", // 上述重定向時(shí),在 URL 中帶 Tars 原 URL 的參數(shù)名。后文說明 uidCookieName: "uid", // 用戶服務(wù)在 cookies 里用于保存用戶名的 cookie 名 ticketCookieName: "ticket", // 用戶服務(wù)在 cookies 里用于保存票據(jù)的 cookie 名 cookieDomain: "amc.com", // 用戶服務(wù)的 cookies 所屬的域,注意需讓 Tars web 能夠訪問到 validate: "https://auth.amc.com/cgi-bin/validate", // Tars Web 向用戶服務(wù)判斷是否有去用戶權(quán)限時(shí)使用的請求 validateUidParamName: "uid", // 請求 validate 時(shí),POST body 中存放用戶名的參數(shù)名 validateTicketParamName: "ticket", // 請求 validate 時(shí),POST body 中存放票據(jù)的參數(shù)名 validateMatch: [ // validate 返回 JSON 響應(yīng)時(shí),Tars Web 如何判斷結(jié)果 ["code", 0], // 這樣表示判斷條件為 resp.code == 0 ["data.result", true] // 表示判斷條件為 resp.data.result == true ], // 多個條件為 AND 的關(guān)系,需要全部條件均通過才認(rèn)為鑒權(quán)通過 ignore: ["/static"], // 表示不需要登錄校驗(yàn)的路徑,如果每個請求都向用戶鑒權(quán)一下,還是很浪費(fèi)的 ignoreIps: [], // 訪問 IP 白名單 };
有了這個配置之后,我們重新說明一下前文的圖片:
無票據(jù)或票據(jù)失效情況下訪問 Tars Web用戶通過瀏覽器訪問 https://tars.amc.com,此時(shí) Tars Web 根據(jù)配置里說明的,從 cookie 中,取出 uid 和 ticket 參數(shù)值,然后以以下 Json 格式,向 https://user.amc.com/cgi-bin/validate 發(fā)出請求:
{ "uid": "xxxxx", // 如果 cookie 不存在,這里的值會是 "undefined" "ticket": "xxxxx", // 如果 cookie 不存在,這里的值會是 "undefined" }
user.amc.com 返回失敗的時(shí)候,只要不返回 validateMatch 中指定的條件就行了。
此時(shí) TarsWeb 會直接返回 http 狀態(tài)碼 307,重定向 URL :
https://user.amc.com/login.html?redirect_url=https%3A%2F%2Ftars.amc.com%2F
通過登錄服務(wù)登錄瀏覽器通過重定向的 URL 訪問用戶服務(wù),并進(jìn)行登錄操作。用戶服務(wù)應(yīng)能夠根據(jù) Tars Web 帶上的 redirect_url 參數(shù),在用戶登錄成功后,跳轉(zhuǎn)到 Tars Web 上。
票據(jù)有效時(shí)訪問 Tars Web用戶登錄成功后,重定向到 Tars Web 或用戶在票據(jù)有效期內(nèi)訪問 Tars Web 時(shí),Tars 依然會按照配置,請求 https://user.amc.com/cgi-bin/validate 以判斷票據(jù)。此時(shí)按照配置,用戶服務(wù)應(yīng)該返回包含以下信息:
{ "code": 0, "data": { "result": true } }
這樣,Tars Web 根據(jù)配置,就能認(rèn)為票據(jù)是有效的,因而繼續(xù)后續(xù)的 Tars 操作。
用戶登出登錄成功后,用戶可以看到在 Tars Web 界面的右上角出現(xiàn)了自己的 uid 名。用戶名的下拉菜單只有一個選項(xiàng),就是注銷操作。在沒有配置 logoutUrl 的情況下,Tars Web 實(shí)現(xiàn)退出登錄的邏輯就是簡單地刪掉配置中提及的 uid 和 ticket cookies 值。其實(shí)這樣的邏輯也夠了。
結(jié)語本文給出了一個最簡單的對接第三方用戶體系的方法。其實(shí)筆者是想要對接微信網(wǎng)站登錄的,不過因?yàn)樽约菏诸^沒有做網(wǎng)站備案而作罷。不過為企業(yè)網(wǎng)站部署的讀者,也可以這么做,這樣其實(shí)安全性更高,而且操作更方便。
本文章采用 知識共享署名-非商業(yè)性使用-相同方式共享 4.0 國際許可協(xié)議 進(jìn)行許可。
原作者: amc,歡迎轉(zhuǎn)載,但請注明出處。
原文標(biāo)題:《騰訊 Tars Web 管理端用戶體系對接》
發(fā)布日期:2019-4-7
原文鏈接:https://cloud.tencent.com/developer/article/1410611。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105278.html
摘要:年月日,在上海舉行的第六屆中國開發(fā)者大會上,騰訊開源項(xiàng)目首次全面發(fā)布版本,閱文集團(tuán)高級開發(fā)工程師梁晨對如何通過構(gòu)建高性能框架做了經(jīng)驗(yàn)分享。分享內(nèi)容作為騰訊開源的框架,在發(fā)布之后即受到開源領(lǐng)域的關(guān)注。閱文集團(tuán)本身也有一塊新的業(yè)務(wù)在使用。 2018年5月19日,在上海舉行的第六屆中國PHP開發(fā)者大會(PHPCon)上,騰訊開源項(xiàng)目TARS首次全面發(fā)布PHP版本,閱文集團(tuán)高級開發(fā)工程師梁晨對...
摘要:引言作為由騰訊公司開源的優(yōu)秀框架與服務(wù)部署運(yùn)維解決方案,被閱文集團(tuán)引入了實(shí)際實(shí)踐中,同時(shí)閱文集團(tuán)對在語言層面進(jìn)行了能力的補(bǔ)全,令如虎添翼。作為騰訊公司的優(yōu)秀框架與服務(wù)部署運(yùn)維解決方案,可以滿足上述的所有需求。 梁晨(Ted),任職閱文集團(tuán)技術(shù)中心,負(fù)責(zé)起點(diǎn)中文網(wǎng)的WEB后臺開發(fā)工作。曾負(fù)責(zé)騰訊上海企業(yè)產(chǎn)品部營銷QQWeb后臺開發(fā)、QQ公眾號Web后臺開發(fā),對大型網(wǎng)站技術(shù)架構(gòu),有自己的經(jīng)...
摘要:月日,在上海舉行的第六屆中國開發(fā)者大會上,騰訊開源項(xiàng)目首次全面發(fā)布版本,閱文集團(tuán)高級開發(fā)工程師梁晨對如何通過構(gòu)建高性能框架做了經(jīng)驗(yàn)分享。騰訊開源項(xiàng)目貢獻(xiàn)者,騰訊開發(fā)組成員,對于構(gòu)建高性能后臺微服務(wù)治理有豐富的經(jīng)驗(yàn)。 5月19日,在上海舉行的第六屆中國PHP開發(fā)者大會(PHPCon)上,騰訊開源項(xiàng)目TARS首次全面發(fā)布PHP版本,閱文集團(tuán)高級開發(fā)工程師梁晨(Ted)對PHP如何通過TAR...
摘要:是將騰訊內(nèi)部使用的微服務(wù)架構(gòu)多年的實(shí)踐成果總結(jié)而成的開源項(xiàng)目,目前已于月日正式對外開源。 Tars 是將騰訊內(nèi)部使用的微服務(wù)架構(gòu) TAF(Total Application Framework)多年的實(shí)踐成果總結(jié)而成的開源項(xiàng)目,目前已于4月10日正式對外開源。 作為支持多語言的高性能 RPC 開發(fā)框架和配套一體化的服務(wù)治理平臺,Tars可以幫助企業(yè)或者用戶以微服務(wù)的方式快速構(gòu)建穩(wěn)定可靠...
閱讀 1385·2019-08-30 15:55
閱讀 1657·2019-08-26 10:21
閱讀 3450·2019-08-23 18:28
閱讀 3384·2019-08-23 15:38
閱讀 754·2019-08-23 15:24
閱讀 2148·2019-08-23 13:59
閱讀 788·2019-08-23 11:31
閱讀 2878·2019-08-23 10:53