Spring Security:開篇

自從 Spring Boot、Spring Cloud 火起來之後,Spring Security 也跟着沾了一把光!

Spring Security 是一個比 Shiro 優秀很多的權限管理框架,但是重量級、配置繁瑣、門檻高這些問題一直困擾着 Spring Security 的開發者,也讓很多初學者望而卻步。直到 Spring Boot 橫空出世,這些問題統統都得到緩解。

在 Spring Boot 或者 Spring Cloud 中,如果想選擇一個權限管理框架,幾乎毫無疑問的選擇 Spring Security,Shiro 在這個環境下已經不具備優勢了。

Spring Security 介紹

Java 領域老牌的權限管理框架當屬 Shiro 了。

Shiro 有着衆多的優點,例如輕量、簡單、易於集成等。

當然 Shiro 也有不足,例如對 OAuth2 支持不夠,在 Spring Boot 面前無法充分展示自己的優勢等等,特別是隨着現在 Spring Boot 和 Spring Cloud 的流行,Spring Security 正在走向舞臺舞臺中央。

陳年舊事

Spring Security 最早不叫 Spring Security ,叫 Acegi Security,叫 Acegi Security 並不是說它和 Spring 就沒有關係了,它依然是爲 Spring 框架提供安全支持的。事實上,Java 領域的框架,很少有框架能夠脫離 Spring 框架獨立存在。

Acegi Security 基於 Spring,可以幫助我們爲項目建立豐富的角色與權限管理,但是最廣爲人詬病的則是它臃腫繁瑣的配置,這一問題最終也遺傳給了 Spring Security。

在 Acegi Security 時代,網上流傳一句話:“每當有人要使用 Acegi Security,就會有一個精靈死去。”足見 Acegi Security 的配置是多麼可怕。

當 Acegi Security 投入 Spring 懷抱之後,先把這個名字改了,這就是大家所見到的 Spring Security 了,然後配置也得到了極大的簡化。

但是和 Shiro 相比,人們對 Spring Security 的評價依然中重量級、配置繁瑣。

直到有一天 Spring Boot 像謎一般出現在江湖邊緣,徹底顛覆了 JavaEE 的世界。一人得道雞犬升天,Spring Security 也因此飛上枝頭變鳳凰。

到現在,要不要學習 Spring Security 已經不是問題了,無論是 Spring Boot 還是 Spring Cloud,你都有足夠多的機會接觸到 Spring Security,現在的問題是如何快速掌握 Spring Security?

核心功能

對於一個權限管理框架而言,無論是 Shiro 還是 Spring Security,最最核心的功能,無非就是兩方面:

  • 認證
  • 授權
    通俗點說,認證就是我們常說的登錄,授權就是權限鑑別,看看請求是否具備相應的權限。

Spring Security 支持多種不同的認證方式,這些認證方式有的是 Spring Security 自己提供的認證功能,有的是第三方標準組織制訂的,主要有如下一些

一些比較常見的認證方式

  • HTTP BASIC authentication headers:基於IETF RFC 標準。
  • HTTP Digest authentication headers:基於IETF RFC 標準。
  • HTTP X.509 client certificate exchange:基於IETF RFC 標準。
  • LDAP:跨平臺身份驗證。
  • Form-based authentication:基於表單的身份驗證。
  • Run-as authentication:用戶用戶臨時以某一個身份登錄。
  • OpenID authentication:去中心化認證。

除了這些常見的認證方式之外,一些比較冷門的認證方式,Spring Security 也提供了支持

  • Jasig Central Authentication Service:單點登錄。
  • Automatic “remember-me” authentication:記住我登錄(允許一些非敏感操作)。
  • Anonymous authentication:匿名登錄。

作爲一個開放的平臺,Spring Security 提供的認證機制不僅僅是上面這些。如果上面這些認證機制依然無法滿足你的需求,我們也可以自己定製認證邏輯。當我們需要和一些“老破舊”的系統進行集成時,自定義認證邏輯就顯得非常重要了。

除了認證,剩下的就是授權了。Spring Security 支持基於 URL 的請求授權、支持方法訪問授權以及對象訪問授權。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章