首頁 >Java >java教程 >Java權限框架介紹:Shiro的統一認證授權

Java權限框架介紹:Shiro的統一認證授權

php是最好的语言
php是最好的语言原創
2018-08-09 17:07:003672瀏覽

Shiro的統一認證授權

Shiro是Apache下面的一個簡單,易用的Java權限框架,對於單體應用來講,Shiro完全能夠極好的,快速的滿足權限的需求,所以一般在做專案的時候,Shiro都會成為開發者的首選。

可是,如果你需要做第二個,第三個,第n個應用,同樣需要相同的認證、授權時,可能就需要對Shiro進行一定的擴展或者是集成其它框架,才能很好的滿足你的需求了。

Shiro是如何進行認證授權

Shiro本身並沒有幫你實現認證、授權,但Shiro很好的定義了權限相關的一些概念,讓你完成具體的實現

  • 認證
    在Shiro裡,完成認證一般是這樣的subject.login(token),Subject代表一個用戶,Token代表一個用戶請求授權時提交的授權信息,透過AuthenticatingRealm .doGetAuthenticationInfo()取得目前Subject的一些信息,例如Principals,Credentials,校驗提交的token,如果登入成功,保存目前登入使用者

  • 授權

在Shiro裡,權限控制一般是這樣的@RequiresPermissions,當使用者存取受保護資源的時候,Shiro會透過AuthorizingRealm.doGetAuthorizationInfo(),從目前認證透過Subject的Principals裡取得使用者的權限,判斷使用者是否能存取該資源

  1. 在Shiro裡,透過實作Realm來完成上面2件事情,當你時單體應用的時候,非常簡單就能完成應用的認證授權。

  2. 但是當你有多個應用,需要復用同一套用戶以及權限資訊時該怎麼做呢,可以復用Realm,用戶權限在同一個db中,這樣的話是可以實現的,但是耦合太高,不同的應用必須要接入同一個資料來源才行;或者可以把用戶權限相關的DAO剝離出來,作為RPC或Rest調用,也可以實現;但是更好的方式是把認證授權整個剝離出來,單獨作為認證授權服務
  3. 基於Shiro的統一認證授權

  4. 為了實現統一認證授權,Shiro有CasFilter,可以集成CAS,但是CAS又是另外一套框架,較為重,有單獨的學習成本,所以這裡介紹一種更簡單,輕量,易用的,基於Shiro的認證授權服務shiro-uaa
  5. 認證授權流程

  6. 使用者請求受保護資源Resource Server

  7. Resource Server判斷使用者是否已登入

  8. 如果沒有登錄,Resource Server引導使用者到UAA Server進行登入

使用者在UAA Server登錄,如果登入成功,UAA Server返回code給用戶,並引導使用者到先前造訪的Resource Server

Java權限框架介紹:Shiro的統一認證授權

Resource Server用code到UAA Server取得access-token,token包含使用者授權資訊

  • Resource Server驗證accessToken是否合法,如果合法,請在Resource Server中儲存使用者資訊

    如下圖:
  1. 使用

auth-server
    1. #引用maven
    2. 實作自己的登入
    resource-server

    引用maven

    和shiro一樣,使用相關註解進行權限控制

    # ##相關建議:#########shiro授權實作詳解###################Apache Shiro 使用手冊(一)Shiro架構介紹#### ##

    以上是Java權限框架介紹:Shiro的統一認證授權的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn