身份管理自從計算機問世以來就存在,不少人以爲身份管理很簡單,其實難度遠超你的想象。html
1、爲何要自建身份管理?
自計算機問世以來,身份管理一直是軟件的主要組成部分:打孔機和早期操做系統都受到用戶名/密碼身份驗認證的保護。擁有如此悠久的歷史,你會認爲身份管理是一個已經被妥善解決的問題。git
自建身份管理通常在如下場景有充足的理由:github
- 你正在作一些簡單的事情:沒有敏感信息或隱私問題,而且你的安全性要求不高,你的用戶數量很少,同時用戶類型比較單一,只有幾個應用程序;
- 你是一位經驗豐富的開發人員,而且在頂尖團隊中工做,多年來一直爲應用程序,網站,API 和服務構建身份認證;
- 某天你的預算減小了,這時你必須選擇一些方案來爲組織的大戰略省錢;
坦白說,若是你只有一個簡單的 Web 應用,只須要一兩個社交應用提供一鍵登陸,而且不須要「用戶名 - 密碼」或其餘更細緻的用來登陸的功能,那麼自建就很容易。你能夠在 Github 上找到大量開源框架來解決此類問題。算法
2、爲何要購買身份管理服務?
咱們常常聽到客戶的研發團隊這麼評價 Authing:數據庫
> 咱們本身就能作,爲何要用大家的,並且還要付錢?複製代碼
接下來讓咱們深刻研究這個問題。後端
一、專業的人作專業的事
實現一套身份管理看上去彷佛很簡單。可是失敗是很可怕的,一旦出現了問題,你的品牌就會受到嚴重損害。面對持續的黑客攻擊,和無休止的漏洞,你是否能準確知道本身的工做足夠好到能夠保護用戶隱私和企業資產?安全
二、投入產出比
自建身份管理並非免費的!將資源到投入身份管理研發時會產生高昂的的機會成本。身份認證真的是你想要作的嗎?假如你作一款應用,會本身寫一套 RDBMS(關係數據庫管理系統) 嗎?身份管理就像 RDBMS,當你能夠花合理的錢將非核心的繁重工做委派給專業人士時,爲何還要自建身份管理等基礎設施呢?身份泄漏產生的成本可能高達數百萬美圓,你可否認身份安全沒有價值嗎?在評估購買身份管理服務的投資回報率時,請考慮這些因素。app
三、複雜性
你的產品在前期確定是簡單的,可是,一旦你的產品成功推向市場,你開始須要支持更普遍的身份提供商。你可能還有合做夥伴,你可能還會推出移動 APP 和 API 讓其餘人調用,這樣你的受衆羣體才能擴大。若是你在歐洲,你還會面臨 GDPR 的監管(中國也即將出臺相關法律)。這時身份管理開始變的複雜,維護本身的身份管理系統成本會比你預期要高的多。框架
四、測驗
上面的幾個問題可能已經引起了你的思考。有些你可能不在乎,有些你可能在工做中已經遇到。可是,咱們邀請你根據目前的狀態和將來幾個月或幾年的發展方向回答如下 20 個問題並切實考慮它們。性能
1)用戶相關的問題
- 你是否考慮過如何實現「用戶管理」?是自助管理仍是集中管理?用戶體驗會是什麼樣?
- 你有用戶使用多個「身份提供商」登陸你的應用嗎?你如何斷定他們是一我的?
- 你是否有多個服務或軟件須要認證?若是有,他們使用了同一個技術棧仍是多個技術棧?(不一樣的技術棧會加大研發成本)
- 你是否須要統計信息來查看用戶的增加狀況、設備狀況、IP 地理位置和認證狀況?若是須要,你計劃如何收集、分析和可視化這些數據?
- 你如何記錄並解決用戶身份認證過程當中出現的異常事件(忘記密碼、沒法登陸、認證失敗、過時等)?
2)應用服務相關的問題
- 你如何在漏洞被曝出以前及時發現漏洞?發現漏洞後如何經過補丁快速修復漏洞?
- 你如何處理在不一樣「身份提供商」之間認證時產生的「標準不兼容」問題?當這些身份提供商之間都使用了不一樣的技術棧以後,你將做何處理?
- 你的 DevOps 團隊可否在開發身份認證基礎設施上保持專業、領先地位和最佳實踐?
- 你有 MFA(多因素認證)策略嗎?你打算怎麼跨平臺的實現 MFA?你是否但願你的用戶能在 iOS 或 Android 設備上使用 FaceID 或指紋來進行身份認證?
- 你是否考慮過用戶存儲的可伸縮性、性能、查詢和可用性要求?在流量過大的狀況下你如何保證登陸系統的 99.999% 可用?
3)身份提供商(IDP)相關的問題
- 你在遷移老應用進更現代的身份管理系統時,如何讓用戶不重置密碼無縫遷移?
- 你的一個 B2B 客戶須要 SSO,你能夠在內網中或防火牆後面與 Active Directory 作聯合認證嗎?
- 不一樣的 SAML IdP 有多種格式存儲和傳遞聲明 —— 你是否有一種簡單的方法讓聲明徹底自定義化?
- OpenID Connect 是流行的身份認證新標準:基於 REST / JSON 和 OAuth 2.0。可是其魔鬼般的實施細節,你計劃如何在不一樣的後端語言和客戶端之間實現它?
4)安全與合規問題
- 身份系統是黑客攻擊的首要目標。你是否考慮過實施暴力保護?好比 API 網關上的 DDoS 預防和緩解?
- 你是否打算讓第三方安全顧問來進行獨立的滲透測試,代碼審查和體系結構審查以驗證安全性和最佳實踐?
- 在身份實施過程當中產生的安全漏洞報告你計劃如何解決?
- 你是否須要上下文逐步身份認證(Contextual Step-up Authentication)?例如 IP 白名單或 Active Directory 成員身份?你是否須要多種密碼加密算法?無密碼身份認證對你的用戶是否有效或存在乎義?
5)時間與成本問題
- 你須要僱傭多少人,包括 IT,研發人員和外包服務(例如諮詢專業知識)?這些人很難找到,僱用起來也很昂貴。你將從何處得到這些人才,費用是多少?
- 你預計的上線日期是何時?你的 IAM 解決方案須要多少時間和多少次迭代?
> Forrester Consulting 的研究報告指出,使用身份管理服務能夠產生 548% 的投資回報率和 370 萬美圓的費用節省。複製代碼
使用 Authing 能夠一勞永逸的解決上述 20 個問題,任何想作計算機軟件的企業或我的,只須要接入 Authing 的雲服務,就能夠以極低的成本,快速解決那些須要耗費數百萬元人民幣才能解決的問題。身份的複雜性和混亂性,形成了每一年數十億的浪費,由於其表面的簡單,致使了缺少系統的標準,每家廠商都會本身搞一套本身的標準,這些混亂的標準既養活了一羣人,也加劇了這羣人的開發負擔。
身份這件事,聽上去是老故事,看上去很簡單,但其從未獲得很好的解決,這就是 Authing 存在的意義。
相關閱讀
什麼是 Authing?
Authing 提供專業的身份認證和受權服務。
咱們爲開發者和企業提供用以保證應用程序安全所需的認證模塊,這讓開發人員無需成爲安全專家。
你能夠將任意平臺的應用接入到 Authing(不管是新開發的應用仍是老應用均可以),同時你還能夠自定義應用程序的登陸方式(如:郵箱/密碼、短信/驗證碼、掃碼登陸等)。
你能夠根據你使用的技術,來選擇咱們的 SDK 或調用相關 API 來接入你的應用。當用戶發起受權請求時,Authing 會幫助你認證他們的身份和返回必要的用戶信息到你的應用中。
Authing 在應用交互中的位置
- 官網:http://authing.cn
- 小登陸:https://wxapp.authing.cn/#/
- 倉庫: 歡迎 Star,歡迎 PR
- https://gitee.com/Authi_ng
- https://github.com/authing
- Demo:
- https://sample.authing.cn
- https://github.com/Authing/qrcode-sample
- 文檔:https://docs.authing.cn/authing/
歡迎關注 Authing 技術專欄