【问题标题】:Kubernetes Java API does not use username password suppliedKubernetes Java API 不使用提供的用户名密码
【发布时间】:2018-06-19 19:45:29
【问题描述】:

这是关于 Kubernetes Java 客户端的 0.2 版。我猜想在 Java API 中使用基本身份验证的方法就是这样做

ApiClient client = Config.fromUserPassword( "https://....:6443", "user", "password", false );
Configuration.setDefaultApiClient( client );
CoreV1Api api = new CoreV1Api();
// Make api call like
api.listNode(...)

但是上面的代码总是返回 403 Forbidden。从响应消息来看,请求中似乎没有使用用户/密码。

{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"nodes is forbidden: User \"system:anonymous\" cannot list nodes at the cluster scope","reason":"Forbidden","details":{"kind":"nodes"},"code":403}

我还通过代码调试了一下,我可能正在回答我自己的问题,但它看起来像在 CoreV1Api 的方法中,它从不添加基本身份验证作为身份验证方法,并且只使用 BearerToken。是否支持基本身份验证或者我应该使用其他 API 类?

【问题讨论】:

  • Kubernestes Dashboard 仅提供输入 Kubeconfig 或 Bearer Token 的选项。它没有提供输入用户名/密码的选项。
  • 我的用例不仅是 Kubernetes Dashboard,而且还编写了一个外部 Java 客户端来获取有关节点、集群等的信息。我指的 Java 客户端在这里是 github.com/kubernetes-client/java
  • 我只是提供仅供参考,仪表板也不使用基本身份验证,这可能意味着不支持基本身份验证。

标签: java kubernetes


【解决方案1】:

很多kubernetes集群没有设置basic auth,只设置bearer token auth。您确定您的集群配置了基本身份验证吗?

https://kubernetes.io/docs/admin/authentication/#static-password-file

【讨论】:

  • 是的,我已经用 --basic-auth-file=.. 配置了 apiserver。该文件似乎可以正确读取,否则如果假设我输入了错误的路径,apiserver 将无法启动。
【解决方案2】:

回答我自己的问题,但看起来当前版本的客户端实际上并未执行用户/通过身份验证。 BearerToken 正在运行。

【讨论】:

    【解决方案3】:

    java 客户端会忽略HttpBasicAuth 对象,但如果您使用ApiKeyAuth 对象并将密钥前缀设置为“Basic”并将API 密钥设置为base64 编码凭据,它将起作用。

    例如:

    String credentials= new String(Base64.getEncoder().encode("user:password".getBytes())); ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath("https://256.256.256.256"); ApiKeyAuth fakeBearerToken = (ApiKeyAuth) defaultClient.getAuthentication("BearerToken"); fakeBearerToken.setApiKey(credentials); fakeBearerToken.setApiKeyPrefix("Basic");

    这是可行的,因为 kubernetes 客户端将简单地将 API 密钥前缀与前缀连接起来,并将结果放在“Authorization”标头中。

    【讨论】:

      猜你喜欢
      • 2017-07-16
      • 1970-01-01
      • 2010-11-16
      • 2014-06-01
      • 2015-01-09
      • 2023-03-27
      • 2020-09-27
      • 2019-07-28
      相关资源
      最近更新 更多