{"id":108,"date":"2008-11-13T23:15:41","date_gmt":"2008-11-13T13:45:41","guid":{"rendered":"http:\/\/www.clearchain.com\/blog\/?p=108"},"modified":"2010-06-23T15:19:19","modified_gmt":"2010-06-23T05:49:19","slug":"ldapaddressbook","status":"publish","type":"post","link":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook","title":{"rendered":"LDAPAddressBook"},"content":{"rendered":"<p>LDAP is a great protocol. It allows multiple clients to obtain data about virtually anything that you can think of. The LDAPAddressBook project is a project to determine a LDAP Schema that works in the following clients:<\/p>\n<ul>\n<li> Mozilla Thunderbird<\/li>\n<li> Windows Address Book<\/li>\n<li> OS X Address Book<\/li>\n<li> Squirrel Mail<\/li>\n<\/ul>\n<p>In fact any client that supports LDAP.<\/p>\n<p><!--more--><\/p>\n<p>By determining this schema, ClearChain can finally have a &#8216;go anywhere&#8217; addressbook.<\/p>\n<p><script type=\"text\/javascript\">\/\/ <![CDATA[\n  if (window.showTocToggle) { var tocShowText = \"show\"; var tocHideText = \"hide\"; showTocToggle(); }\n\/\/ ]]><\/script><\/p>\n<h2><span class=\"editsection\"> <\/span> <span class=\"mw-headline\">Conceptual Layout <\/span><\/h2>\n<h3><span class=\"editsection\"> <\/span><span class=\"mw-headline\">Stage 1<\/span><\/h3>\n<p><a href=\"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-thumbnail wp-image-628\" title=\"LDAPAB_stage_1\" src=\"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png\" alt=\"LDAPAB_stage_1\" width=\"150\" height=\"150\" \/><\/a><\/p>\n<p>The idea is that everything is stored in a database. Databases are great for storing and manipulating information. Currently we use a MySQL database. Data is extracted from the database in xml format. This is actually ridiculously easy. MySQL (on the command line at least) supports output formats of xml. On the command line when connecting to the database you just throw in a &#8211;xml flag, for example:<\/p>\n<pre>mysql --xml -u frank -p<\/pre>\n<p>Then when you get any text back from any queries you run the results will be wrapped in xml. Even commands such as:<\/p>\n<pre>mysql&gt; show databases;<\/pre>\n<p>will return results marked up with xml, for example:<\/p>\n<pre>&lt;?xml version=\"1.0\"?&gt;\r\n\r\n&lt;resultset statement=\"show databases;\"&gt;\r\n  &lt;row&gt;\r\n        &lt;field name=\"Database\"&gt;information_schema&lt;\/field&gt;\r\n  &lt;\/row&gt;\r\n\r\n  &lt;row&gt;\r\n        &lt;field name=\"Database\"&gt;addressbook&lt;\/field&gt;\r\n  &lt;\/row&gt;\r\n\r\n  &lt;row&gt;\r\n        &lt;field name=\"Database\"&gt;budget&lt;\/field&gt;\r\n  &lt;\/row&gt;\r\n\r\n  &lt;row&gt;\r\n        &lt;field name=\"Database\"&gt;dinner&lt;\/field&gt;\r\n  &lt;\/row&gt;\r\n\r\n  &lt;row&gt;\r\n        &lt;field name=\"Database\"&gt;mysql&lt;\/field&gt;\r\n  &lt;\/row&gt;\r\n\r\n  &lt;row&gt;\r\n        &lt;field name=\"Database\"&gt;wiki_thesis&lt;\/field&gt;\r\n  &lt;\/row&gt;\r\n&lt;\/resultset&gt;<\/pre>\n<p>This is awesome because it means that we can easily convert the xml into any format that we want in particular an LDAP schema that Thunderbird understands, an LDAP schema that Outlook understands, but also just as easily HTML, XHTML, plain text&#8230; you name it the xml can be converted to it simply with an xml transformation.<\/p>\n<p>In the case of an LDAP server once the XML has been converted to the appropriate format existing LDAP data is blown away and then replaced by the new schema.<\/p>\n<p><strong>NOTE:<\/strong> Through php the mysql calls do not support fetch results in xml format, except via an extension. For this reason I wrote a simple method that wraps the mysql like xml around the data set returned via the usual query call.<\/p>\n<h3><span class=\"editsection\"> <\/span><span class=\"mw-headline\">Stage 2<\/span><\/h3>\n<p><a href=\"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-thumbnail wp-image-629\" title=\"LDAPAB_stage_2\" src=\"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_2-150x150.png\" alt=\"LDAPAB_stage_2\" width=\"150\" height=\"150\" \/><\/a><\/p>\n<p>The second stage of this project is to provide the various email clients and addressbooks with the ability to add and modify contacts in the database. This is more of a pipe dream at the moment, but should be relatively straight forward with an email client such as Thunderbird.<\/p>\n<h2><span class=\"editsection\"> <\/span><span class=\"mw-headline\"> LDAP Schema <\/span><\/h2>\n<p>This section details the various fields used by different applications for the address book. I&#8217;ve tried to map the fields to the official ldap schemas that exist. A full list that are supported by thunderbird is available at:  <a class=\"external free\" title=\"http:\/\/www.mozilla.org\/projects\/thunderbird\/specs\/ldap.html\" rel=\"nofollow\" href=\"http:\/\/www.mozilla.org\/projects\/thunderbird\/specs\/ldap.html\">http:\/\/www.mozilla.org\/projects\/thunderbird\/specs\/ldap.html<\/a><\/p>\n<p>There is however a lot of undocumented mozilla\/thunderbird specific attributes. <a href=\"http:\/\/www.pro-linux.de\/t_office\/mozilla_op20.schema\">http:\/\/www.pro-linux.de\/t_office\/mozilla_op20.schema<\/a><\/p>\n<p>Documents a complete mozilla schema but is yet to be tested<\/p>\n<table style=\"border: 1px solid #aaaaaa; margin: 1em 1em 1em 0pt; background: #f9f9f9 none repeat scroll 0% 0%; border-collapse: collapse;\" border=\"2\" cellspacing=\"0\" cellpadding=\"4\">\n<tbody>\n<tr>\n<th> LDAP Schema<\/th>\n<th> Field<\/th>\n<th> Thunderbird<\/th>\n<th> Outlook Express<\/th>\n<\/tr>\n<tr>\n<td>inetOrgPerson<\/td>\n<td>givenName<\/td>\n<td>Firstname<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>person<\/td>\n<td>sn<\/td>\n<td>Lastname<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>inetOrgPerson<\/td>\n<td>displayName<\/td>\n<td>Display<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaNickname<\/td>\n<td>Nickname<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>inetOrgPerson<\/td>\n<td>mail<\/td>\n<td>Email<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaSecondEmail<\/td>\n<td>Additional Email<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaUseHtmlMail<\/td>\n<td>Prefers to receive message formated as<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>&#8211;<\/td>\n<td>Screen Name<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2.5.4.20(M)<\/td>\n<td>telephoneNumber<\/td>\n<td>Work (Phone)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>inetOrgPerson<\/td>\n<td>homePhone<\/td>\n<td>Home (Phone)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2.5.4.23<\/td>\n<td>faximileTelephoneNumber<\/td>\n<td>Fax<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>inetOrgPerson<\/td>\n<td>pager<\/td>\n<td>Pager<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>inetOrgPerson<\/td>\n<td>mobile<\/td>\n<td>Mobile<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>&#8211;<\/td>\n<td>Address (Ln1 HM)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaHomePostalAddress2<\/td>\n<td>Address (Ln2 HM)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaHomeLocalityName<\/td>\n<td>City (HM)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaHomeState<\/td>\n<td>State\/Provice(HM)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaHomePostalCode<\/td>\n<td>Zip\/Postal Code(HM)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaHomeCountryName<\/td>\n<td>Country(HM)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaHomeUrl<\/td>\n<td>Web Page(HM)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>organizationPerson<\/td>\n<td>title<\/td>\n<td>Title (Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>inetOrgPerson<\/td>\n<td>departmentNumber<\/td>\n<td>Department (WK)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2.5.4.10<\/td>\n<td>o<\/td>\n<td>Organization(Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2.5.4.18<\/td>\n<td>postOfficeBox<\/td>\n<td>Address (Ln1 Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaPostalAddress2<\/td>\n<td>Address (Ln2 Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2.5.4.7<\/td>\n<td>l<\/td>\n<td>City (Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2.5.4.8<\/td>\n<td>st<\/td>\n<td>State\/Provice(Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2.5.4.17<\/td>\n<td>postalCode<\/td>\n<td>Zip\/Postal Code(Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>&#8211;<\/td>\n<td>Country (Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaWorkUrl<\/td>\n<td>Web Page (Wk)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaCustom1<\/td>\n<td>Custom 1<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaCustom2<\/td>\n<td>Custom 2<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaCustom3<\/td>\n<td>Custom 3<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>mozillaAbPersonObsolete<\/td>\n<td>mozillaCustom4<\/td>\n<td>Custom 4<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>&#8211;<\/td>\n<td>Custom 5<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>2.5.4.13<\/td>\n<td>description<\/td>\n<td>Notes<\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"editsection\"> <\/span><span class=\"mw-headline\"> OpenLdap <\/span><\/h2>\n<p>In order to use create a schema for openldap that works for at least Thunderbird, download the schema linked above then make sure you have the following lines in your slapd.conf<\/p>\n<pre>include         \/usr\/local\/etc\/openldap\/schema\/core.schema\r\n\r\n# Add additional schema\r\ninclude                 \/usr\/local\/etc\/openldap\/schema\/cosine.schema\r\ninclude                 \/usr\/local\/etc\/openldap\/schema\/inetorgperson.schema\r\ninclude                 \/usr\/local\/etc\/openldap\/schema\/mozilla_op20.schema<\/pre>\n<h1><span class=\"editsection\"> <\/span><span class=\"mw-headline\">Contributors<\/span><\/h1>\n<p><a class=\"external text\" title=\"http:\/\/wcl.ml.unisa.edu.au\/~staffora\/index.php\/Aaron_Stafford\" rel=\"nofollow\" href=\"http:\/\/www.hog3d.net\/aaron.html\">Aaron Stafford<\/a> has written a substantial amount of code for this project, including:<\/p>\n<ul>\n<li>HTML front end which communicates with the the database over PHP<\/li>\n<li>XSL transformation that converts XML extracted from the database into the openldap ready text<\/li>\n<\/ul>\n<h2><span class=\"editsection\"> <\/span><span class=\"mw-headline\">Code Access<\/span><\/h2>\n<p>Access to the code is currently restricted, but hopefully this will become a public upon request. If you are interested in seeing this project become public please drop us a line.<\/p>\n<pre>git clone username@git.clearchain.com:\/export\/git\/projects\/ldapab<\/pre>\n<p>On the mac you have to specify where you want it checked out to so use:<\/p>\n<pre>git clone username@git.clearchain.com:\/export\/git\/projects\/ldapab ldapab<\/pre>\n<p>If you are on a mac. It might be the case that you need to do this on any platform. I haven&#8217;t tested it anywhere else though.<\/p>\n<h1><span class=\"editsection\"> <\/span><span class=\"mw-headline\">External Links<\/span><\/h1>\n<p><a class=\"external free\" title=\"http:\/\/www.plaxo.com\/\" rel=\"nofollow\" href=\"http:\/\/www.plaxo.com\/\">http:\/\/www.plaxo.com\/<\/a> &#8211; Plaxo is an interesting application. It lets you sync a whole bunch of different address books and calendar information from different application and online accounts. I have not used this but it appears to be a near perfect solution if you are prepared to hand over your usernames and passwords to another company. ldapab is designed to be managed by the person looking after their own contacts, not having someone else manage it for you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>LDAP is a great protocol. It allows multiple clients to obtain data about virtually anything that you can think of. The LDAPAddressBook project is a project to determine a LDAP Schema that works in the following clients: Mozilla Thunderbird Windows Address Book OS X Address Book Squirrel Mail In fact any client that supports LDAP.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21,78],"tags":[],"class_list":["post-108","post","type-post","status-publish","format-standard","hentry","category-opensource","category-projects"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>LDAPAddressBook - ClearChain<\/title>\n<meta name=\"description\" content=\"LDAP is a great protocol. It allows multiple clients to obtain data about virtually anything that you can think of. The LDAPAddressBook project is a\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin Close\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook\"},\"author\":{\"name\":\"Benjamin Close\",\"@id\":\"https:\/\/www.clearchain.com\/blog\/#\/schema\/person\/aef6faa2c32188398139db9270ca1c98\"},\"headline\":\"LDAPAddressBook\",\"datePublished\":\"2008-11-13T13:45:41+00:00\",\"dateModified\":\"2010-06-23T05:49:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook\"},\"wordCount\":803,\"commentCount\":1,\"image\":{\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png\",\"articleSection\":[\"OpenSource\",\"Projects\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook\",\"url\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook\",\"name\":\"LDAPAddressBook - ClearChain\",\"isPartOf\":{\"@id\":\"https:\/\/www.clearchain.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png\",\"datePublished\":\"2008-11-13T13:45:41+00:00\",\"dateModified\":\"2010-06-23T05:49:19+00:00\",\"author\":{\"@id\":\"https:\/\/www.clearchain.com\/blog\/#\/schema\/person\/aef6faa2c32188398139db9270ca1c98\"},\"description\":\"LDAP is a great protocol. It allows multiple clients to obtain data about virtually anything that you can think of. The LDAPAddressBook project is a\",\"breadcrumb\":{\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#primaryimage\",\"url\":\"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png\",\"contentUrl\":\"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.clearchain.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LDAPAddressBook\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.clearchain.com\/blog\/#website\",\"url\":\"https:\/\/www.clearchain.com\/blog\/\",\"name\":\"ClearChain\",\"description\":\"-= Daily Happenings =-\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.clearchain.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.clearchain.com\/blog\/#\/schema\/person\/aef6faa2c32188398139db9270ca1c98\",\"name\":\"Benjamin Close\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.clearchain.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/19dca0aa372edfa901b93c556dfda2e78ad4434558fe4d139598e086315d714a?s=96&d=mm&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/19dca0aa372edfa901b93c556dfda2e78ad4434558fe4d139598e086315d714a?s=96&d=mm&r=pg\",\"caption\":\"Benjamin Close\"},\"sameAs\":[\"http:\/\/www.clearchain.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"LDAPAddressBook - ClearChain","description":"LDAP is a great protocol. It allows multiple clients to obtain data about virtually anything that you can think of. The LDAPAddressBook project is a","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook","twitter_misc":{"Written by":"Benjamin Close","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#article","isPartOf":{"@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook"},"author":{"name":"Benjamin Close","@id":"https:\/\/www.clearchain.com\/blog\/#\/schema\/person\/aef6faa2c32188398139db9270ca1c98"},"headline":"LDAPAddressBook","datePublished":"2008-11-13T13:45:41+00:00","dateModified":"2010-06-23T05:49:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook"},"wordCount":803,"commentCount":1,"image":{"@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#primaryimage"},"thumbnailUrl":"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png","articleSection":["OpenSource","Projects"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook","url":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook","name":"LDAPAddressBook - ClearChain","isPartOf":{"@id":"https:\/\/www.clearchain.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#primaryimage"},"image":{"@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#primaryimage"},"thumbnailUrl":"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png","datePublished":"2008-11-13T13:45:41+00:00","dateModified":"2010-06-23T05:49:19+00:00","author":{"@id":"https:\/\/www.clearchain.com\/blog\/#\/schema\/person\/aef6faa2c32188398139db9270ca1c98"},"description":"LDAP is a great protocol. It allows multiple clients to obtain data about virtually anything that you can think of. The LDAPAddressBook project is a","breadcrumb":{"@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#primaryimage","url":"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png","contentUrl":"http:\/\/www.clearchain.com\/blog\/images\/\/2008\/11\/LDAPAB_stage_1-150x150.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.clearchain.com\/blog\/posts\/ldapaddressbook#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.clearchain.com\/blog"},{"@type":"ListItem","position":2,"name":"LDAPAddressBook"}]},{"@type":"WebSite","@id":"https:\/\/www.clearchain.com\/blog\/#website","url":"https:\/\/www.clearchain.com\/blog\/","name":"ClearChain","description":"-= Daily Happenings =-","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.clearchain.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.clearchain.com\/blog\/#\/schema\/person\/aef6faa2c32188398139db9270ca1c98","name":"Benjamin Close","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.clearchain.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/19dca0aa372edfa901b93c556dfda2e78ad4434558fe4d139598e086315d714a?s=96&d=mm&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/19dca0aa372edfa901b93c556dfda2e78ad4434558fe4d139598e086315d714a?s=96&d=mm&r=pg","caption":"Benjamin Close"},"sameAs":["http:\/\/www.clearchain.com"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/posts\/108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/comments?post=108"}],"version-history":[{"count":8,"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/posts\/108\/revisions"}],"predecessor-version":[{"id":695,"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/posts\/108\/revisions\/695"}],"wp:attachment":[{"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/media?parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/categories?post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.clearchain.com\/blog\/wp-json\/wp\/v2\/tags?post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}