Tôi đã cấu hình bảo mật mùa xuân bằng máy chủ ldap (nhưng tiếp tục đọc, không có vấn đề gì nếu bạn không biết gì về nó, đây thực sự là vấn đề về mùa xuân). Tất cả chạy như một say mê. Dưới đây là những dòng tôi sử dụng cho rằng:Mùa xuân, tập tin bất động sản, giá trị rỗng
<ldap-server ldif="" root="" manager-dn="" manager-password="" url="" id="ldapServer" />
Nếu tôi điền LDIF và rễ thuộc tính, nó sẽ chạy một máy chủ embeded:
<ldap-server ldif="classpath://ldap.ldif" root="dc=springframework,dc=org" manager-dn="" manager-password="" url="" id="ldapServer" />
Nếu tôi điền vào các lĩnh vực khác, nó sẽ chạy một máy chủ ở xa :
<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" />
Tất cả nội dung này chạy đúng cách. Bây giờ tôi muốn sử dụng cơ chế mùa xuân để tải các thông số như vậy từ một tập tin bất động sản:
Vì vậy, tôi thay thế cho giá trị thuộc tính như thế này:
<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" />
và tạo ra một tập tin bất động sản với:
ldap.server.url=
ldap.server.manager.dn=
ldap.server.manager.password=
ldap.ldif.path=
ldap.ldif.root=
Bây giờ , phần thú vị của vấn đề. Nếu tôi điền vào các thuộc tính sau trong tệp:
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=
Nó chạy máy chủ ở xa như mong đợi.
Nếu tôi điền vào các tập tin bất động sản như thế này:
ldap.server.url=
ldap.server.manager.dn=
ldap.server.manager.password=
ldap.ldif.path= classpath:ldap.ldif
ldap.ldif.root= dc=springframeworg,dc=org
Nó không chạy, phàn nàn rằng url ldap là mất tích. Nhưng vấn đề là nếu tôi thay đổi cấu hình mùa xuân từ:
<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" />
đến (bằng cách chỉ cần loại bỏ các tham chiếu đến biến $ {} 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" />
Nó chạy!
Mặc dù của tôi là mùa xuân không thay thế giá trị thuộc tính bằng thuộc tính cấu hình một nếu thuộc tính này trống. Nhưng tôi thấy nó lạ.
Bạn có thể cho tôi một số đầu mối để hiểu điều đó không? Và cách tốt nhất để cấu hình máy chủ ldap của tôi thông qua một tệp thuộc tính là gì?
EDIT: điều này là do một sự lựa chọn thiết kế nghèo (nhìn vào câu trả lời được chấp nhận), một vấn đề đã được khai trương vào ngày jira: https://jira.springsource.org/browse/SEC-1966
Bạn sử dụng phiên bản Spring nào? – Roadrunner
Đây là 3.0.5.RELEASE –