ColdFusion 2021 Docker镜像<cfldap>无法解析LDAP主机问题咨询
ColdFusion 2021 Docker 镜像
<cfldap> 调用异常临时规避方案(除升级Java外) - 方案1:绕开
<cfldap>标签,直接使用Java原生JNDI接口实现LDAP操作
该bug仅影响CF封装的<cfldap>标签逻辑,直接调用Java LDAP API可完全规避问题,CF中可通过cfscript直接调用,参考实现代码如下:// 初始化LDAP连接参数 var env = createObject("java", "java.util.Hashtable").init(); env.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory"); env.put("java.naming.provider.url", "ldap://你的LDAP服务器地址:端口"); env.put("java.naming.security.authentication", "simple"); env.put("java.naming.security.principal", "你的绑定账号DN"); env.put("java.naming.security.credentials", "你的绑定密码"); // 建立连接 var ctx = createObject("java", "javax.naming.directory.InitialDirContext").init(env); // 执行查询示例 var searchControls = createObject("java", "javax.naming.directory.SearchControls").init(); searchControls.setSearchScope(searchControls.SUBTREE_SCOPE); var result = ctx.search("查询基准DN", "查询过滤条件", searchControls); // 处理结果后关闭连接 ctx.close(); - 方案2:硬绑定LDAP域名解析记录
该bug触发原因之一是Java层域名解析逻辑异常,可直接在容器hosts文件中添加LDAP服务器的域名与IP映射关系:
启动容器时添加--add-host参数即可实现,示例命令:
也可进入容器后直接编辑docker run --add-host 你的LDAP域名:LDAP服务器IP 其他启动参数 adobecoldfusion/coldfusion:2021/etc/hosts文件添加对应记录。 - 方案3:本地端口转发绕开域名解析
在容器内部署轻量端口转发工具(如stunnel、nginx stream模块),将容器本地127.0.0.1的指定端口转发到实际LDAP服务器的IP+端口,<cfldap>标签中直接填写server="127.0.0.1"和本地转发端口即可,无需修改业务逻辑代码。 - 方案4:降级使用2021.0.01版本的CF Docker镜像
问题出现在2021.0.02版本镜像中,回退到2021.0.01版本(对应版本号325996)的官方镜像可直接规避该问题,该版本自带的Java版本不存在解析异常。
内容的提问来源于stack exchange,提问作者madcolor
相关产品推荐
相关产品推荐

