首页 > 解决方案 > Keycloak Spring Boot 令牌未从 Zuul 代理传播到 Spring Boot 服务

问题描述

我有 Zuul 代理,并且在 application.properties 中使用以下配置实现了 keycloak-adapter:

#Keycloak config
keycloak.realm=Development
keycloak.auth-server-url=http://<IP>:8080/auth
keycloak.ssl-required = external
keycloak.public-client=true
keycloak.resource=example
keycloak.use-resource-role-mappings=true
keycloak.security-constraints[0].authRoles[0]=user
keycloak.security-constraints[0].securityCollections[0].patterns[0]=/api/*
keycloak.security-constraints[1].authRoles[0]=operator
keycloak.security-constraints[1].securityCollections[0].patterns[0]=/api/*
keycloak.expose-token=true

# Keycloak Enable CORS
keycloak.cors = true

zuul.ignored-headers=Access-Control-Allow-Credentials, Access-Control-Allow-Origin
zuul.sensitive-headers=Cookie, Set-Cookie

代理的客户端是公共客户端。当我访问它时,我可以看到 keycloak 登录页面,没关系,但是当它重定向我到具有相同配置(zuul 配置除外)的 keycloak-adapter 以及公共客户端的服务时,我收到了一个错误服务日志中的请求和无状态 Cookie。

我注意到的一件事是,当我访问代理上的 Swagger 文档时,由于 CORS,所有内容都被阻止,即使是来自未实现 keycloak 的服务的文档。

编辑:当我从发送令牌的 GUI 制作相同的东西时,它可以按我的意愿工作。

标签: spring-bootkeycloaknetflix-zuulkeycloak-services

解决方案


推荐阅读