Grails 3和Spring Security LDAP未加密流量

时间:2016-04-05 18:28:09

标签: tomcat grails ssl ldap spring-security-ldap

我正在Tomcat 8上运行Grails 3应用程序。我开发的应用程序正在通过HTTPS,并使用grails spring安全LDAP插件进行身份验证。 (插件提供的默认登录页面,没有任何自定义)Tomcat启用仅使用HTTPS并禁用HTTP。

我的application.groovy文件还包含以下春季安全性代码:

grails.plugin.springsecurity.ldap.context.server = 'ldap://192.168.3.4:389/DC=MY_DOMAIN,DC=Net'
grails.plugin.springsecurity.password.algorithm = 'SHA-256'

(其他细节只是查询内容的配置参数等)

这是我的测试场景:

我有一台Windows机器在Ubuntu机器上托管应用程序。 ubuntu计算机向AD(Active Directory)计算机发出LDAP请求。 作为参考,这是IP:

Windows Machine: 192.168.1.1
Tomcat Ubuntu Machine: 192.168.1.10
AD Machine: 192.168.3.4

监控来自.1(Windows机器)的TCP流量后,一切都出现乱码,无法读取。当从.10到.4(Tomcat到AD)嗅探数据包时,LDAP数据包是明文。当然,我不认为这应该是这样的。我是否需要在tomcat中执行一些额外步骤以确保ldap流量正在加密?

Picture of the issue

2 个答案:

答案 0 :(得分:0)

您需要使用安全LDAP,它使用端口636和/或前缀ldaps://。

答案 1 :(得分:0)

我一直在阅读this post,我们认为我们可以通过ssl运行LDAP本身。所以我们的连接字符串将来自:

'ldap://192.168.3.4:389/DC=MY_DOMAIN,DC=Net'

'ldaps://192.168.3.4:636/DC=MY_DOMAIN,DC=Net'

注意,除此之外,还需要确保将根证书添加到Java中的信任列表中。对我来说,以下命令似乎可以解决问题:

keytool -import -noprompt -trustcacerts -alias myAdCert -file /location_of_cert/adcert.cer -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit