我使用kubernetes设置了密钥斗篷,并使用google和github创建的新领域作为外部身份提供商。 我创建了一个简单的spring security应用,该应用使用keycloak配置授权。 我可以向内部用户进行身份验证,并且该流程正在按预期进行。 但是,当使用外部身份提供程序google或github时,它会失败,并出现类似的异常。在日志中,它显示
错误[org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider](默认任务33)未能使身份提供者oauth回调: java.net.UnknownHostException:oauth2.googleapis.com : 名称或服务未知
在java.base / java.net.Inet4AddressImpl.lookupAllHostAddr(本机方法)
在java.base / java.net.InetAddress $ PlatformNameService.lookupAllHostAddr(InetAddress.java:929) 在java.base / java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1515)
在java.base / java.net.InetAddress $ NameServiceAddresses.get(InetAddress.java:848)
在java.base / java.net.InetAddress.getAllByName0(InetAddress.java:1505)
在java.base / java.net.InetAddress.getAllByName(InetAddress.java:1364)
在java.base / java.net.InetAddress.getAllByName(InetAddress.java:1298)
在org.apache.httpcomponents.core // org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45) 在org.apache.httpcomponents.core // org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:112) 在org.apache.httpcomponents.core // org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) 在org.apache.httpcomponents.core // org.apache.http.impl.execchain.MainClientExec。EstablishmentRoute(MainClientExec.java:393) 在org.apache.httpcomponents.core // org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) 在org.apache.httpcomponents.core // org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) 在org.apache.httpcomponents.core // org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) 在org.apache.httpcomponents.core // org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) 在org.apache.httpcomponents.core // org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) 在org.apache.httpcomponents.core // org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) 在org.apache.httpcomponents.core // org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) 在org.apache.httpcomponents.core // org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) 在org.keycloak.keycloak-server-spi-private@10.0.0//org.keycloak.broker.provider.util.SimpleHttp.makeRequest(SimpleHttp.java:222) 在org.keycloak.keycloak-server-spi-private@10.0.0//org.keycloak.broker.provider.util.SimpleHttp.asResponse(SimpleHttp.java:180) 在org.keycloak.keycloak-server-spi-private@10.0.0//org.keycloak.broker.provider.util.SimpleHttp.asString(SimpleHttp.java:172) 在org.keycloak.keycloak-services@10.0.0//org.keycloak.broker.oidc.AbstractOAuth2IdentityProvider$Endpoint.authResponse(AbstractOAuth2IdentityProvider.java:470) 在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.base / java.lang.reflect.Method.invoke(Method.java:566)
在org.jboss.resteasy.resteasy-jaxrs@3.11.0.Final//org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:138) 在org.jboss.resteasy.resteasy-jaxrs@3.11.0.Final//org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:526)
是因为,密钥库在kubernetes集群下运行吗?堆栈显示 java.net.UnknownHostException:oauth2.googleapis.com ,并且不确定如何解决此错误。 请让我知道。
答案 0 :(得分:1)
此问题的背景很少。 环境:Minikube使用退出的postgres-ha 11在ubuntu 19.04上运行,从driver = none,kubernetes,带有头盔集群的密钥斗篷开始运行
要测试ping:我部署了kuberentes dnsutils,并遵循了调试步骤。 我无法从Pod内ping任何google.com。 也是命令
kubectl获取容器--namespace = kube-system -l k8s-app = kube-dns
显示coredns尚未准备就绪或未运行。 这就是此问题的原因。在仔细研究了其他几篇文章之后,尤其是在这篇one之后,我修复了coredns的启动问题,其余所有工作均已完成。 HTH。