kubernetes - Kubernetes OpenID Connect身份验证失败时记录

标签 kubernetes openid-connect keycloak

我试图如下设置OpenID Connect(OIDC)身份验证的Kubernetes 1.13:

  • 已安装Keycloak服务器
  • --oidc-issuer-url=https://my_keycloak/auth/realms/my_realm
  • 添加了命令行选项kube-apiserver
  • 将ID token 存储在kubeconfig的users.user.auth-provider.config.client-id中的my_user等处

  • 通过阅读文档kubectl,现在应该能够以my_user的身份访问集群。但是,kubectl get nodes说:
    error: You must be logged in to the server (Unauthorized)
    
    curl -k https://api_server:6443/api/v2/nodes --header "Authorization: Bearer $id_token"说:
    {
      "kind": "Status",
      "apiVersion": "v1",
      "metadata": {},
      "status": "Failure",
      "message": "Unauthorized",
      "reason": "Unauthorized",
      "code": 401
    }
    
    kubectl logs $kube_apiserver -n kube-systemjournalctl -u kubelet.service和Keycloak的stdout都保持沉默。因此,在哪里可以看到更多日志记录信息来识别OIDC身份验证可能出了问题?

    UPDATE 客户端(--v)或服务器(例如API服务器)上的 keyctl 选项在某种程度上有所帮助。

    最佳答案

    如果您使用的是email声明,那么Kubernetes要求您的email_verified声明为true。在Keycloak中,默认情况下将其设置为false
    资料来源:https://github.com/kubernetes/kubernetes/search?q=email_verified&unscoped_q=email_verified

    关于kubernetes - Kubernetes OpenID Connect身份验证失败时记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54484105/

    相关文章:

    azure - 无法通过 Azure Active Directory (OpenIdConnect) 进行身份验证 - Azure Web 应用程序

    Keycloak - 在领域中创建管理员用户

    kubernetes - 为什么Pod在主节点上运行?

    azure - k8s部署minio,但无法访问web控制台页面

    python - Python(pip)未在kubernetes上安装ElasticSearch库

    c# - 使用 Authentication.AzureAD.UI 库时实现 OpenIdConnectOptions 事件

    spring-security - 客户端和资源服务器的 Spring OAuth2 XML 配置

    java - Keycloak terms.ftl 文件 Url

    jwt - token 刷新时的部分 JWT token

    kubernetes - 如何在 Kubernetes Deployments 或 StatefulSets 之间创建依赖关系