- Web
基於SpringBoot框架開發應用,支援內嵌Tomcat/Jetty/Undertow/Netty來提供HTTP伺服器。
SpringBoot當前封裝瞭如下元件:spring-boot-starter-web
spring-boot-starter-webflux
Servlet Web
-
Servlet Web Applications
重要的註解:@Controller
@RestController
@RequestMapping
@GetMapping
@DeleteMapping
SpringBoot支援如下模板引擎:
- FreeMarker
- Groovy
- Thymeleaf
- Mustache
參考資料
- Spring Web MVC framework
- Spring Web MVC
- CORS
Reactive Web
-
Reactive Web Applications
Spring WebFlux在Spring 5.0版本中引入。SpringBoot支援如下模板引擎:
- FreeMarker
- Thymeleaf
- Mustache
配置屬性見ServerProperties。
參考資料
- Reactor
- Reactive Streams
- Spring WebFlux
- Functional Endpoints
- Custom Serializers and Deserializers
- Webjars
使用maven座標的方式管理靜態資源的依賴關係。
Shutdown
- Graceful Shutdown
啟動容易,退出難。
使用Purify、valgrind等工具檢測應用程式的記憶體類問題時,應用程式需要保證優雅退出,否則無法輸出完整的檢測報告。
Security
3A,認證、鑑權、授權。
認證,識別當前使用者是否可以登入系統,一般比如使用者名稱和密碼、一次性認證碼、動態令牌等。
鑑權,檢查當前使用者是否具備執行某項操作的許可權,設計許可權系統時,注意分權和分域問題,從設計和方案上消除橫向越權、縱向越權。
授權,管理員或者具備高許可權的使用者,為低許可權的使用者,賦予某操作許可權,或者訪問某資源的許可權。
Spring Security僅是技術框架,需要結合業務特點,設計解決方案。
- Spring Security
參考資料
-
Spring Security
-
Spring Security Reference Guide
-
什麼是 RBAC 模型?
-
RBAC——基於角色許可權的模型
-
許可權系統功能模組設計主流的九種常見許可權模型
-
網路安全基礎之訪問控制模型詳解——DAC, MAC, RBAC
-
面試必備!詳解單點登入(SSO)流程,輕鬆應對面試難題
單點登入(SSO)是一種認證機制,允許使用者在多個系統或應用服務之間,只需一次登入認證,即可訪問所有被授權的資源。透過SSO,使用者不需要為每個系統單獨登入,減少了重複輸入使用者名稱和密碼的煩惱,同時提升了安全性。
常見協議:
- SAML即Security Assertion Markup Language
- OAuth
- OpenID
- CAS即Central Authentication Service
-
SSO、OAuth2、JWT、CAS、OpenID、LDAP、RBAC
-
單點登入(SSO)詳解——超詳細
一次登入,全部登入!一次登出,全部登出!!
-
全面介紹SSO(單點登入)
-
單點登入(SSO)看這一篇就夠了
-
橫向越權與縱向越權
縱向越權:縱向越權指的是一個低階別攻擊者嘗試訪問高階別使用者的資源
橫向越權:橫向越權指的是攻擊者嘗試訪問與他擁有相同許可權的使用者的資源 -
橫向越權與縱向越權
Session
- Spring Session
支援使用Redis、JDBC、Hazelcast、MongoDB來儲存、共享Session資料。
參考資料
- Spring Session
- Spring Boot for Apache Geode
GraphQL
- Spring for GraphQL
相關元件,如下:spring-boot-starter-graphql
spring-boot-starter-web
spring-boot-starter-websocket
spring-boot-starter-webflux
spring-boot-starter-rsocket
參考資料
- GraphQL Java程式碼倉庫
- GraphQL Java
HATEOAS
- Spring HATEOAS