REQUIREMENT security.ldap |
Type | NEW |
Priority | HIGH |
Status | CLOSED |
Topic | XmlBlaster provides a LDAP based authentication plugin | ||||||||||||||||||||||||||||||||
Des cription |
Authentication in xmlBlaster is based on plugins. The plugin described here is based on using an external LDAP server for authentication. The LDAP server
To get started with ldap authentication please
setup an ldap server first. See the example section below.
Start your LDAP server and fill it with the demo data from
Get it runningAdd the configuration of the LDAP plugin in xmlBlaster.properties: ldap.serverUrl=ldap://localhost:389/o=xmlBlaster,c=ORG ldap.rootDN=cn=Manager,o=xmlBlaster,c=ORG ldap.rootPwd=secret ldap.loginFieldName=cn Start the xmlBlaster server java -jar lib/xmlBlaster.jar You may set these settings on command line as well: java -jar lib/xmlBlaster.jar \ -ldap.serverUrl "ldap://localhost:389/o=xmlBlaster,c=ORG" \ -ldap.rootDN "cn=Manager,o=xmlBlaster,c=ORG" \ -ldap.rootPwd "secret" \ -ldap.loginFieldName "cn" Start a client (all in one line), e.g. java HelloWorld3 -session.name tim -passwd tim -Security.Client.DefaultPlugin ldap,1.0 In the log output of xmlBlaster server you should see something like: SecurityPluginManager] Plugin 'org.xmlBlaster.authentication.plugins.ldap.Manager' successfully initialized Congratulations, you were authenticated by LDAP! Edit xmlBlaster.properties and add this line Security.Client.DefaultPlugin=ldap,1.0 Now LDAP is switched on as default, try again: java HelloWorld3 -session.name tim -passwd tim The used connect() QoS which you can directly use from Python or Perl clients looks like this: <securityService type="ldap" version="1.0"> <user>tim</user> <passwd>tim</passwd> </securityService> Now try an invalid password: java HelloWorld3 -session.name tim -passwd aaah You should get an authentication error from LDAP |
||||||||||||||||||||||||||||||||
Example Java |
Here is an example how to setup the LDAP server based on openldap server 2.x, the free ldap server (slapd) http://www.openldap.org/ Note: In this xmlBlaster/demo/ldap/README you find a description of how to set up openldap. After you have the running LDAP server, please follow xmlBlaster/src/java/org/xmlBlaster/authentication/plugins/ldap/README on how to use it with xmlBlaster (it is simple - just go for it). See: http://nimbus.temple.edu/ldap/ http://www.yolinux.com/TUTORIALS/LinuxTutorialLDAP.html http://www.ldapguru.com/ http://java.sun.com/products/jndi The JAVA based ldap interface http://developer.netscape.com/docs/manuals/dirsdk/jsdk40/servinfo.htm Demo code xmlBlaster/demo/ldap/demoData.ldif Demo users for our ldap server GUI based client: Under UNIX you can use 'gq' to manage your ldap data. (The gentlemans LDAP client) Install this demo: JDK 1.3 and higher has ldap drivers integrated, for JDK 1.2 please download the ldap driver and add it to your classpath. Configure OpenLDAP server: Edit /etc/openldap/slapd.conf suffix "o=xmlBlaster, c=ORG" rootdn "cn=Manager, o=xmlBlaster, c=ORG" # Define global ACLs to allow default read/write access. access to * by * read access to * by * write # Switch on logging: loglevel -1 tail -f /var/log/messages Start/Stop: rcldap start rcldap stop Feed some initial users: We have provided a file demoData.ldif which contains some demo data, in the ldap interchange format. The demo data is based on the core.schema. Please import it: ldapadd -x -D "cn=Manager,o=xmlBlaster,c=ORG" -w secret -v -f demoData.ldif Query the ldap server (cn is the unique user name): ldapsearch -x -b 'o=xmlBlaster,c=ORG' '(objectclass=*)' Check password: ldapsearch -x -b 'o=xmlBlaster,c=ORG' '(&(cn=tim)(userPassword=tim))' You should get a line like: # numEntries: 1 Recursiv remove all data: echo "o=xmlBlaster, c=ORG" | ldapdelete -x -D "cn=Manager,o=xmlBlaster,c=ORG" -w secret -v -r Query ldap server with netscape or konqueror (Linux): ldap://localhost/o=xmlBlaster, c=ORG??base ldap://localhost/o=xmlBlaster, c=ORG??sub ldap://localhost/o=xmlBlaster, c=ORG?cn,dbAnrede?sub ldap://localhost/o=xmlBlaster, c=ORG?cn?sub?(sn=Stallman) Syntax: ldap[s]://<hostname>:<port>/<base_dn>?<attributes>?<scope>?<filter> RFC2255 LDAP and Kerberos: http://www.umich.edu/~dirsvcs/ldap/doc/guides/slapd/15.html#RTFToC123 |
||||||||||||||||||||||||||||||||
Configure |
Server side configuration
Additional client side configuration
NOTE: Configuration parameters are specified on command line (-someValue 17) or in the
xmlBlaster.properties file (someValue=17). See requirement "util.property" for details. |
||||||||||||||||||||||||||||||||
Todo |
|
||||||||||||||||||||||||||||||||
See REQ | security.introduction | ||||||||||||||||||||||||||||||||
See REQ | security.development.serverPlugin.howto | ||||||||||||||||||||||||||||||||
See REQ | security.htpasswd | ||||||||||||||||||||||||||||||||
See API | org.xmlBlaster.authentication.plugins.ldap.LdapGateway | ||||||||||||||||||||||||||||||||
See | ../../src/java/org/xmlBlaster/authentication/plugins/ldap/README | ||||||||||||||||||||||||||||||||
See | ../../demo/ldap/README | ||||||||||||||||||||||||||||||||
See TEST | org.xmlBlaster.test.authentication.TestAuthenticationHtPassWd |
This page is generated from the requirement XML file xmlBlaster/doc/requirements/security.ldap.xml