1 項目介紹
MaxKey 單點登錄認(rèn)證系統(tǒng),諧音馬克思的鑰匙寓意是最大鑰匙,支持 OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM 等標(biāo)準(zhǔn)協(xié)議,提供簡單、標(biāo)準(zhǔn)、安全和開放的用戶身份管理(IDM)、身份認(rèn)證(AM)、單點登錄(SSO)、RBAC 權(quán)限管理和資源管理等。
單點登錄(Single Sign On)簡稱為SSO 、用戶只需要登錄認(rèn)證中心一次就可>以訪問所有相互信任的應(yīng)用系統(tǒng),無需再次登錄,主要功能:
- 所有應(yīng)用系統(tǒng)共享一個身份認(rèn)證系統(tǒng)
- 所有應(yīng)用系統(tǒng)能夠識別和提取 ticket 信息
MaxKey 注重企業(yè)級場景下的性能、安全和易用性,廣泛應(yīng)用于醫(yī)療、金融、政府和制造等行業(yè)。
2 功能特性
2 .1 標(biāo)準(zhǔn)認(rèn)證協(xié)議
2.2 登錄支持
- 提供標(biāo)準(zhǔn)的認(rèn)證接口以便于其他應(yīng)用集成 SSO,安全的移動接入,安全的 API、第三方認(rèn)證和互聯(lián)網(wǎng)認(rèn)證的整合。
- 提供用戶生命周期管理,支持 SCIM 2 協(xié)議;開箱即用的連接器(Connector)實現(xiàn)身份供給同步。
- 簡化微軟 Active Directory 域控、標(biāo)準(zhǔn) LDAP 服務(wù)器機(jī)構(gòu)和賬號管理,密碼自助服務(wù)重置密碼。
- IDaas 多租戶功能,支持集團(tuán)下多企業(yè)獨立管理或企業(yè)下不同部門數(shù)據(jù)隔離的,降低運維成本。
- 認(rèn)證中心具有平臺無關(guān)性、環(huán)境多樣性,支持 Web、手機(jī)、移動設(shè)備等, 如 Apple iOS,Andriod 等,將認(rèn)證能力從 B/S 到移動應(yīng)用全面覆蓋。
- 配置化的密碼策略、訪問策略;支持 Ip2region 或 GeoLite2 地理庫精準(zhǔn) IP 定位 ,強(qiáng)大安全審計,對用戶全生命周期審計、訪問行為記錄追溯審計、安全合規(guī)審計、安全風(fēng)險預(yù)警。
- 基于 Java EE 平臺,微服務(wù)架構(gòu),采用 Spring、MySQL、Tomcat、Redis、MQ 等開源技術(shù),擴(kuò)展性強(qiáng)。
- 開源、安全、自主可控。
2.3 界面展示
2.3.1 主界面
2.3.2 實時報表
2.3.3 用戶管理
2.3.4 應(yīng)用管理
3 系統(tǒng)安全性
3.1 二次密碼登錄
單點登錄使用戶能在一個入口完成登錄后,一般情況下用戶在點擊應(yīng)用圖標(biāo)時,直接通過相應(yīng)的協(xié)議,登錄到應(yīng)用系統(tǒng);但是有時要針對特定的用戶、特定的應(yīng)用進(jìn)行二次密碼校驗的功能,防止關(guān)鍵系統(tǒng)的登錄,導(dǎo)致的信息敏感泄露,比如財務(wù)系統(tǒng)或者個人工資賬單,在實際工作中經(jīng)常出現(xiàn)工作代理的情況,即使出現(xiàn)單點登錄的密碼泄露,二次密碼也很好地保護(hù)敏感應(yīng)用系統(tǒng);
3.2 單點退出
單點退出是指用戶在一個系統(tǒng)退出后,其所能單點登錄訪問的所有系統(tǒng)都同時退出。單點退出主要是為提高安全性,避免用戶忘記退出所有應(yīng)用而造成信息的泄密。其實現(xiàn)方式也非常簡單,由于 SSO 和單點登錄的應(yīng)用都是分開的,使用不同的域名,只是通過認(rèn)證協(xié)議幫助用戶在多個應(yīng)用系統(tǒng)中傳遞身份和登錄系統(tǒng)。因此,首先注銷單點登錄應(yīng)用,然后修改每個應(yīng)用系統(tǒng)都使用 MaxKey 的單點退出頁面,單點登錄的退出頁面會將用戶登錄的 Session 注銷掉。
3.3 會話超時
為節(jié)約服務(wù)端資源,并基于安全性考慮,對于長時間沒有活動的客戶端其會話將被自動終結(jié)。同時,為保證用戶的單點登錄不受影響,其所有超時都在 MaxKey 端集中控制,即 MaxKey 的會話超時時間比集成的應(yīng)用系統(tǒng)會話超時時間略長。例如希望實現(xiàn)用戶不活動 30 分鐘就終止會話,則將 MaxKey 的不活動超時時間設(shè)置成 30 分鐘,集成應(yīng)用的不活動超時時間設(shè)置成 40 分鐘。如果用戶登錄后打開多個應(yīng)用,并一直只訪問某個應(yīng)用,而其他應(yīng)用長時間沒有被訪問導(dǎo)致應(yīng)用會話超時,用戶再次點擊該已超時的應(yīng)用時,用戶會被應(yīng)用要求重新登錄。為避免這種情況,應(yīng)用檢測到用戶會話超時后需將用戶重定向到登錄頁面,MaxKey 此時再次實現(xiàn)單點登錄,登錄成功后應(yīng)用可重新將用戶定向到期之前訪問的 URL 或者該應(yīng)用的首頁。
3.4 防暴力破解
由于認(rèn)證系統(tǒng)需對互聯(lián)網(wǎng)提供服務(wù),為避免互聯(lián)網(wǎng)中惡意的暴力破解,系統(tǒng)需提供防暴力破解能力。防暴力破解的關(guān)鍵是提供一種機(jī)制,能阻止計算機(jī)用窮舉法試探用戶口令。目前一種廣泛使用的防暴力破解技術(shù)是 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),即在登錄界面除用戶名+口令之外再增加一個扭曲的數(shù)字或字母字段,讓用戶輸入,這種字段人很容易看懂,但是計算機(jī)卻很難識別,從而避免計算機(jī)用窮舉法猜測用戶密碼,這種技術(shù)的應(yīng)用在互聯(lián)網(wǎng)應(yīng)用上經(jīng)??梢钥吹?。
3.5 連續(xù)登陸次失敗策
使用連續(xù)多次登錄失敗即鎖定帳號一定時間的設(shè)置,例如如果某個帳號連續(xù) 6 次登錄失敗就鎖定該帳號兩小時,這種方式也可以避免暴力破解。
3.6 靜態(tài)密碼策略
對密碼進(jìn)行限制無非是為了強(qiáng)制用戶設(shè)置一個更加安全的密碼,密碼策略主要有以下幾種:
(1)密碼必須符合復(fù)雜性要求
(2)密碼長度最小值
(3)密碼最長使用期限
(4)密碼最短使用期限
(5)強(qiáng)制密碼歷史
(6)使用可還原的加密存儲密碼
3.7 雙因素身份認(rèn)證
雙因素身份認(rèn)證就是通過你所知道再加上你所能擁有的這二個要素組合到一起才能發(fā)揮作用的身份認(rèn)證系統(tǒng)。雙因素認(rèn)證是一種采用時間同步技術(shù)的系統(tǒng),采用了基于時間、事件和密鑰三變量而產(chǎn)生的一次性密碼來代替?zhèn)鹘y(tǒng)的靜態(tài)密碼。每個動態(tài)密碼卡都有一個唯一的密鑰,該密鑰同時存放在服務(wù)器端,每次認(rèn)證時動態(tài)密碼卡與服務(wù)器分別根據(jù)同樣的密鑰,同樣的隨機(jī)參數(shù)(時間、事件)和同樣的算法計算了認(rèn)證的動態(tài)密碼,從而確保密碼的一致性,從而實現(xiàn)了用戶的認(rèn)證。就像我們?nèi)ャy行辦卡送的口令牌. 多因素認(rèn)證(MFA),是一種計算機(jī)訪問控制的方法,用戶要通過兩種以上的認(rèn)證機(jī)制之后,才能得到授權(quán),使用計算機(jī)資源。MFA 的目的是建立一個多層次的防御,使未經(jīng)授權(quán)的人訪問計算機(jī)系統(tǒng)或網(wǎng)絡(luò)更加困難,從而提高安全性。
3.8 密碼存儲
基于 Spring Security 實現(xiàn)密碼加密和驗證,規(guī)則是通過對密碼明文添加**{noop}**前綴
MaxKey 默認(rèn)密碼加密策略 BCrypt,用戶表(userinfo)->密碼字段(password),存儲方式**{類型}密文**
3.8.1 bcrypt 編碼算法
bcrypt 使用的是布魯斯·施內(nèi)爾在 1993 年發(fā)布的 Blowfish 加密算法。bcrypt 算法將 salt 隨機(jī)并混入最終加密后的密碼,驗證時也無需單獨提供之前的 salt,從而無需單獨處理 salt 問題。加密后的格式一般為:
$2a$10$/bTVvqqlH9UiE0ZJZ7N2Me3RIgUCdgMheyTgV0B4cMCSokPa.6oCa
其中:$是分割符,無意義;2a是bcrypt加密版本號;10是cost的值;而后的前22位是salt值;再然后的字符串就是密碼的密文了。
3.8.2 bcrypt 特點
bcrypt 有個特點就是非常慢。這大大提高了使用彩虹表進(jìn)行破解的難度。也就是說該類型的密碼暗文擁有讓破解者無法忍受的時間成本。同時對于開發(fā)者來說也需要注意該時長是否能超出系統(tǒng)忍受范圍內(nèi)。通常是 MD5 的數(shù)千倍。同樣的密碼每次使用 bcrypt 編碼,密碼暗文都是不一樣的。也就是說你有兩個網(wǎng)站如果都使用了 bcrypt 它們的暗文是不一樣的,這不會因為一個網(wǎng)站泄露密碼暗文而使另一個網(wǎng)站也泄露密碼暗文。所以從 bcrypt 的特點上來看,其安全強(qiáng)度還是非常有保證的。文章來源:http://www.zghlxwxcb.cn/news/detail-821276.html
3.8.3 不推薦使用 md5
首先 md5 不是加密算法,是哈希摘要。以前通常使用其作為密碼哈希來保護(hù)密碼。由于彩虹表的出現(xiàn),md5 和 sha1 之類的摘要算法都已經(jīng)不安全了。如果有不相信的同學(xué) 可以到一些解密網(wǎng)站 如 cmd5 網(wǎng)站嘗試解密 你會發(fā)現(xiàn) md5 和 sha1 是真的非常容易被破解。文章來源地址http://www.zghlxwxcb.cn/news/detail-821276.html
4 開源項目地址
- Gitee:https://gitee.com/dromara/MaxKey
- Github:https://github.com/dromara/MaxKey
- 官方網(wǎng)站:http://www.maxkey.top
到了這里,關(guān)于SpringBoot單點登錄認(rèn)證系統(tǒng)MaxKey(附開源項目地址)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!