2016-04-05 13 views
1

Ich verwende eine Grails 3-Anwendung auf Tomcat 8. Die von mir entwickelte Anwendung läuft über HTTPS und verwendet das LDAP-Plugin für die Grails-Spring-Sicherheit zur Authentifizierung. (Standard-Login-Seite, die vom Plugin bereitgestellt wird, und nichts benutzerdefiniertes) Tomcat ist nur für die Verwendung von HTTPS aktiviert und HTTP ist deaktiviert.Grails 3 und Spring Security Unverschlüsselter LDAP-Verkehr

Meine application.groovy Datei enthält auch den folgenden Code für den Frühling Sicherheit:

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

(Die anderen Details sind nur die Konfigurationsparameter für das, was abzufragen, etc)

Hier ist mein Test-Szenario:

Ich habe eine Windows-Maschine, die die Anwendung trifft, gehostet auf einem Ubuntu-Rechner. Der Ubuntu-Computer erstellt eine LDAP-Anfrage an den AD-Computer (Active Directory). Als Referenz sind hier die IP-Adressen:

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

Nach dem TCP-Datenverkehr vom 0,1 (Windows-Maschine) kommt Überwachung alles ist verstümmelt, und es kann nicht gelesen werden. Beim Sniffing der Pakete von .10 zu .4 (Tomcat zu AD) befinden sich die LDAP-Pakete im Klartext. Ich glaube nicht, dass das so sein soll. Gibt es einen zusätzlichen Schritt, den ich in tomcat tun muss, um sicherzustellen, dass ldap-Verkehr verschlüsselt wird?

Picture of the issue

Antwort

0

Ich habe this post gelesen, und es stellt sich heraus, dass wir LDAP selbst über SSL laufen lassen können. Also unsere Verbindungszeichenfolge würde aus:

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

zu

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

Hinweis, zusätzlich dazu, Sie müssen auch sicherstellen, dass die Root-Zertifikate auf die Vertrauensliste in Java hinzugefügt werden. Für mich schien der folgende Befehl den Trick zu tun:

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

Sie müssen Sichere LDAP verwenden, die Port 636 und/oder die Vorsilbe ldaps verwendet: //.

+0

ich denke, Sie haben Recht. Ich habe gerade ein ähnliches Beispiel in einem zufälligen Blog gesehen. Ich werde damit herumspielen und schauen, ob ich das zur Arbeit bringen kann. – angryip

Verwandte Themen