API Tokens
SAML
這里列出4種,首先簡單介紹下,然后一一敘述。
第一種,使用HTTP Basic Auth協(xié)議,加上獨(dú)立的Auth數(shù)據(jù)庫。
第二種,也是使用HTTP Basic Auth協(xié)議,跟第一種不同的是,使用集中式的Auth數(shù)據(jù)庫
第三種,API Tokens協(xié)議,這種大家應(yīng)該比較熟悉,很多公有服務(wù)(比如Github、Twitter等)的API都是用這種方式。
第四種,SAML,即Security Assertion Markup Language,翻譯過來,是『安全聲明標(biāo)記語言』,它是基于XML的一種協(xié)議,企業(yè)內(nèi)使用得較多。
下面一一做介紹。
微服務(wù)常用訪問安全設(shè)計方案——Basic Auth + Independent Auth DB

第一種,如上示意圖所示,使用Basic Auth協(xié)議,配合每個服務(wù)自己都擁有存儲Credential敏感數(shù)據(jù)的數(shù)據(jù)庫(或者其他持久化倉庫)。
簡單介紹下Basic Auth協(xié)議,它是在用戶的請求中添加一個Authorization消息頭,這個消息頭的值是一個固定格式:
Basic base64encode(username+“:”+password)
完整的消息頭列子為:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Basic Auth協(xié)議基本上被所有流行的網(wǎng)頁瀏覽器都支持。
這種方案的特點(diǎn):
每個提供功能的服務(wù)都擁有自己獨(dú)立的鑒權(quán)和授權(quán)機(jī)制
每個提供功能的服務(wù)都擁有自己獨(dú)立的數(shù)據(jù)庫,來保存敏感信息
每次用戶請求都需要攜帶用戶的credential來完成操作
小結(jié)下使用這種方案的好處:
微服務(wù)的應(yīng)用可以實現(xiàn)100%無狀態(tài)化
基于Basic Auth開發(fā)簡單
同時,小結(jié)下使用這種方案需要注意的地方:
由于每個服務(wù)都有自己存儲credential的機(jī)制,需要事先為每個服務(wù)設(shè)計好如何存儲和查找用戶的Credential
由于每次用戶請求都會攜帶用戶的Credential,需要事先設(shè)計好如何管理鑒權(quán)機(jī)制
微服務(wù)常用訪問安全設(shè)計方案——Basic Auth + Central Auth DB

第二種,如上示意圖所示,使用Basic Auth協(xié)議,與第一種方案相比,每個服務(wù)共用有同一個Auth DB。
第二種方案的特點(diǎn)和第一種很相似:
每個提供功能的服務(wù)都擁有自己獨(dú)立的鑒權(quán)和授權(quán)機(jī)制
每個提供功能的服務(wù)共用同一個DB,來保存Credential等敏感信息
每次用戶請求都需要攜帶用戶的credential來完成操作
小結(jié)下使用第二種方案的好處:
除了擁有第一種方案相似的好處外,由于共用了同一個持久化倉庫來管理用戶信息,簡化了原來獨(dú)立管理的機(jī)制
同時,小結(jié)下使用這種方案需要注意的地方:
中心化Auth DB會被每次用戶請求來訪問連接,可能引發(fā)AuthDB性能瓶頸
需要在每個服務(wù)中實現(xiàn)對共有Auth DB查找用戶信息的邏輯
微服務(wù)常用訪問安全設(shè)計方案——API Tokens

第三種,如上示意圖所示,使用Token Based協(xié)議來對用戶請求進(jìn)行操作鑒權(quán)。
簡單介紹下最基本的Token Based的交互方式:
用戶使用包含用戶名和密碼的credential從客戶端發(fā)起資源請求
后端接受請求,通過授權(quán)中心,生產(chǎn)有效token字符串,返回給客戶端
客戶端獲得token后,再次發(fā)出資源請求
后端接受帶token的請求,通過授權(quán)中心,獲取相關(guān)資源,返回給客戶端
業(yè)界常用的OAuth就是基于Token Based這套邏輯,實現(xiàn)的互聯(lián)網(wǎng)級的鑒權(quán)機(jī)制。
第三種方案的特點(diǎn)明顯:
使用token來進(jìn)行鑒權(quán),替換用戶本身的用戶名和密碼,提高了交互安全性
每次用戶請求需要攜帶有效token,與Auth服務(wù)進(jìn)行交互驗證
小結(jié)下使用第三種方案的好處:
由于使用了token來鑒權(quán),業(yè)務(wù)服務(wù)不會看到用戶的敏感信息
同時,小結(jié)下使用這種方案需要注意的地方:
Auth服務(wù)可能需要處理大量的生產(chǎn)token的操作
微服務(wù)常用訪問安全設(shè)計方案——SAML