微服務實踐目錄,可以參見連接。
背景
上一篇文章中整體介紹了用戶管理會涉及到的方面,本篇文章主要介紹用戶認證相關的方案與技術。回歸之前的用詞方式,針對認證實體的認證可以分為兩類:認證實體軟件認證和認證實體綁定硬件認證。
現(xiàn)在很多IoT方面的認證方式都是使用認證實體綁定硬件認證的方法進行認證的。還有很多硬件認證的方式基本上也是以這種方式進行認證的,如通信中的Wifi的Mac地址認證,4GLTE的IMSI認證。4GLTE協(xié)議中的終端認證使用通信模塊的認證進行終端的認證過程。與IoT的方式都是使用對附屬硬件的認證達成對整個認證實體的認證過程。
認證實體綁定硬件認證的方式還在其他很多方面用到,比如說銀行辦理網銀時發(fā)放的硬件KEY。具體的交互方式如下圖所示:
具體的技術可以參考身份認證技術和認證技術。本片文章不關注這種方式的認證,所以就不進行過多的說明。下面我們說明認證實體軟件認證相關內容。
認證方向
在上篇文章中已經將用戶擴展到認證實體,并說明了所有的認證過程都可以認為是對認證實體的認證過程。在進行深入的考慮,認證一般是存在雙方或者三方的。雙方是認證實體和認證服務,三方是認證實體、認證服務和業(yè)務服務。一般認為認證過程是對客戶端的身份認證,但在有些情況下是對服務端的認證。還有一些情況下是需要進行雙向認證的。
關于對服務端認證方面可以舉一個例子:在一些情況下用戶對某個網絡服務是信賴的,在使用P2P服務的區(qū)塊鏈技術中需要一種對節(jié)點認證的方式。對于節(jié)點發(fā)送的消息的有效性進行判斷的過程也可以理解為對服務端的認證過程。對于DNS網絡中DNS解析信息傳遞的過程,其實也可以建立這樣的過程。以防止域名污染情況的發(fā)生。
對于使用對客戶端認證的方式進行認證是一種非常通用的模式。雙方認證的情況最常見的例子是HTTPS的雙向認證機制。認證最終的目的都是為了鑒別對方的身份,在確認對方身份后既可以進行信任通信。
認證與數(shù)據(jù)交換方式
數(shù)據(jù)交換是指用戶認證數(shù)據(jù)怎樣從客戶端傳送到服務端,服務端的驗證數(shù)據(jù)怎樣傳輸給客戶端。在這個過程中為了免受中間人攻擊,認證過程中的通信管理非常重要。不同層面的解決方案都可以解決這個問題。例如:http通信層面為認證提供了多種認證信息傳遞的方式Basic, Digest and NTLM,在傳輸層提供了ssl,tls這些通信加密技術。
認證信息傳遞過程中盡量不要明文的進行認證信息傳遞,盡量通過加密算法進行認證信息傳遞。盡量使用加密通信進行認證過程通信。
認證方法
統(tǒng)一認證(SSO)
通過統(tǒng)一的認證中心認證用戶。通常在企業(yè)內部建立一個統(tǒng)一的用戶管理與認證中心,由認證中心負責用戶的認證。方便企業(yè)內部統(tǒng)一管理用戶。第三方認證(OAuth,OpenID)
第三方保存用戶認證方式,以及用戶數(shù)據(jù)。通過互聯(lián)網上的用戶信息達到快速登錄,降低復雜度的方法吸引客戶使用系統(tǒng)。OpenAPI
在互聯(lián)網上免不了和其他的公司有合作有交互。OpenAPI是在互聯(lián)網上程序間的認證方式。
認證流程
認證信息生命周期:認證->認證信息保持->認證信息過期。認證信息保持會在Session一節(jié)中說明
https CA證書,OpenAPI的key和secret都是認證。
認證技術框架
直接認證方式
在使用、管理、存儲用戶信息的地方,直接進行認證。中間認證方式
使用用戶信息的地方和管理用戶信息的地方,是兩個地方。第三方認證方式。
使用第三方的用戶數(shù)據(jù)(通過數(shù)據(jù)訪問接口的方式)獲取用戶數(shù)據(jù)。
技術
sso、openapi
Apereo CAS,Spring Cloud Security,JBoss 開源的 Keycloak 等(.NET IdentityServer4 )。
2017.2.16 開濤shiro教程-第十七章-OAuth2集成(一)服務器端
2017.2.16 開濤shiro教程-第十七章-OAuth2集成(二)客戶端
總結
認清認證過程中需要了解:認證方向、認證數(shù)據(jù)交換、認證方法、認證流程。才可以完整的理解認證過程。本文主要說明認證的過程,下一篇文章會針對認證過程中的技術進行比較和說明。
參考
- 概述
HttpClient三種不同的認證方案: Basic, Digest and NTLM
認證與授權——單點登錄協(xié)議盤點:OpenID vs OAuth2 vs SAML
HTTP API 認證授權術
深入理解跨域SSO單點登錄原理與技術
協(xié)議
W3C 宣布:WebAuthn 成為正式 Web 標準
OAuth 2.0OAuth2
JWT和Oauth2的區(qū)別和聯(lián)系
10 分鐘理解什么是 OAuth 2.0 協(xié)議代碼
yapi sso 登錄插件
yapi cas 登錄插件 By wsfe
oauto2.0登錄