Copyright (c) 2001-2002, Junzo SATO. All rights reserved.

Using OpenLDAP from Mathematica
[Linux, Windows, and MacOS X]

OpenLDAP for Linux, Windows, and MacOS X are accessible from Mathematica.

Junzo SATO

Jun 9th 2002
May 19th 2002
Aug 17th 2001

Installing J/Link

J/Link Mathmatica package is loaded.

[Graphics:Images/MathLDAP_OSX_gr_1.gif]
[Graphics:Images/MathLDAP_OSX_gr_2.gif]
[Graphics:Images/MathLDAP_OSX_gr_3.gif]
[Graphics:Images/MathLDAP_OSX_gr_4.gif]
[Graphics:Images/MathLDAP_OSX_gr_5.gif]

Initializing LDAP Connection

Java archives of Netscape LDAP SDK 4.1:

ldapfilt.jar
ldapjdk.jar
ldapsp.jar

are installed to the directory
    Macintosh\ HD/Library/Java/Extensions/ on MacOS X,
    [JDK]/jre/lib/ext/ on Linux or Windows

Tools

[Graphics:Images/MathLDAP_OSX_gr_6.gif]
[Graphics:Images/MathLDAP_OSX_gr_7.gif]
[Graphics:Images/MathLDAP_OSX_gr_8.gif]
[Graphics:Images/MathLDAP_OSX_gr_9.gif]

A connection to the LDAP server is established. By default, LDAP server uses port number 389.

Initializing LDAP Connection

Connection to the LDAP server is created. In this example, localhost is used for convenience.

[Graphics:Images/MathLDAP_OSX_gr_10.gif]
[Graphics:Images/MathLDAP_OSX_gr_11.gif]
[Graphics:Images/MathLDAP_OSX_gr_12.gif]
[Graphics:Images/MathLDAP_OSX_gr_13.gif]
[Graphics:Images/MathLDAP_OSX_gr_14.gif]
[Graphics:Images/MathLDAP_OSX_gr_15.gif]

Controlling Entry

Tool

Tools are loaded and defined.

[Graphics:Images/MathLDAP_OSX_gr_16.gif]
[Graphics:Images/MathLDAP_OSX_gr_17.gif]
[Graphics:Images/MathLDAP_OSX_gr_18.gif]
[Graphics:Images/MathLDAP_OSX_gr_19.gif]

Search by filter.

[Graphics:Images/MathLDAP_OSX_gr_20.gif]
[Graphics:Images/MathLDAP_OSX_gr_21.gif]
[Graphics:Images/MathLDAP_OSX_gr_22.gif]
[Graphics:Images/MathLDAP_OSX_gr_23.gif]
[Graphics:Images/MathLDAP_OSX_gr_24.gif]
[Graphics:Images/MathLDAP_OSX_gr_25.gif]
[Graphics:Images/MathLDAP_OSX_gr_26.gif]

The above result is the same as the one that LDAP Editor/Browser has retrieved.

[Graphics:Images/MathLDAP_OSX_gr_27.gif]

[Graphics:Images/MathLDAP_OSX_gr_28.gif]

[Graphics:Images/MathLDAP_OSX_gr_29.gif]

Read by DN.

Null password for authentication means anonymous connection.

[Graphics:Images/MathLDAP_OSX_gr_30.gif]
[Graphics:Images/MathLDAP_OSX_gr_31.gif]
[Graphics:Images/MathLDAP_OSX_gr_32.gif]
[Graphics:Images/MathLDAP_OSX_gr_33.gif]
[Graphics:Images/MathLDAP_OSX_gr_34.gif]
[Graphics:Images/MathLDAP_OSX_gr_35.gif]
[Graphics:Images/MathLDAP_OSX_gr_36.gif]
[Graphics:Images/MathLDAP_OSX_gr_37.gif]

Compare

[Graphics:Images/MathLDAP_OSX_gr_38.gif]
[Graphics:Images/MathLDAP_OSX_gr_39.gif]
[Graphics:Images/MathLDAP_OSX_gr_40.gif]
[Graphics:Images/MathLDAP_OSX_gr_41.gif]
[Graphics:Images/MathLDAP_OSX_gr_42.gif]
[Graphics:Images/MathLDAP_OSX_gr_43.gif]

Client-side Sort

[Graphics:Images/MathLDAP_OSX_gr_44.gif]
[Graphics:Images/MathLDAP_OSX_gr_45.gif]
[Graphics:Images/MathLDAP_OSX_gr_46.gif]
[Graphics:Images/MathLDAP_OSX_gr_47.gif]
[Graphics:Images/MathLDAP_OSX_gr_48.gif]
[Graphics:Images/MathLDAP_OSX_gr_49.gif]
[Graphics:Images/MathLDAP_OSX_gr_50.gif]
[Graphics:Images/MathLDAP_OSX_gr_51.gif]
[Graphics:Images/MathLDAP_OSX_gr_52.gif]
[Graphics:Images/MathLDAP_OSX_gr_53.gif]
[Graphics:Images/MathLDAP_OSX_gr_54.gif]
[Graphics:Images/MathLDAP_OSX_gr_55.gif]
[Graphics:Images/MathLDAP_OSX_gr_56.gif]
[Graphics:Images/MathLDAP_OSX_gr_57.gif]
[Graphics:Images/MathLDAP_OSX_gr_58.gif]
[Graphics:Images/MathLDAP_OSX_gr_59.gif]
[Graphics:Images/MathLDAP_OSX_gr_60.gif]
[Graphics:Images/MathLDAP_OSX_gr_61.gif]
[Graphics:Images/MathLDAP_OSX_gr_62.gif]
[Graphics:Images/MathLDAP_OSX_gr_63.gif]
[Graphics:Images/MathLDAP_OSX_gr_64.gif]
[Graphics:Images/MathLDAP_OSX_gr_65.gif]
[Graphics:Images/MathLDAP_OSX_gr_66.gif]
[Graphics:Images/MathLDAP_OSX_gr_67.gif]
[Graphics:Images/MathLDAP_OSX_gr_68.gif]
[Graphics:Images/MathLDAP_OSX_gr_69.gif]
[Graphics:Images/MathLDAP_OSX_gr_70.gif]
[Graphics:Images/MathLDAP_OSX_gr_71.gif]
[Graphics:Images/MathLDAP_OSX_gr_72.gif]
[Graphics:Images/MathLDAP_OSX_gr_73.gif]
[Graphics:Images/MathLDAP_OSX_gr_74.gif]
[Graphics:Images/MathLDAP_OSX_gr_75.gif]
[Graphics:Images/MathLDAP_OSX_gr_76.gif]
[Graphics:Images/MathLDAP_OSX_gr_77.gif]
[Graphics:Images/MathLDAP_OSX_gr_78.gif]
[Graphics:Images/MathLDAP_OSX_gr_79.gif]
[Graphics:Images/MathLDAP_OSX_gr_80.gif]
[Graphics:Images/MathLDAP_OSX_gr_81.gif]
[Graphics:Images/MathLDAP_OSX_gr_82.gif]
[Graphics:Images/MathLDAP_OSX_gr_83.gif]
[Graphics:Images/MathLDAP_OSX_gr_84.gif]
[Graphics:Images/MathLDAP_OSX_gr_85.gif]
[Graphics:Images/MathLDAP_OSX_gr_86.gif]
[Graphics:Images/MathLDAP_OSX_gr_87.gif]
[Graphics:Images/MathLDAP_OSX_gr_88.gif]
[Graphics:Images/MathLDAP_OSX_gr_89.gif]
[Graphics:Images/MathLDAP_OSX_gr_90.gif]
[Graphics:Images/MathLDAP_OSX_gr_91.gif]
[Graphics:Images/MathLDAP_OSX_gr_92.gif]
[Graphics:Images/MathLDAP_OSX_gr_93.gif]
[Graphics:Images/MathLDAP_OSX_gr_94.gif]
[Graphics:Images/MathLDAP_OSX_gr_95.gif]
[Graphics:Images/MathLDAP_OSX_gr_96.gif]
[Graphics:Images/MathLDAP_OSX_gr_97.gif]
[Graphics:Images/MathLDAP_OSX_gr_98.gif]
[Graphics:Images/MathLDAP_OSX_gr_99.gif]
[Graphics:Images/MathLDAP_OSX_gr_100.gif]
[Graphics:Images/MathLDAP_OSX_gr_101.gif]
[Graphics:Images/MathLDAP_OSX_gr_102.gif]
[Graphics:Images/MathLDAP_OSX_gr_103.gif]
[Graphics:Images/MathLDAP_OSX_gr_104.gif]
[Graphics:Images/MathLDAP_OSX_gr_105.gif]
[Graphics:Images/MathLDAP_OSX_gr_106.gif]
[Graphics:Images/MathLDAP_OSX_gr_107.gif]
[Graphics:Images/MathLDAP_OSX_gr_108.gif]
[Graphics:Images/MathLDAP_OSX_gr_109.gif]
[Graphics:Images/MathLDAP_OSX_gr_110.gif]
[Graphics:Images/MathLDAP_OSX_gr_111.gif]
[Graphics:Images/MathLDAP_OSX_gr_112.gif]
[Graphics:Images/MathLDAP_OSX_gr_113.gif]
[Graphics:Images/MathLDAP_OSX_gr_114.gif]
[Graphics:Images/MathLDAP_OSX_gr_115.gif]
[Graphics:Images/MathLDAP_OSX_gr_116.gif]
[Graphics:Images/MathLDAP_OSX_gr_117.gif]
[Graphics:Images/MathLDAP_OSX_gr_118.gif]
[Graphics:Images/MathLDAP_OSX_gr_119.gif]
[Graphics:Images/MathLDAP_OSX_gr_120.gif]
[Graphics:Images/MathLDAP_OSX_gr_121.gif]
[Graphics:Images/MathLDAP_OSX_gr_122.gif]
[Graphics:Images/MathLDAP_OSX_gr_123.gif]
[Graphics:Images/MathLDAP_OSX_gr_124.gif]
[Graphics:Images/MathLDAP_OSX_gr_125.gif]
[Graphics:Images/MathLDAP_OSX_gr_126.gif]
[Graphics:Images/MathLDAP_OSX_gr_127.gif]
[Graphics:Images/MathLDAP_OSX_gr_128.gif]
[Graphics:Images/MathLDAP_OSX_gr_129.gif]
[Graphics:Images/MathLDAP_OSX_gr_130.gif]
[Graphics:Images/MathLDAP_OSX_gr_131.gif]
[Graphics:Images/MathLDAP_OSX_gr_132.gif]
[Graphics:Images/MathLDAP_OSX_gr_133.gif]
[Graphics:Images/MathLDAP_OSX_gr_134.gif]
[Graphics:Images/MathLDAP_OSX_gr_135.gif]
[Graphics:Images/MathLDAP_OSX_gr_136.gif]
[Graphics:Images/MathLDAP_OSX_gr_137.gif]

Add NEW Entry

[Graphics:Images/MathLDAP_OSX_gr_138.gif]
[Graphics:Images/MathLDAP_OSX_gr_139.gif]

The NEW entry is added successfully. For simplicity, new entry is added under the ou=Special Users directory.

[Graphics:Images/MathLDAP_OSX_gr_140.gif]

[Graphics:Images/MathLDAP_OSX_gr_141.gif]

Add Attribute

AddAttribute[conn,dn,attrname,data] adds an attribute to the existing entry. If the data is exactly same value as the existing attribute, it fails.

[Graphics:Images/MathLDAP_OSX_gr_142.gif]
[Graphics:Images/MathLDAP_OSX_gr_143.gif]

New attribute (multivalued attribute) is added successfully.

[Graphics:Images/MathLDAP_OSX_gr_144.gif]

[Graphics:Images/MathLDAP_OSX_gr_145.gif]

Replace Attribute

[Graphics:Images/MathLDAP_OSX_gr_146.gif]
[Graphics:Images/MathLDAP_OSX_gr_147.gif]

Attribute(s) named "mail" is replaced with new data.

[Graphics:Images/MathLDAP_OSX_gr_148.gif]

[Graphics:Images/MathLDAP_OSX_gr_149.gif]

It's possible to replace attribute(s) with multivalues.

[Graphics:Images/MathLDAP_OSX_gr_150.gif]

The following figure shows the entry after replacement.

[Graphics:Images/MathLDAP_OSX_gr_151.gif]

[Graphics:Images/MathLDAP_OSX_gr_152.gif]

Delete Attribute

[Graphics:Images/MathLDAP_OSX_gr_153.gif]
[Graphics:Images/MathLDAP_OSX_gr_154.gif]

Surely removed :-)

[Graphics:Images/MathLDAP_OSX_gr_155.gif]

[Graphics:Images/MathLDAP_OSX_gr_156.gif]

ModificationSet

[Graphics:Images/MathLDAP_OSX_gr_157.gif]
[Graphics:Images/MathLDAP_OSX_gr_158.gif]

Two mails are listed as the result of first modification. The telephoneNumber is removed by replacing old attribute with null. One more mail is added by the final modification.

[Graphics:Images/MathLDAP_OSX_gr_159.gif]

[Graphics:Images/MathLDAP_OSX_gr_160.gif]

Binary Record

Storing binary data

The attribute of the entry can maintain binary record directly.

[Graphics:Images/MathLDAP_OSX_gr_161.gif]
Reading binary data

[Graphics:Images/MathLDAP_OSX_gr_162.gif]

[Graphics:Images/MathLDAP_OSX_gr_163.gif]
[Graphics:Images/MathLDAP_OSX_gr_164.gif]
[Graphics:Images/MathLDAP_OSX_gr_165.gif]
[Graphics:Images/MathLDAP_OSX_gr_166.gif]
[Graphics:Images/MathLDAP_OSX_gr_167.gif]
[Graphics:Images/MathLDAP_OSX_gr_168.gif]
Data File

Windows

[Graphics:Images/MathLDAP_OSX_gr_169.gif]

MacOS X

[Graphics:Images/MathLDAP_OSX_gr_170.gif]
[Graphics:Images/MathLDAP_OSX_gr_171.gif]
[Graphics:Images/MathLDAP_OSX_gr_172.gif]
[Graphics:Images/MathLDAP_OSX_gr_173.gif]
[Graphics:Images/MathLDAP_OSX_gr_174.gif]
[Graphics:Images/MathLDAP_OSX_gr_175.gif]

The data is stored to the entry.

[Graphics:Images/MathLDAP_OSX_gr_176.gif]

Now we can see the replaced data. Look at the size of the binary data.

[Graphics:Images/MathLDAP_OSX_gr_177.gif]

[Graphics:Images/MathLDAP_OSX_gr_178.gif]

[Graphics:Images/MathLDAP_OSX_gr_179.gif]
[Graphics:Images/MathLDAP_OSX_gr_180.gif]

The contents of the data is exactly same before and after the operation.

[Graphics:Images/MathLDAP_OSX_gr_181.gif]
[Graphics:Images/MathLDAP_OSX_gr_182.gif]

NOTE:
The jpegPhoto can store binary data whose size is less than 128KB.

Finalizing LDAP Connection

Connection to the LDAP server is closed.This is essentially the same as ldapconn@finalize[].

[Graphics:Images/MathLDAP_OSX_gr_183.gif]

Removing J/Link

[Graphics:Images/MathLDAP_OSX_gr_184.gif]
[Graphics:Images/MathLDAP_OSX_gr_185.gif]
[Graphics:Images/MathLDAP_OSX_gr_186.gif]

Reference

[1] Rob Weltman and Tony Dahbura, "LDAP Programming with Java", Addison-Wesley, 2000


Converted by Mathematica      June 10, 2002