我正在尝试将 Keycloak 与 EKS 作为 OIDC 提供商集成,虽然我过去取得了成功,但目前我正在努力使用新配置,而且我不太确定这个问题。
我遵循了所有各种指南 - 特别是这个one并且具有非常相似的配置。然而,虽然在 kubectl 登录过程中(从本地计算机)检索令牌,但当它发送到 EKS API 时,它似乎无法访问 Keycloak 端点。
我可以看到两个错误,第一个非常一致的是:
oidc authenticator: initializing plugin: 403 Forbidden: <html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>
第二个是:
"Unable to authenticate the request" err="[invalid bearer token, oidc: authenticator not initialized, unknown]"
值得注意的是,我们正在运行:
我们在 EKS 集群的 Pod 内运行 Keycloak,并使用多个负载均衡器(位于 nginx 服务器后面)将流量公开路由回 Pod。测试后我们可以点击:
https://keycloak.example.com/realms/myrealm/.well-known/openid-configuration
在外部,它提供了所需的配置。
我所看到的是,由于某种原因,OIDC Authenticator 进程无法提取配置,因此无法验证令牌 - 但不清楚原因。 nginx 服务器和出站防火墙似乎都没有看到“配置”请求。我们最初的想法是有一个 403 来自 nginx 服务器,但我们在访问日志中看不到任何内容...
这与仅“私有”端点配置有关吗?当 keycloak 端点完全私有时,控制平面是否能够向其发出出站请求? 403 是从哪里来的...?
任何帮助将不胜感激!!
我也有类似的问题。 kube-apiserver 有日志:
oidc authenticator: initializing plugin: Get "https://keycloak-external.live/realms/test/.well-known/openid-configuration": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
是的,如果我想通过 keycloak 进行身份验证,那么我会收到此消息(kube-apiserver 日志):
10 authentication.go:73] "Unable to authenticate the request" err="[invalid bearer token, oidc: authenticator not initialized, unknown]"
我花了两天时间解决这个问题,但我不知道如何解决它。