我正在使用Spring Cloud Gateway作为我的基础设施的入口点。网关配置有密钥斗篷,以通过以下配置验证身份验证报头
spring:
security:
oauth2:
resource-server:
jwt:
jwk-set-uri: https://httpd.keycloak.local:443/keycloak/realms/myRealm/protocol/openid-connect/certs
路由示例如下
spring:
cloud:
gateway:
routes:
- id: my-route
uri: http://service.local:8020
predicates:
- Path=/myPath/api/myRoute/test
filters:
- name: StripPrefix
args:
parts: 2
我如何在yml文件中定义这个路由public和另一个通过jwk-uri认证指向keycloak的路由?
1条答案
按热度按时间oknwwptz1#
我在spring-cloud-gateway configuration doc中没有看到任何安全规则。
我想你要么:
permitAll()
路由(其他路由需要用户进行身份验证)只有最后一个解决方案只适用于yaml文件配置:在pom中,将
spring-boot-starter-oauth2-resource-server
替换为在yaml中,将
spring.security.oauth2.resource-server
替换为请注意,在没有有效授权的情况下尝试访问“非公共”路由将导致401(未授权)而不是302(重定向到登录)。在我看来,客户端应该不确定对受保护路由的请求是否使用
Authorization
报头发出,或者通过重定向到授权服务器并重试来处理未经授权的请求。还要注意,
spring-security-oauth2-webflux-addons
将自动配置不仅仅是允许所有路由(例如CORS,CSRF和权限Map)。最后,我还没有用spring-cloud-gateway尝试过。请告诉我进展如何;- )