Tips
1. 由于 spring cloud gateway 是基于 WebFlux 框架實(shí)現(xiàn)的今布,該網(wǎng)關(guān)作為資源服務(wù)器時(shí)不能使用 @EnableResourceServer 注解拄显,需要使用?@EnableWebFluxSecurity 注解來(lái)配置安全過(guò)濾鏈顽馋。
2. 在 springboot 2.2 之前的版本中,安全框架對(duì)應(yīng)的是 spring-security 5.14狠怨,該版本只實(shí)現(xiàn)了基于 id token (jwk)?的認(rèn)證,而我當(dāng)前項(xiàng)目中的認(rèn)證服務(wù)組件是基于 org.springframework.cloud:spring-cloud-starter-oauth2 框架開(kāi)發(fā),使用的是秘鑰簽名的 access token,所以網(wǎng)關(guān)服務(wù)組件需要使用 springboot 2.2 + spring security 5.2 來(lái)處理 jws嫁赏。
3. 現(xiàn)有項(xiàng)目使用了 gradle 構(gòu)建,是一個(gè)多模塊的結(jié)構(gòu)油挥,其中主模塊引入了 2.1.2.RELEASE 版本的 org.springframework.boot 插件潦蝇,用來(lái)確保各模塊中 spring 組件的版本統(tǒng)一,此時(shí)子模塊是無(wú)法通過(guò)修改插件版本號(hào)或重新引入插件來(lái)改變模塊中 springboot 的版本深寥,所以網(wǎng)關(guān)模塊想用要引入 springboot 2.2 的話攘乒,就得脫離主模塊,或者將插件引入的操作直接下放到各個(gè)子模塊的構(gòu)建過(guò)程中惋鹅。
4.?org.springframework.cloud:spring-cloud-starter-oauth2 中?org.springframework.security.jwt.crypto.sign.MacSigner 支持使用短密碼的 HMACSHA256 簽名算法则酝,NimbusReactiveJwtDecoder 不支持短密碼。