我有一个Spring云API网关与keycloak服务器进行JWT身份验证。如果我从eclipse运行我的应用程序,并将keycloak作为单个Docker容器,它工作正常。但是,当我将我的Sping Boot 应用程序作为Docker容器运行时(使用Docker compose或kubernetes),它无法使用keycloak进行授权,并引发以下错误。
org.springframework.security.oauth2.jwt.JwtDecoderInitializationException: Failed to lazily resolve the supplied JwtDecoder instance
at org.springframework.security.oauth2.jwt.SupplierReactiveJwtDecoder.wrapException(SupplierReactiveJwtDecoder.java:48) ~[spring-security-oauth2-jose-5.7.6.jar!/:5.7.6]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
.
.
Caused by: java.lang.IllegalArgumentException: Unable to resolve the Configuration with the provided Issuer of "http://keycloak-server:8080/realms/master"
at org.springframework.security.oauth2.jwt.JwtDecoderProviderConfigurationUtils.getConfiguration(JwtDecoderProviderConfigurationUtils.java:161) ~[spring-security-oauth2-jose-5.7.6.jar!/:5.7.6]
at org.springframework.security.oauth2.jwt.JwtDecoderProviderConfigurationUtils.getConfigurationForIssuerLocation(JwtDecoderProviderConfigurationUtils.java:79) ~[spring-security-oauth2-jose-5.7.6.jar!/:5.7.6]
这种情况是否需要任何其他配置?
1条答案
按热度按时间nr7wwzry1#
如果keycloak和springboot应用程序部署在不同的名称空间中,则需要将名称空间包含在springboot应用程序中配置的keycloak url中(https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#namespaces-of-services)。
您可能还需要检查keycloak的kubernetes服务是否配置正确。