首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kubernetes Java API不使用提供的用户名和密码

Kubernetes Java API不使用提供的用户名和密码
EN

Stack Overflow用户
提问于 2018-01-12 07:32:49
回答 3查看 1.1K关注 0票数 1

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

代码语言:javascript
运行
复制
ApiClient client = Config.fromUserPassword( "https://....:6443", "user", "password", false );
Configuration.setDefaultApiClient( client );
CoreV1Api api = new CoreV1Api();
// Make api call like
api.listNode(...)

然而,上面的代码总是返回403禁止的。从响应消息看,请求中似乎没有使用user/pass。

代码语言:javascript
运行
复制
{"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类?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-02 10:12:59

回答我自己的问题,但它看起来不像是客户端的当前版本实际上执行的是user/pass身份验证。然而,BearerToken正在发挥作用。

票数 0
EN

Stack Overflow用户

发布于 2018-01-12 08:22:10

许多kubernetes集群不设置基本身份验证,只设置持有者令牌身份验证。您确定您的群集配置了基本身份验证吗?

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

票数 0
EN

Stack Overflow用户

发布于 2018-06-19 19:45:29

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“头中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48217465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档