【问题标题】:Kubernetes REST API - UnauthorizedKubernetes REST API - 未经授权
【发布时间】:2019-08-13 12:51:41
【问题描述】:

我有以下 Kubernetes REST API 请求

GET https://theserver/api/v1/pods?includeUninitialized=true

并在请求中包含以下 HTTP 标头:

Authorization: Basic ***************
Accept: application/json, */*
User-Agent: kubectl.exe/v1.13.0 (windows/amd64) kubernetes/ddf47ac

结果如下错误

{
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Failure",
    "message": "Unauthorized",
    "reason": "Unauthorized",
    "code": 401
}

我已经尝试了以下方法:

  • 模拟 kubectl 请求“kubectl describe pods --all-namespaces”工作正常(但我需要 REST)
  • 在 newkind101 对Kubernetes REST API 的评论中使用“--v=12”参数来查看底层 REST API 调用 - 看起来和我的一样
  • 阅读 Kubernetes 文档 - 但我找不到要发送哪些 HTTP 标头或/和 HTTP 正文值以正确进行身份验证的详细信息(我可以从该文档中的 curl 示例调用中检索到的东西很少)
  • 我阅读了Access Kubernetes API using REST APIs,但想在使用 GoDaddy 之类的框架之前了解我的问题

kubectl 似乎比我看到的“--v=12”参数做得更多。该位可能与“.kube/config”文件中的内容有关。我仍然不知道在我的 HTTP 请求中到底应该放什么以及放在哪里。

【问题讨论】:

  • 您是如何为您的集群设置身份验证的?如果你想更深入地了解这个话题->kubernetes.io/docs/reference/access-authn-authz/authentication
  • 好点,谢谢。我自己没有设置集群,我只是收到了 Url 和凭据(“Basic ******”)来编程。我假设 Url 和凭据是正确的,因为它们与命令行中的 kubectl.exe 一起使用。不过,我会在星期一再次检查。
  • 关于身份验证设置的答案:是的,对于简单的设置,这通过 AAD 集成开箱即用。

标签: rest api kubernetes authorization


【解决方案1】:

据我所知,Basic authentication 方法默认是禁用的,需要通过在 API 服务器配置中添加 --basic-auth-file 标志来启用,因此所有对 REST API 的请求都被标识为 anonymous user 并可能导致401 Unauthorized 错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2013-11-19
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2021-04-13
    • 2021-01-09
    相关资源
    最近更新 更多