Java許可權架構介紹:Shiro的統一認證授權

來源:互聯網
上載者:User
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裡擷取使用者的許可權,判斷使用者是否能訪問該資源

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

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

基於Shiro的統一認證授權

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

認證授權流程

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

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

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

  4. 使用者在UAA Server登入,如果登入成功,UAA Server返回code給使用者,並引導使用者到之前訪問的Resource Server

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

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

如:

使用

  • auth-server

    1. 引用maven

    2. 實現自己的登入

  • resource-server

    1. 引用maven

    2. 和shiro一樣,使用相關註解進行許可權控制

基本上開箱即用,目前auth-server只是作為jar包提供,需要自己實現登入邏輯,後續會有可部署服務

shiro-uaa具體的相關說明介紹可以查看項目地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.