Ho configurato la sicurezza di primavera con un server LDAP (ma continua a leggere, non è un problema se non si ha conoscenza a riguardo, questo è davvero un problema di primavera). Tutto funziona come un fascino. Ecco la linea che uso per questo:Spring, file di proprietà, valori vuoti
<ldap-server ldif="" root="" manager-dn="" manager-password="" url="" id="ldapServer" />
Se riempio attributi LDIF e root, verrà eseguito un server embeded:
<ldap-server ldif="classpath://ldap.ldif" root="dc=springframework,dc=org" manager-dn="" manager-password="" url="" id="ldapServer" />
Se riempio altri campi, verrà eseguito un server remoto :
<ldap-server ldif="" root="" manager-dn="dc=admin,dc=springframeworg,dc=org" manager-password="password" url="ldap://myldapserver.com/dc=springframeworg,dc=org" id="ldapServer" />
Tutte queste cose funzionano correttamente. Ora voglio usare il meccanismo della molla per caricare tali parametri da un file di proprietà:
Così sostituisco valori degli attributi in questo modo:
<ldap-server ldif="${ldap.ldif.path}" root="${ldap.ldif.root}" manager-dn="${ldap.server.manager.dn}" manager-password="${ldap.server.manager.password}" url="${ldap.server.url}" id="ldapServer" />
e creare un file di proprietà con:
ldap.server.url=
ldap.server.manager.dn=
ldap.server.manager.password=
ldap.ldif.path=
ldap.ldif.root=
Ora , la parte divertente del problema. Se riempio le seguenti proprietà nel file:
ldap.server.url=ldap://myldapserver.com/dc=springframeworg,dc=org
ldap.server.manager.dn=dc=admin,dc=springframeworg,dc=org
ldap.server.manager.password=password
ldap.ldif.path=
ldap.ldif.root=
Esegue un server remoto come previsto.
Se riempio il file di proprietà come questa:
ldap.server.url=
ldap.server.manager.dn=
ldap.server.manager.password=
ldap.ldif.path= classpath:ldap.ldif
ldap.ldif.root= dc=springframeworg,dc=org
Esso non viene eseguito, lamentando che l'URL LDAP è mancante. Ma il problema è che se cambio la configurazione di primavera da:
<ldap-server ldif="${ldap.ldif.path}" root="${ldap.ldif.root}" manager-dn="${ldap.server.manager.dn}" manager-password="${ldap.server.manager.password}" url="${ldap.server.url}" id="ldapServer" />
a (semplicemente rimuovendo il riferimento alla variabile $ {} ldap.server.url)
<ldap-server ldif="${ldap.ldif.path}" root="${ldap.ldif.root}" manager-dn="${ldap.server.manager.dn}" manager-password="${ldap.server.manager.password}" url="" id="ldapServer" />
Funziona!
I miei pensieri sono che la molla non sostituisce il valore dell'attributo con la proprietà config one se questa è vuota. Ma lo trovo strano
Potete darmi qualche indizio per capirlo? E qual è la cosa migliore da fare per configurare il mio server LDAP tramite un file di proprietà?
EDIT: ciò è dovuto ad una scelta cattiva progettazione (guarda risposta accettata), un problema è stato aperto il jira: https://jira.springsource.org/browse/SEC-1966
Quale versione di Primavera si usa? – Roadrunner
Questo è il 3.0.5.RELEASE –