Kubernetes-从Kubernetes集群中的节点连接到外部ldap服务器

时间:2019-06-24 19:52:41

标签: asp.net-web-api kubernetes ldap

问题:- 我已经在Kubernetes集群上部署了一个应用程序。应用程序通过连接到客户端域中可用的ldap服务器来使用Active Directory身份验证。从已部署的应用程序(在Kubernetes中),我无法连接到ldap服务器。获取与连接有关的错误。

积分
1),我在Kubernetes日志中没有看到任何特定的错误。它正在下面给出的asp.net核心代码的else循环内。
2) GKE不在Alias IP模式下运行
3) LDAP服务器不在GCP上。在客户域中。
4):在Kubernetes集群中,我使用的是容器优化的OS,因此无法使用ping来从节点ping LDAP主机。

问题:- 我是否需要在GCP的防火墙规则中添加ldap服务器,还是需要更改任何设置?

应用程序背景:- 应用程序由Angular中开发的前端和asp.net核心中的后端Web api组成。我已经为前端(角度部分)和后端(web api asp.net核心)创建了docker镜像。两个docker镜像都部署在Kubernetes集群中。在登录API响应中,我得到ldap服务器连接相关的错误。在下面给出的代码中,它进入了catch块。

注意:-我已经在GCP服务器(位于客户端域中)上部署了相同的应用程序(没有docker映像),在那里连接ldap服务器时没有出现任何错误。

从侧面检查我做了什么:- 从Kubernetes集群的节点上,我尝试使用ldap服务器执行curl命令。但出现了诸如“ libcurl中不支持或禁用协议“ ldap”的协议”之类的错误。

以下是与ldap服务器连接有关的asp.net Web API核心代码:-

            bool isValid = true;                    
                int ldapPort = LdapConnection.DEFAULT_PORT;
                System.String ldapHost = _ldapConSettings.Value.ldapHost;
                System.String loginDN = (_ldapConSettings.Value.domainName + @"\" + userName);                   
                System.String pass = password;
                System.String objectDN = String.Format(_ldapConSettings.Value.objectDN, userName);
                System.String name =  parameters.UserName; 
                LdapConnection conn = new LdapConnection();

                conn.Connect(ldapHost, ldapPort);

                // Authenticate to the server
                //conn.Bind(loginDN, pass);
       if (!string.IsNullOrEmpty(loginDN))
                {
                    try
                    {
                        conn.Bind(loginDN, pass);
                        isValid = true;
                    }
                    catch (Exception ex)
                    {
                        isValid = false;
                        return Json(new ResponseData { Code = "104", Message = "Unable to eastablish connection with active directory.." + ' ' + ex.Message.ToString(), Data = null });
                    }
                }

0 个答案:

没有答案