diff --git a/Doc/DbDevel/dbDevel.xml b/Doc/DbDevel/dbDevel.xml index 6155028f7eb6a23f9a968ef6690344222af05b77..b29e4ca081fdb21862c86578a45e6f089af85f15 100644 --- a/Doc/DbDevel/dbDevel.xml +++ b/Doc/DbDevel/dbDevel.xml @@ -181,19 +181,273 @@ print(fivestar)</programlisting></td> <chapter xml:id="chap_dbDevel_dbOverview"> <title>Selected database products overview</title> + <figure xml:id="fig_dbDevel_dbOverview_installDocker"> + <title>Installing Docker</title> + + <itemizedlist> + <listitem> + <para>OS specific instructions at <uri + xlink:href="https://docs.docker.com/engine/install">Install Docker + Engine</uri>.</para> + </listitem> + + <listitem> + <para>Windows: Make sure to install Windows Subsystem for Linux + version 2 (<abbrev>WSL 2</abbrev>). Install <xref + linkend="glo_Ubuntu"/> from Microsoft's App store and follow <link + xlink:href="https://docs.docker.com/docker-for-windows/wsl">Docker + Desktop WSL 2 backend</link>.</para> + </listitem> + </itemizedlist> + </figure> + <section annotations="slide" xml:id="sect_dbDevel_overview_openLdap"> <title><productname>Openldap</productname></title> + <figure xml:id="fig_dbDevel_selectedDbOverview_openLdap_whyLdap"> + <title>Why LDAP?</title> + + <itemizedlist> + <listitem> + <para><emphasis role="bold">Standardized</emphasis> protocol like + <xref linkend="glo_HTTP"/>, <xref linkend="glo_SMB"/> and + others.</para> + </listitem> + + <listitem> + <para><quote>Glue</quote> connecting an organization's + applications and services.</para> + + <itemizedlist> + <listitem> + <para>Backend data for authentication / <abbrev>SSO</abbrev>, + <abbrev>PKI</abbrev>, network <abbrev>FS</abbrev> etc.</para> + </listitem> + + <listitem> + <para>Meta data repository for users, organisational units, + network nodes.</para> + </listitem> + </itemizedlist> + </listitem> + </itemizedlist> + </figure> + <figure xml:id="fig_dbDevel_selectedDbOverview_openLdap_introRef"> <title>LDAP introduction</title> - <para>Read the introductory slides at <xref - linkend="sdiLdap"/>.</para> + <itemizedlist> + <listitem> + <para>Read the introductory slides at <xref linkend="sdiLdap"/> as + well.</para> + </listitem> + </itemizedlist> </figure> + <section xml:id="sect_dbDevel_selectedDbOverview_ldap_install"> + <title>Installation</title> + + <figure xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerInstall"> + <title>Running a Docker container</title> + + <screen>docker run --detach \ <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-1" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-1-co"/> + -p 389:389 \ <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-2" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-2-co"/> + --env LDAP_ORGANISATION="Betrayers heaven" \ <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-3" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-3-co"/> + --env LDAP_TLS=false \ <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-4" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-4-co"/> + --env LDAP_DOMAIN="betrayer.com" \ <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-5" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-5-co"/> + --env LDAP_ADMIN_PASSWORD="password" \ <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-6" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-6-co"/> + --env LDAP_CONFIG_PASSWORD="configPassword" \ <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-7" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-7-co"/> + --volume ~/OpenLdap/Data:/var/lib/ldap \ <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8-co"/> + --volume ~/OpenLdap/Config:/etc/ldap/slapd.d \ <coref + linkend="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8-co"/> +osixia/openldap:1.4.0 <co + linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-9" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-9-co"/></screen> + + <calloutlist role="slideExclude"> + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-1-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-1"> + <para>Run the container and detach its process from the current + shell. This will start a background process.</para> + </callout> + + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-2-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-2"> + <para>Bind the containers port 389 to the host system's port + 389.</para> + </callout> + + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-3-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-3"> + <para>The organisation's name e.g. <quote>HdM + Stuttgart</quote>.</para> + </callout> + + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-4-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-4"> + <para>We currently do not require transport layer + security.</para> + </callout> + + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-5-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-5"> + <para>The organisation's domain name. The corresponding <xref + linkend="glo_DIT"/>'s root will be + <code>dc=betrayer,dc=de</code>.</para> + </callout> + + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-6-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-6"> + <para>The <xref linkend="glo_DIT"/>'s administrator password + corresponding to the bind <xref linkend="glo_DN"/> + <code>cn=admin,dc=betrayer,dc=com</code>. This grants full + access to the <xref linkend="glo_DIT"/> starting at node + <code>dc=betrayer,dc=com</code>.</para> + </callout> + + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-7-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-7"> + <para>The server configuration tree's administrator password + corresponding to the bind <xref linkend="glo_DN"/> + <code>cn=admin,cn=config</code> granting full access. This + grants full access to the server's configuration tree starting + at <code>cn=config</code>.</para> + </callout> + + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8"> + <para>The docker host system's <emphasis role="bold">pre - + existing</emphasis> directories + <filename>~/OpenLdap/Data</filename> and + <filename>/~/OpenLdap/Config</filename> will be mounted to the + container's directories <filename>/var/lib/ldap</filename> and + <filename>/etc/ldap/slapd.d</filename> respectively. Thus the + OpenLdap server's back</para> + + <para>end databases will reside on the docker host system's file + system. This allows for <abbrev>e.g.</abbrev> deleting the + container before upgrading without loosing data.</para> + + <para>This way your local server's database and the server's log + files will exist outside your <xref linkend="glo_Docker"/> + container. This is not strictly required but allows to remove + and re-install your container independently of its + database.</para> + + <note> + <para>On windows make sure to execute from inside the Linux + Sub System. This will allow for efficient file system + access.</para> + </note> + </callout> + + <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-9-co" + xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-9"> + <para>The docker image name and version as being published on + <uri + xlink:href="https://hub.docker.com/r/osixia/openldap/tags">https://hub.docker.com/r/osixia/openldap/tags</uri>.</para> + </callout> + </calloutlist> + + <para>References:</para> + + <itemizedlist> + <listitem> + <para><productname>osixia / docker-openldap</productname> <link + xlink:href="https://github.com/osixia/docker-openldap">documentation</link>.</para> + </listitem> + + <listitem> + <para>Docker <link + xlink:href="https://docs.docker.com/config/containers/container-networking/">container + networking</link>.</para> + </listitem> + + <listitem> + <para>Docker <link + xlink:href="https://docs.docker.com/engine/reference/run">run + reference</link>.</para> + + <caution> + <para><option>--detach</option> is not documented in favour of + its short variant <option>-d</option>.</para> + </caution> + </listitem> + </itemizedlist> + </figure> + + <figure xml:id="dbDevel_selectedDbOverview_ldap_fig_apacheDirectoryInstall"> + <title>Installing Apache Directory Studio</title> + + <itemizedlist> + <listitem> + <para>Download and install <link + xlink:href="https://directory.apache.org/studio">Apache + Directory Studio</link>.</para> + </listitem> + + <listitem> + <para>Configure access to your local docker container.</para> + </listitem> + </itemizedlist> + </figure> + </section> + <section xml:id="sect_dbDevel_overview_openLdap_features"> <title>Features</title> + <figure xml:id="fig_dbDevel_overview_openLdap_terminology"> + <title>Terminology</title> + + <itemizedlist> + <listitem> + <para><xref linkend="glo_DIT"/>:Document information tree + </para> + </listitem> + + <listitem> + <para><xref linkend="glo_DN"/>: An entries distinguished name. + Unique identifier.</para> + </listitem> + + <listitem> + <para><xref linkend="glo_RDN"/>: Relative distinguished name. + Unique identifier with respect to a given context node.</para> + </listitem> + + <listitem> + <para>Bind operation: Connect to an <xref linkend="glo_LDAP"/> + service.</para> + + <orderedlist> + <listitem> + <para>anonymous</para> + </listitem> + + <listitem> + <para>authenticated</para> + </listitem> + </orderedlist> + </listitem> + </itemizedlist> + </figure> + <section xml:id="sect_dbDevel_overview_openLdap_features_CRUD"> <title>CRUD</title> @@ -601,205 +855,246 @@ mail: jsmith@privateaccount.org</programlisting></td> <section xml:id="sect_dbDevel_overview_openLdap_features_query"> <title>Query</title> - <para/> + <figure xml:id="fig_dbDevel_overview_openLdap_features_query_scope"> + <title>Query scope</title> + + <itemizedlist> + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/BaseObject">BaseObject</link></para> + </listitem> + + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/SingleLevel">SingleLevel</link></para> + </listitem> + + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/WholeSubtree">WholeSubtree</link></para> + </listitem> + + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/SubordinateSubtree">SubordinateSubtree</link> + (not yet officially standardized)</para> + </listitem> + </itemizedlist> + </figure> + + <figure xml:id="fig_dbDevel_overview_openLdap_features_query_rpnNotation"> + <title>Query filter</title> + + <informaltable border="0"> + <tr> + <td valign="top"><itemizedlist> + <listitem> + <para>Presence: <code>(cn=*)</code></para> + </listitem> + + <listitem> + <para>Equality: <code>(uid=xy123)</code></para> + </listitem> + + <listitem> + <para>Comparison: <code>(1000 < + uidNumber)</code></para> + </listitem> + + <listitem> + <para>Substring: <code>(surname=K*)</code></para> + </listitem> + + <listitem> + <para>Approximate Match: <code>(sn<emphasis + role="red">~=</emphasis>gok)</code></para> + + <para>(matches <code>Gack</code>, <code>Keck</code>, + <code>Kubiac</code>, <code>Goik,Kabbeck</code>, + <code>Nguyen Quoc</code>, <code>Gubic</code> , + <code>Koc</code>)</para> + </listitem> + </itemizedlist></td> + + <td valign="top"><itemizedlist> + <listitem> + <para>AND: <code>(<emphasis + role="red">&</emphasis>(5 < + uidNumber)(sn=*k*)(gidNumber=1000))</code></para> + </listitem> + + <listitem> + <para>OR: <code>(<emphasis role="red">|</emphasis>(5 + < uidNumber)(sn=*k*)(gidNumber=1000))</code></para> + </listitem> + + <listitem> + <para>NOT: <code>(<emphasis role="red">!</emphasis>(5 + < uidNumber))</code></para> + </listitem> + + <listitem> + <para><link + xlink:href="https://ldap.com/ldap-filters">Extensible + match filters</link>, see <link + xlink:href="https://ldapwiki.com/wiki/ExtensibleMatch">Extensible + Match Search Filter</link> as well.</para> + </listitem> + </itemizedlist></td> + </tr> + </informaltable> + </figure> </section> <section xml:id="sect_dbDevel_overview_openLdap_features_schema"> <title>Schema</title> - <para/> + <figure xml:id="fig_dbDevel_overview_openLdap_features_schema_features"> + <title>Schema support</title> + + <informaltable border="0"> + <tr> + <td valign="top"><itemizedlist> + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/ObjectClass">Objectclass</link> + definitions</para> + </listitem> + + <listitem> + <para>Objectclass inheritance. <link + xlink:href="https://ldapwiki.com/wiki/ObjectClass%20Types">Types</link>:</para> + + <itemizedlist> + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/ABSTRACT">Abstract</link></para> + </listitem> + + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/Structural%20ObjectClass">Structural</link></para> + </listitem> + + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/AUXILIARY">Auxiliary</link></para> + </listitem> + </itemizedlist> + </listitem> + + <listitem> + <para>Dynamic instance schema changes</para> + </listitem> + </itemizedlist></td> + + <td valign="top"><itemizedlist> + <listitem> + <para><link + xlink:href="https://ldapwiki.com/wiki/MULTI-VALUE">Single + and multivalued</link> attributes</para> + </listitem> + + <listitem> + <para>Attribute data types</para> + </listitem> + + <listitem> + <para>Matching rules (Case sensitive / insensitive, + string match, numeric)</para> + </listitem> + </itemizedlist></td> + </tr> + </informaltable> + </figure> </section> <section xml:id="sect_dbDevel_overview_openLdap_features_procedure"> <title>Procedures / triggers</title> - <para/> + <para>-</para> </section> <section xml:id="sect_dbDevel_overview_openLdap_features_transaction"> <title>Transactions / recovery</title> - <para/> + <para>-</para> </section> <section xml:id="sect_dbDevel_overview_openLdap_features_acl"> <title>Data access control</title> - <para/> - </section> + <figure xml:id="fig_dbDevel_overview_openLdap_features_acl_sample"> + <title>Implementations</title> - <section xml:id="sect_dbDevel_overview_openLdap_features_api"> - <title>API support</title> + <programlisting language="none">access to attrs=matrikelNr + by dn="uid=goik,ou=userlist,dc=hdm-stuttgart,dc=de" read + by dn="uid=kuhn,ou=userlist,dc=hdm-stuttgart,dc=de" read + by self read + by * none - <para/> +access to attrs=userPassword,shadowLastChange,passwordClear + by dn="uid=Administrator,ou=people,ou=MI,ou=domainlist,dc=hdm-stuttgart,dc=de" read + by anonymous auth + by * none +</programlisting> + </figure> </section> - </section> - - <section xml:id="sect_dbDevel_selectedDbOverview_ldap_install"> - <title>Installation</title> - - <figure xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall"> - <title>Running a Docker container</title> - - <screen>docker run --detach \ <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-1" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-1-co"/> - -p 389:389 \ <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-2" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-2-co"/> - --env LDAP_ORGANISATION="Betrayers heaven" \ <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-3" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-3-co"/> - --env LDAP_TLS=false \ <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-4" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-4-co"/> - --env LDAP_DOMAIN="betrayer.com" \ <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-5" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-5-co"/> - --env LDAP_ADMIN_PASSWORD="password" \ <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-6" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-6-co"/> - --env LDAP_CONFIG_PASSWORD="configPassword" \ <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-7" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-7-co"/> - --volume /var/lib/ldap/data:/var/lib/ldap \ <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8-co"/> - --volume /var/lib/ldap/config:/etc/ldap/slapd.d \ -osixia/openldap:1.4.0 <co - linkends="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-9" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-9-co"/></screen> - <calloutlist role="slideExclude"> - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-1-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-1"> - <para>Run the container and detach its process from the current - shell. This will start a background process.</para> - </callout> - - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-2-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-2"> - <para>Bind the containers port 389 to the host system's port - 389.</para> - </callout> - - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-3-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-3"> - <para>The organisation's name e.g. <quote>HdM - Stuttgart</quote>.</para> - </callout> - - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-4-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-4"> - <para>We currently do not require transport layer - security.</para> - </callout> - - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-5-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-5"> - <para>The organisation's domain name. The corresponding <xref - linkend="glo_DIT"/>'s root will be - <code>dc=betrayer,dc=de</code>.</para> - </callout> + <section xml:id="sect_dbDevel_overview_openLdap_features_api"> + <title>API support</title> - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-6-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-6"> - <para>The <xref linkend="glo_DIT"/>'s administrator password - corresponding to the bind <xref linkend="glo_DN"/> - <code>cn=admin,dc=betrayer,dc=com</code>. This grants full - access to the <xref linkend="glo_DIT"/> starting at node - <code>dc=betrayer,dc=com</code>.</para> - </callout> + <figure xml:id="fig_dbDevel_overview_openLdap_features_api_Implementations"> + <title>Implementations</title> - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-7-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-7"> - <para>The server configuration tree's administrator password - corresponding to the bind <xref linkend="glo_DN"/> - <code>cn=admin,cn=config</code> granting full access. This - grants full access to the server's configuration tree starting - at <code>cn=config</code>.</para> - </callout> + <itemizedlist> + <listitem> + <para><link + xlink:href="https://docs.oracle.com/javase/tutorial/jndi/ldap/jndi.html">JNDI</link></para> + </listitem> - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-8"> - <para>The docker host system's pre - existing directories - <filename>/var/lib/ldap/data</filename> and - <filename>/var/lib/ldap/config</filename> will be mounted to the - container's directories <filename>/var/lib/ldap</filename> and - <filename>/etc/ldap/slapd.d</filename> respectively. Thus the - OpenLdap server's backend databases will reside on the docker - host system's file system. This allows for <abbrev>e.g.</abbrev> - deleting the container before upgrading without loosing - data.</para> - </callout> + <listitem> + <para><link + xlink:href="https://www.ldaptive.org/">Ldaptive</link></para> + </listitem> + </itemizedlist> + </figure> + </section> + </section> - <callout arearefs="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-9-co" - xml:id="dbDevel_selectedDbOverview_ldap_fig_dockerinstall-9"> - <para>The docker image name and version as being published on - <uri - xlink:href="https://hub.docker.com/r/osixia/openldap/tags">https://hub.docker.com/r/osixia/openldap/tags</uri>.</para> - </callout> - </calloutlist> + <section xml:id="sect_dbDevel_selectedDbOverview_ldap_exercises"> + <title>Exercises</title> - <para>References:</para> + <figure xml:id="fig_dbDevel_selectedDbOverview_ldap_exercises"> + <title>Implementations</title> - <itemizedlist> + <orderedlist> <listitem> - <para><productname>osixia / docker-openldap</productname> <link - xlink:href="https://github.com/osixia/docker-openldap">documentation</link>.</para> + <para>Work through the exercises <xref + linkend="sdiBrowseExistingLdap"/> and <xref + linkend="ldapCompanyLdif"/> to <xref + linkend="ldapExtendPosixAccount"/>.</para> </listitem> <listitem> - <para>Docker <link - xlink:href="https://docs.docker.com/config/containers/container-networking/">container - networking</link>.</para> + <para>Find your lDAP servers database back end. Install the + <package>lmdb-utils</package> package and dump your back end's + data.</para> </listitem> <listitem> - <para>Docker <link - xlink:href="https://docs.docker.com/engine/reference/run">run - reference</link>.</para> - - <caution> - <para><option>--detach</option> is not documented in favour of - its short variant <option>-d</option>.</para> - </caution> + <para>Write an application reading ldap.hdm-stuttgart.de's data + and writing corresponding student entries to your local <xref + linkend="glo_LDAP"/> server.</para> </listitem> - </itemizedlist> + </orderedlist> </figure> </section> - - <section xml:id="sect_dbDevel_selectedDbOverview_ldap_exercises"> - <title>Exercises</title> - - <orderedlist> - <listitem> - <para>Work through the exercises <xref - linkend="sdiBrowseExistingLdap"/> and <xref - linkend="ldapCompanyLdif"/> to <xref - linkend="ldapExtendPosixAccount"/>.</para> - </listitem> - - <listitem> - <para/> - </listitem> - </orderedlist> - </section> - - <section xml:id="ditSearch"> - <title>Searching the <xref linkend="glo_DIT"/></title> - - <para>Like relational and other database types <xref - linkend="glo_LDAP"/> provides a <link - xlink:href="http://www.zytrax.com/books/ldap/apa/search.html">query - language</link> to filter result entries.</para> - </section> </section> </chapter> <chapter xml:id="ldap"> - <title><link linkend="glo_LDAP">Ldap</link> and <link - linkend="glo_JDBC">JDBC</link></title> + <title><link linkend="glo_JDBC">JDBC</link></title> <section xml:id="unix2sql2ldap"> <title><xref linkend="glo_UNIX"/> to <xref linkend="glo_SQL"/> to <xref diff --git a/Doc/Sdi/ldap.xml b/Doc/Sdi/ldap.xml index 7783b5a4c54f04941ddbd70b12f8b9b53c9ca3e7..d5d8b3bbf9df33c98a8b4e09485cb6dbb6d82b83 100644 --- a/Doc/Sdi/ldap.xml +++ b/Doc/Sdi/ldap.xml @@ -1364,7 +1364,7 @@ shadow: files ldap</programlisting> <dependency> <groupId>org.ldaptive</groupId> <artifactId>ldaptive</artifactId> - <version>1.1.0</version> + <version><emphasis role="red">find my current version on Maven central</emphasis></version> </dependency> <dependency>