subject:主體,理解爲用戶,多是程序,都要去訪問系統的資源,系統須要對subject進行身份認證。web
principal:身份信息,一般是惟一的,一個主體還有多個身份信息,可是都有一個主身份信息(primary principal)redis
credential:憑證信息,能夠是密碼 、證書、指紋。算法
注意:主體在進行身份認證時須要提供身份信息和憑證信息。緩存
主體(帳號、密碼)安全
資源(資源名稱、訪問地址)session
權限(權限名稱、資源id)架構
角色(角色名稱)加密
角色和權限關係(角色id、權限id)spa
主體和角色關係(主體id、角色id)對象
以下圖:
一般企業開發中將資源和權限表合併爲一張權限表,以下:
資源(資源名稱、訪問地址)
權限(權限名稱、資源id)
合併爲:
權限(權限名稱、資源名稱、資源訪問地址)
subject:主體,能夠是用戶也能夠是程序,主體要訪問系統,系統須要對主體進行認證、受權。
securityManager:安全管理器,主體進行認證和受權都是經過securityManager進行。
authenticator:認證器,主體進行認證最終經過authenticator進行的。
authorizer:受權器,主體進行受權最終經過authorizer進行的。
sessionManager:web應用中通常是用web容器對session進行管理,shiro也提供一套session管理的方式。
sessionDao: 經過SessionDao管理session數據,針對個性化的session數據存儲須要使用sessionDao。
cacheManager:緩存管理器,主要對session和受權數據進行緩存,好比將受權數據經過cacheManager進行緩存管理,和ehcache、redis等整合對緩存數據進行管理。
realm:域,領域,至關於數據源,經過realm存取認證、受權相關數據。
cryptography:密碼管理,提供了一套加密/解密的組件,方便開發。好比經常使用的散列(md5散列算法)、加/解密等功能。
注意:在realm中存儲受權和認證的邏輯。