Hunt ShiroD 語(yǔ)言安全認(rèn)證框架
Hunt Shiro 是完整的 apache shiro 的 D 語(yǔ)言翻譯版本,代碼全部使用 DLang 實(shí)現(xiàn)。
Shiro 是一個(gè)功能強(qiáng)大且靈活的開(kāi)源安全框架,主要功能包括用戶認(rèn)證、授權(quán)、會(huì)話管理以及加密。
Shiro 的首要目標(biāo)是易于使用和理解。系統(tǒng)安全是非常復(fù)雜甚至痛苦的,但 Shiro 并不是。一個(gè)框架應(yīng)該盡可能的隱藏那些復(fù)雜的細(xì)節(jié),并且公開(kāi)一組簡(jiǎn)潔直觀的API以簡(jiǎn)化開(kāi)發(fā)人員在系統(tǒng)安全上所付出的努力。
你可以通過(guò) Shiro 完成下面這些事情:
- 驗(yàn)證用戶身份
- 控制用戶訪問(wèn),例如:
- 確定用戶是否被分配某個(gè)角色
- 確定用戶是否被允許做某些操作
- 在任何環(huán)境下使用 Session API,甚至是在脫離 web 的環(huán)境下
- 及時(shí)響應(yīng)在認(rèn)證、訪問(wèn)控制或會(huì)話生命周期內(nèi)的所有事件
- 從一個(gè)或多個(gè)數(shù)據(jù)源聚集用戶安全數(shù)據(jù)生成一個(gè)復(fù)合的用戶“視圖”
- 實(shí)現(xiàn)單點(diǎn)登錄功能
- 實(shí)現(xiàn)“記住我”功能,使用戶不必每次都要登錄
除了上面這些功能,還有其他很多功能,所有這些功能都集成到了一組易于使用的API中。
Shiro試圖在所有應(yīng)用環(huán)境實(shí)現(xiàn)這一目標(biāo)。在不強(qiáng)制依賴其他第三方框架、容器或者應(yīng)用服務(wù)器的情況下,從最簡(jiǎn)單的命令行應(yīng)用到最復(fù)雜的企業(yè)級(jí)應(yīng)用。Shiro可以和這些第三方框架、容器或者應(yīng)用服務(wù)器集成使用,也可以離開(kāi)這些環(huán)境單獨(dú)使用。
Shiro 的特點(diǎn)
Shiro 是一個(gè)功能豐富的綜合安全框架。下面這張圖展示了Shiro的主要特點(diǎn):
這些特點(diǎn)被 Shiro 開(kāi)發(fā)團(tuán)隊(duì)稱之為“應(yīng)用安全的四大基石”——認(rèn)證、授權(quán)、會(huì)話管理和加密:
- 認(rèn)證:有時(shí)候被稱作“登錄”,也就是驗(yàn)證一個(gè)用戶是誰(shuí)。
- 授權(quán):處理訪問(wèn)控制,例如決定“誰(shuí)”可以訪問(wèn)“什么”資源。
- 會(huì)話管理:管理特定用戶的會(huì)話,甚至在非web環(huán)境或非EJB應(yīng)用環(huán)境下。
- 加密:在保持易用性的同時(shí)使用加密算法保持?jǐn)?shù)據(jù)的安全。
除開(kāi)上面這些功能,Shiro 還提供了一些額外的功能來(lái)支持和加強(qiáng)在不同應(yīng)用環(huán)境下使用上面這些功能,特別是:
- Web支持:Shiro 的 web api可 以幫組 web 應(yīng)用非常方便的提高安全性。
- 緩存:緩存可以讓 Shiro 的 api 在安全操作上的保持快速和高效。
- Concurrency: 通過(guò)Shiro的并發(fā)特性 Shiro 可以支持多線程應(yīng)用。
- Testing:通過(guò)編寫單元測(cè)試和集成測(cè)試來(lái)確保代碼的安全性。
- “Run As”:允許用戶使用另一個(gè)用戶的身份(如果允許),在有些管理場(chǎng)景非常有用。
- “Remember Me”:通過(guò) session 記住用戶身份。
