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