移動(dòng)化時(shí)代下的統(tǒng)一認(rèn)證服務(wù),除了傳統(tǒng)PC辦公平臺(tái)的問題之外,還需要重點(diǎn)考慮輕應(yīng)用+微服務(wù)架構(gòu)下的認(rèn)證,本文將基于品高云應(yīng)用支撐平臺(tái)(BingoFuse)的企業(yè)級統(tǒng)一認(rèn)證服務(wù),對上述問題展開討論。
本期大咖 彭鴻杰
品高云應(yīng)用平臺(tái)部高級工程師,主攻JAVA技術(shù),參與品高內(nèi)部開發(fā)框架研發(fā)和品高云盤、品高統(tǒng)一認(rèn)證服務(wù)等核心產(chǎn)品研發(fā),開源框架Leap的代碼貢獻(xiàn)者,擁有豐富的公安、政府與大型集團(tuán)的企業(yè)級PaaS開放平臺(tái)實(shí)施和落地經(jīng)驗(yàn),目前擔(dān)任品高云應(yīng)用支撐平臺(tái)(BingoFuse)開放平臺(tái)負(fù)責(zé)人,負(fù)責(zé)企業(yè)級統(tǒng)一認(rèn)證服務(wù)研發(fā)和開放平臺(tái)研發(fā)和交付工作。
一、存在的問題
統(tǒng)一認(rèn)證服務(wù),除了實(shí)現(xiàn)傳統(tǒng)的單點(diǎn)登錄之外,還需要解決以下幾個(gè)重要問題:
• 雙身份:用戶與應(yīng)用都需要身份認(rèn)證
• 多終端:IOS,安卓,桌面,Web等多種類型終端下的身份認(rèn)證
• 全鏈路:終端調(diào)用服務(wù),服務(wù)再調(diào)用另一服務(wù)的身份認(rèn)證
這是簡單場景下統(tǒng)一認(rèn)證服務(wù)解決的最基本的問題,在真實(shí)的企業(yè)場景下,這幾個(gè)基本問題會(huì)衍生出更加復(fù)雜的問題,這里列舉幾個(gè)我們遇到的企業(yè)場景:
• 多網(wǎng)隔離架構(gòu)
• 公私混合云架構(gòu)
• 集團(tuán)多企業(yè)架構(gòu)
接下來我們從基本的問題開始,逐步分析在這幾種企業(yè)場景下,統(tǒng)一認(rèn)證服務(wù)會(huì)遇到的各種問題。
二、雙身份、多終端、全鏈路
雙身份
傳統(tǒng)的認(rèn)證只考慮用戶身份認(rèn)證,在微服務(wù)架構(gòu)體系下應(yīng)用數(shù)量劇增,應(yīng)用間相互依賴授權(quán)的需求也大量出現(xiàn),因此必須對應(yīng)用進(jìn)行身份認(rèn)證。
這里的雙身份就是指用戶身份和應(yīng)用身份,應(yīng)用包括終端應(yīng)用(App,輕應(yīng)用)和服務(wù)端應(yīng)用,在后邊的討論中,我們統(tǒng)一稱為應(yīng)用。
為了對應(yīng)用進(jìn)行認(rèn)證和授權(quán),我們還需要對應(yīng)用進(jìn)行管理,包括應(yīng)用的注冊和授權(quán)。
多終端
傳統(tǒng)PC辦公平臺(tái),最常見的是Web端的認(rèn)證,少量桌面應(yīng)用端的認(rèn)證,基本沒有考慮移動(dòng)終端等其他終端類型。在輕應(yīng)用化的體系下,各種類型的終端(Web,桌面,移動(dòng)終端)的身份認(rèn)證必須要被考慮在內(nèi)。
全鏈路
在微服務(wù)化體系下,用戶的一個(gè)業(yè)務(wù)操作就可能涉及微服務(wù)間的多次調(diào)用,在整個(gè)調(diào)用鏈路中,每次調(diào)用都需要考慮原始用戶身份的傳遞和應(yīng)用(服務(wù))身份的變化的認(rèn)證,如下:
三、多網(wǎng)隔離
在公安、政府這類對網(wǎng)絡(luò)安全要求極高的行業(yè)中,內(nèi)部的網(wǎng)絡(luò)是一個(gè)多網(wǎng)隔離架構(gòu),多網(wǎng)絡(luò)區(qū)域間存在如下特點(diǎn):
• 有至少一個(gè)網(wǎng)絡(luò)區(qū)域
• 多網(wǎng)絡(luò)區(qū)域間只能單向通訊,且有協(xié)議(僅HTTP)和流量限制
• 多網(wǎng)絡(luò)區(qū)域間用戶和應(yīng)用是統(tǒng)一管理的
在這種網(wǎng)絡(luò)特性下,無法保證各個(gè)區(qū)域的應(yīng)用接入同一個(gè)統(tǒng)一認(rèn)證服務(wù),那么應(yīng)用在跨網(wǎng)調(diào)用時(shí),該如何解決統(tǒng)一認(rèn)證的問題?
可行的模式是:
• 在每個(gè)網(wǎng)絡(luò)區(qū)域部署一個(gè)統(tǒng)一認(rèn)證服務(wù)
• 各個(gè)網(wǎng)絡(luò)區(qū)域的應(yīng)用接入同個(gè)網(wǎng)絡(luò)的統(tǒng)一認(rèn)證服務(wù)
• 多個(gè)網(wǎng)絡(luò)區(qū)域間的統(tǒng)一認(rèn)證服務(wù)間連通互信
這種模式下,應(yīng)用跨網(wǎng)調(diào)用認(rèn)證就是多網(wǎng)絡(luò)區(qū)域間的統(tǒng)一認(rèn)證服務(wù)需要解決的問題:
• 跨網(wǎng)認(rèn)證:網(wǎng)絡(luò)區(qū)域1的應(yīng)用,跨網(wǎng)調(diào)用網(wǎng)絡(luò)區(qū)域2的應(yīng)用的身份認(rèn)證
統(tǒng)一認(rèn)證服務(wù)解決這個(gè)問題后,跨網(wǎng)調(diào)用和同網(wǎng)調(diào)用對應(yīng)用來說是一致的,這能大大簡化應(yīng)用開發(fā)的流程。
四、公私混合云
不少企業(yè)客戶都希望在使用公有云SaaS化服務(wù)的同時(shí),可以私有化保存管理自己的業(yè)務(wù)數(shù)據(jù),這類需求推薦采用公私混合云架構(gòu),這種架構(gòu)存在如下特點(diǎn):
• 公有云是多租戶模式
• 只有私有云能認(rèn)證用戶密碼(純公有云架構(gòu)才會(huì)在公有云認(rèn)證密碼)
• 用戶在兩朵云之間是統(tǒng)一的,應(yīng)用在兩朵云之間是不統(tǒng)一的
公私混合的網(wǎng)絡(luò)架構(gòu)如下:
在公私混合的架構(gòu)下,應(yīng)用按如下模式部署:
• 公有云部署一個(gè)在線認(rèn)證服務(wù)
• 每個(gè)租戶部署自己的私有認(rèn)證服務(wù)
• 每朵云內(nèi)的應(yīng)用,接入同一朵云內(nèi)的認(rèn)證服務(wù)
在公私混合部署的模式下,認(rèn)證服務(wù)需要解決新的難題:
• 租戶識(shí)別:用戶和應(yīng)用請求認(rèn)證身份前,識(shí)別認(rèn)證請求所屬的租戶
• 跨云認(rèn)證:私有應(yīng)用調(diào)用在線應(yīng)用或在線應(yīng)用調(diào)用私有應(yīng)用的認(rèn)證
• 跨云應(yīng)用授權(quán)管理:在線應(yīng)用對私有應(yīng)用授權(quán)或私有應(yīng)用對在線應(yīng)用授權(quán)
五、集團(tuán)多企業(yè)
而對于大型的集團(tuán)企業(yè)來說,集團(tuán)中往往包含多個(gè)子公司,各個(gè)子公司則是相對獨(dú)立的企業(yè),集團(tuán)的特點(diǎn)如下:
• 多個(gè)子公司需要各自獨(dú)立的企業(yè)內(nèi)認(rèn)證中心
• 多個(gè)子公司之間用戶是統(tǒng)一管理的,應(yīng)用是不統(tǒng)一管理的
集團(tuán)多企業(yè)的架構(gòu),應(yīng)用的部署模式如下:
• 各個(gè)企業(yè)間獨(dú)立部署私有認(rèn)證服務(wù)
• 各企業(yè)的應(yīng)用接入自己私有的認(rèn)證服務(wù)
在這種模式下,統(tǒng)一認(rèn)證服務(wù)引入的新問題如下:
• 跨企單點(diǎn)登錄:企業(yè)A用戶張三在企業(yè)A的Web應(yīng)用中登錄后,打開企業(yè)B的Web應(yīng)用的單點(diǎn)登錄
• 跨企認(rèn)證:企業(yè)A的應(yīng)用調(diào)用其他企業(yè)的應(yīng)用的認(rèn)證
• 認(rèn)證中心管理:集團(tuán)增加一個(gè)子公司和減少一個(gè)子公司時(shí),管理多認(rèn)證中心的成員變化
跨企應(yīng)用授權(quán)管理:企業(yè)A對集團(tuán)內(nèi)其他企業(yè)的應(yīng)用授權(quán)
六、更加復(fù)雜的企業(yè)場景
除了前面提到的幾種常見的衍生問題外,事實(shí)上我們還遇到過更加復(fù)雜的企業(yè)場景:
• 公私混合云模式下的集團(tuán)企業(yè)聯(lián)盟架構(gòu)中,跨云跨企帶來的復(fù)雜情景
• 私有云多網(wǎng)絡(luò)模式下的企業(yè)聯(lián)盟架構(gòu)中,跨網(wǎng)跨企帶來的復(fù)雜情景
這里我們不再深入討論。
七、如何落地?
統(tǒng)一認(rèn)證服務(wù)不僅要考慮本身需要解決的問題,還需要考慮如何在真實(shí)企業(yè)中落地。在多數(shù)企業(yè)中,企業(yè)內(nèi)的認(rèn)證體系大致分為如下幾種模式:
• 企業(yè)內(nèi)以一個(gè)或多個(gè)AD為認(rèn)證中心,各個(gè)應(yīng)用獨(dú)立接入AD認(rèn)證用戶
• 企業(yè)內(nèi)存在一個(gè)(甚至多個(gè))單點(diǎn)登錄服務(wù),Web應(yīng)用接入單點(diǎn)登錄
• 企業(yè)內(nèi)各集成系統(tǒng)獨(dú)立登錄和管理用戶
對應(yīng)這幾種模式,統(tǒng)一認(rèn)證中心落地需要解決如下挑戰(zhàn):
• 舊認(rèn)證源對接:對接企業(yè)已有的認(rèn)證源(如AD,舊用戶數(shù)據(jù)庫或已有統(tǒng)一用戶接口等)
• 舊單點(diǎn)登錄對接:已經(jīng)接入舊單點(diǎn)登錄服務(wù)的應(yīng)用在新的統(tǒng)一認(rèn)證服務(wù)中的單點(diǎn)登錄
• 集成系統(tǒng)對接:大型集成系統(tǒng)快速接入統(tǒng)一認(rèn)證
只有解決這幾個(gè)挑戰(zhàn),才能實(shí)現(xiàn)統(tǒng)一認(rèn)證服務(wù)的真正落地。
八、品高統(tǒng)一認(rèn)證服務(wù)
品高統(tǒng)一認(rèn)證服務(wù),是目前BingoFuse平臺(tái)中最重要最基礎(chǔ)的組件服務(wù)之一,由品高軟件自主研發(fā),致力于構(gòu)建一個(gè)真正的企業(yè)級統(tǒng)一認(rèn)證中心,支持多種企業(yè)級功能。
OIDC+OAth2
• 支持標(biāo)準(zhǔn)化的OIDC+OAuth2協(xié)議的應(yīng)用接入
用戶+應(yīng)用身份認(rèn)證
多終端身份認(rèn)證
• 支持企業(yè)級的應(yīng)用預(yù)授權(quán)(兼容OAuth2標(biāo)準(zhǔn)的企業(yè)特性擴(kuò)展)
• 支持全鏈路的用戶身份傳遞和應(yīng)用身份認(rèn)證(兼容OAuth2標(biāo)準(zhǔn)的企業(yè)特性擴(kuò)展)
跨網(wǎng)互信
品高統(tǒng)一認(rèn)證服務(wù)支持跨網(wǎng)互信功能,支持多網(wǎng)隔離環(huán)境下的跨網(wǎng)調(diào)用認(rèn)證,如下圖:
在多網(wǎng)隔離的環(huán)境下:
• 支持對應(yīng)用透明的跨網(wǎng)調(diào)用身份認(rèn)證(標(biāo)準(zhǔn)OAuth2協(xié)議調(diào)用)
公私跨云
品高統(tǒng)一認(rèn)證服務(wù)支持公私混合部署:
在公私混合部署中,包括如下功能:
• 支持多租戶識(shí)別
• 支持不同租戶分別使用私有認(rèn)證和本地認(rèn)證兩種認(rèn)證模式
• 支持對應(yīng)用透明的跨云調(diào)用身份認(rèn)證(標(biāo)準(zhǔn)OAuth2協(xié)議調(diào)用)
企業(yè)聯(lián)盟
品高統(tǒng)一認(rèn)證服務(wù)支持企業(yè)聯(lián)盟模式:
在集團(tuán)多企業(yè)的架構(gòu)中:
• 支持跨企Web應(yīng)用的單點(diǎn)登陸
• 支持企業(yè)聯(lián)盟管理,在聯(lián)盟內(nèi)動(dòng)態(tài)加入和剔除成員
• 支持對應(yīng)用透明的跨企調(diào)用身份認(rèn)證(標(biāo)準(zhǔn)OAuth2協(xié)議調(diào)用)
拓展定制
品高統(tǒng)一認(rèn)證服務(wù)具備良好的擴(kuò)展性和定制能力,內(nèi)置了對接多種常見認(rèn)證源:
• 支持?jǐn)?shù)據(jù)庫,LDAP,Window驗(yàn)證等多種認(rèn)證源
• 支持?jǐn)U展第三方認(rèn)證源(如API接口)接入
• 支持企業(yè)特定登陸邏輯和業(yè)務(wù)的定制開發(fā)
九、統(tǒng)一認(rèn)證服務(wù)的價(jià)值
品高云企業(yè)級的統(tǒng)一認(rèn)證服務(wù),能為企業(yè)解決應(yīng)用身份與用戶身份的統(tǒng)一認(rèn)證問題,為大型集成系統(tǒng)的微服務(wù)化和移動(dòng)終端輕應(yīng)用化提供安全可靠的用戶身份認(rèn)證和用戶身份傳遞,降低各個(gè)相互依賴的服務(wù)之間的復(fù)雜度的同時(shí),也降低大型應(yīng)用拆分和前后端分離的難度,從而為企業(yè)應(yīng)用的輕應(yīng)用化和微服務(wù)化提供可靠的支撐。
十、寫在最后
如何進(jìn)行統(tǒng)一認(rèn)證,是企業(yè)輕應(yīng)用化和微服務(wù)化下遇到的第一個(gè)難題,然而,解決這個(gè)問題之后,很快輕應(yīng)用和微服務(wù)將面臨第二個(gè)難題:統(tǒng)一用戶。
企業(yè)用戶數(shù)據(jù)的現(xiàn)狀是怎么樣的?存在什么難關(guān)?用戶數(shù)據(jù)在微服務(wù)架構(gòu)下會(huì)有哪些使用場景?應(yīng)用和服務(wù)如何使用用戶數(shù)據(jù)?這些問題,我們將在統(tǒng)一用戶的文章中討論,敬請期待。
?關(guān)于 BingoFuse
品高云應(yīng)用支撐平臺(tái)(BingoFuse)是結(jié)合了云計(jì)算和移動(dòng)互聯(lián)等技術(shù)的企業(yè)級應(yīng)用全生命周期構(gòu)建和交付平臺(tái),為企業(yè)應(yīng)用的移動(dòng)化、微服務(wù)化和容器化提供全方位的基礎(chǔ)服務(wù)、開發(fā)運(yùn)維工具和集成管理。
基于 BingoFuse,企業(yè)能夠從傳統(tǒng)相互孤立、周期過長的應(yīng)用交付形態(tài)升級為快速適應(yīng)業(yè)務(wù)變化、開放共享的新一代交付模式,有效地縮短實(shí)施周期、降低實(shí)施成本和改進(jìn)用戶體驗(yàn)等,從而為企業(yè)應(yīng)用整體上云提供有力支撐。