HTTP Basic Auth算法 |
數字簽名/數字證書瀏覽器 |
OAuth協議方式(Token)七牛雲存儲 |
SSO(Token)安全 |
|
實現方式服務器 |
客戶端在發送以前是以用戶名追加一個冒號而後串接上口令,並將得出的結果字符串再用Base64算法編碼。例如,提供的用戶名是Aladdin、口令是open sesame,則拼接後的結果就是Aladdin:open sesame,而後再將其用Base64編碼,獲得QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最終將Base64編碼的字符串發送出去,由接收者解碼獲得一個由冒號分隔的用戶名和口令的字符串。網絡 |
爲每一個接入方分配一個密鑰,而且規定一種簽名的計算方法。要求接入方的請求中必須加上簽名參數。同時爲防範Replay***,須要在請求中添加時間戳。架構 |
OAUTH認證受權有三個步驟,歸納爲:框架 1. 獲取未受權的Request Token;分佈式 2. 獲取用戶受權的Request Token; 3. 用受權的Request Token換取Access Token。 當應用拿到Access Token後,就能夠有權訪問用戶受權的資源了。 |
當用戶第一次訪問應用系統1的時候,由於尚未登陸,會被引導到認證系統中進行登陸;根據用戶提供的登陸信息,認證系統進行身份校驗,若是經過校驗,應該返回給用戶一個認證的憑據--ticket;用戶再訪問別的應用的時候就會將這個ticket帶上,做爲本身認證的憑據,應用系統接受到請求以後會把ticket送到認證系統進行校驗,檢查ticket的合法性。若是經過校驗,用戶就能夠在不用再次登陸的狀況下訪問應用系統2和應用系統3了。 |
適用範圍 |
適用於HTTP協議的請求。 |
適用於REST/SOAP接口。 例如:AWS REST/SOAP API。 |
OAuth協議適用於爲外部應用受權訪問本站資源的狀況。其中的加密機制與HTTP Digest身份認證相比,安全性更高。須要注意,OAuth身份認證與HTTP Digest身份認證之間並非相互取代的關係,它們的適用場景是不一樣的。OAuth協議更適合於爲面向最終用戶維度的API提供受權,例如獲取隸屬於用戶的微博信息等等。若是API並非面向最終用戶維度的,例如像七牛雲存儲這樣的存儲服務,這並不是是OAuth協議的典型適用場景。 |
適用於不一樣網頁或應用之間,不須要用戶重複輸入用戶名密碼的場景。 |
優勢 |
簡單,容易理解和實現。 基本上全部流行的網頁瀏覽器都支持基本認證。 |
簡單,容易理解和實現。 |
在使用中,OAuth不會使第三方網站或應用接觸到用戶的賬號信息(如用戶名與密碼),受權後的http通訊中也再也不傳輸用戶信息而是以數字簽名和訪問令牌(AccessToken)取代,即便截到數據包,也沒法還原出用戶的登陸信息。這是OAuth最大的優勢,也是它得以逐漸成爲如今通用的受權標準的緣由。 |
改善系統易用性。對於終端用戶使用很是方便。只需記錄一組用戶名和密碼,並且只需輸入一次。 提升系統開發效率。對於開發人員來講,在一個好的SSO構架中身份驗證框架只有一個,各應用系統開發人員能夠專一於業務邏輯,無須本身再設計身份驗證程序。 簡化管理員管理。對於系統管理員,有了SSO,用戶的帳戶和管理系統都只有一套,管理方便,減小負擔。 |
缺點 |
雖然基本認證很是容易實現,但該方案創建在如下的假設的基礎上,即:客戶端和服務器主機之間的鏈接是安全可信的。特別是,若是沒有使用SSL/TLS這樣的傳輸層安全的協議,那麼以明文傳輸的密鑰和口令很容易被攔截。該方案也一樣沒有對服務器返回的信息提供保護。 |
須要承擔安全保存密鑰和按期更新密鑰的負擔,還要注意防範replay***。並且不夠靈活,更新密鑰和升級簽名算法很困難。若是請求中添加時間戳,須要保證客戶端和服務端時間同步。 |
OAuth做爲一個受權協議,而不是一個認證協議,OAuth提供的是權限分配而非認證,受權自己的實質至關於系統爲第三方網站/應用開了一個後門,而你的受權就是容許它們能夠走後門進來獲取你的隱私資料和使用權限。 |
遭受******後的危害較大。由於身份驗證系統集中,若是***攻破這一系統,意味着能夠危害整個應用系統體系;竊取某一用戶在某個系統中的用戶名和密碼,就能夠竊取該用戶在該SSO體系中全部系統中的資源。 忘記鎖定我的桌面的信息泄露。若是用戶忘記鎖定電腦,被他人看到,則該用戶在整個系統中的信息都將被泄露。對比屢次登陸的系統,一樣的狀況下,可能只有某個子系統的特定類型數據會被泄露。 |
表2 ForgeRock開源IDM、AM產品分析
OpenIDM |
OpenAm |
OpenDJ |
|
功能 |
用戶管理功能,包括:用戶身份週期管理、用戶和組管理、密碼管理、角色管理、權限管理、策略管理、認證和受權、同步功能等核心功能。 並提供REST接口進行管理。 OpenIDM的用戶數據能夠同步到OpenDJ。 |
OpenAM 是一個領先的開源認證、受權的產品,可用於替換即將被取消的OpenSSO。 OpenAM 提供核心的標識服務用來簡化實如今一個網絡架構中的透明單點登陸,包括集中式或者分佈式的單點登陸。主要的特性有: ·徹底符合開源AAA產品; ·AAA協議:計算機安全領域的協議,AAA指:鑑權,受權,計費(Authentication, Authorization, Accounting); ·簡單易用、易配置; ·純Java開發; ·可輕鬆配置聯合認證系統,並集成到已有項目中。 並提供REST接口進行管理。 |
提供LDAP服務,並提供REST接口進行方便的管理。 |
角色 |
IDM(用戶身份管理) |
SSO(單點登陸) |
LDAP(輕型目錄訪問協議) |
適用範圍 |
用戶管理。 |
主要適用於單點登陸(SSO)的應用場景。 |
LDAP應用。 |
認證機制 |
客戶端進行認證的時候,向OpenIDM提供用戶名密碼(明文傳輸),OpenIDM進行認證並返回認證結果。 |
OpenAM提供的認證機制主要是用戶登陸功能,用戶在接口中提供用戶名密碼,OpenAM驗證成功以後會返回一個TokenId,用於後續的SSO步驟。 |
提供標準的LDAP認證機制。 |