annotate mod_lib_ldap/README.md @ 1268:854a3933cfcd

mod_muc_log_http: URL-encode room names. This allows special characters in room names to work. Ideally this escaping shouldn’t be done in the user visible content, but the module’s template system doesn’t currently allow that.
author Waqas Hussain <waqas20@gmail.com>
date Sat, 04 Jan 2014 16:50:57 -0500
parents 0b72b8fe4591
children 9da03e45c6be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
809
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
1 # LDAP plugin suite for Prosody
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
2
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
3 The LDAP plugin suite includes an authentication plugin (mod\_auth\_ldap2) and storage plugin
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
4 (mod\_storage\_ldap) to query against an LDAP server. It also provides a plugin library (mod\_lib\_ldap)
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
5 for accessing an LDAP server to make writing other LDAP-based plugins easier in the future.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
6
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
7 # LDAP Authentication
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
8
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
9 **NOTE**: LDAP authentication currently only works with plaintext auth! If this isn't ok
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
10 with you, don't use it! (Or better yet, fix it =) )
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
11
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
12 With that note in mind, you need to set 'allow\_unencrypted\_plain\_auth' to true in your configuration if
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
13 you want to use LDAP authentication.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
14
862
675945ea2ed6 Change hoelzro's mod_auth_ldap to mod_auth_ldap2
Rob Hoelz <rob@hoelz.ro>
parents: 809
diff changeset
15 To enable LDAP authentication, set 'authentication' to 'ldap2' in your configuration file.
809
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
16 See also http://prosody.im/doc/authentication.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
17
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
18 # LDAP Storage
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
19
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
20 LDAP storage is currently read-only, and it only supports rosters and vCards.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
21
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
22 To enable LDAP storage, set 'storage' to 'ldap' in your configuration file.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
23 See also http://prosody.im/doc/storage.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
24
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
25 # LDAP Configuration
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
26
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
27 All of the LDAP-specific configuration for the plugin set goes into an 'ldap' section
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
28 in the configuration. You must set the 'hostname' field in the 'ldap' section to
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
29 your LDAP server's location (a custom port is also accepted, so I guess it's not strictly
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
30 a hostname). The 'bind\_dn' and 'bind\_password' are optional if you want to bind as
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
31 a specific DN. There should be an example configuration included with this README, so
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
32 feel free to consult that.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
33
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
34 ## The user section
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
35
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
36 The user section must contain the following keys:
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
37
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
38 * basedn - The base DN against which to base your LDAP queries for users.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
39 * filter - An LDAP filter expression that matches users.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
40 * usernamefield - The name of the attribute in an LDAP entry that contains the username.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
41 * namefield - The name of the attribute in an LDAP entry that contains the user's real name.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
42
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
43 ## The groups section
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
44
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
45 The LDAP plugin suite has support for grouping (ala mod\_groups), which can be enabled via the groups
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
46 section in the ldap section of the configuration file. Currently, you must have at least one group.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
47 The groups section must contain the following keys:
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
48
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
49 * basedn - The base DN against which to base your LDAP queries for groups.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
50 * memberfield - The name of the attribute in an LDAP entry that contains a list of a group's members. The contents of this field
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
51 must match usernamefield in the user section.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
52 * namefield - The name of the attribute in an LDAP entry that contains the group's name.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
53
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
54 The groups section must contain at least one entry in its array section. Each entry must be a table, with the following keys:
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
55
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
56 * name - The name of the group that will be presented in the roster.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
57 * $namefield (whatever namefield is set to is the name) - An attribute pair to match this group against.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
58 * admin (optional) - whether or not this group's members are admins.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
59
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
60 ## The vcard\_format section
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
61
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
62 The vcard\_format section is used to generate a vCard given an LDAP entry. See http://xmpp.org/extensions/xep-0054.html for
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
63 more information. The JABBERID field is automatically populated.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
64
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
65 The key/value pairs in this table fall into three categories:
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
66
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
67 ### Simple pairs
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
68
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
69 Some values in the vcard\_format table are simple key-value pairs, where the key corresponds to a vCard
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
70 entry, and the value corresponds to the attribute name in the LDAP entry for the user. The fields that
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
71 be configured this way are:
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
72
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
73 * displayname - corresponds to FN
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
74 * nickname - corresponds to NICKNAME
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
75 * birthday - corresponds to BDAY
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
76 * mailer - corresponds to MAILER
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
77 * timezone - corresponds to TZ
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
78 * title - corresponds to TITLE
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
79 * role - corresponds to ROLE
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
80 * note - corresponds to NOTE
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
81 * rev - corresponds to REV
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
82 * sortstring - corresponds to SORT-STRING
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
83 * uid - corresponds to UID
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
84 * url - corresponds to URL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
85 * description - corresponds to DESC
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
86
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
87 ### Single-level fields
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
88
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
89 These pairs have a table as their values, and the table itself has a series of key value pairs that are translated
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
90 similarly to simple pairs. The fields that are configured this way are:
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
91
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
92 * name - corresponds to N
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
93 * family - corresponds to FAMILY
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
94 * given - corresponds toGIVEN
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
95 * middle - corresponds toMIDDLE
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
96 * prefix - corresponds toPREFIX
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
97 * suffix - corresponds toSUFFIX
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
98 * photo - corresponds to PHOTO
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
99 * type - corresponds to TYPE
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
100 * binval - corresponds to BINVAL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
101 * extval - corresponds to EXTVAL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
102 * geo - corresponds to GEO
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
103 * lat - corresponds to LAT
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
104 * lon - corresponds to LON
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
105 * logo - corresponds to LOGO
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
106 * type - corresponds to TYPE
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
107 * binval - corresponds to BINVAL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
108 * extval - corresponds to EXTVAL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
109 * org - corresponds to ORG
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
110 * orgname - corresponds to ORGNAME
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
111 * orgunit - corresponds to ORGUNIT
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
112 * sound - corresponds to SOUND
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
113 * phonetic - corresponds to PHONETIC
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
114 * binval - corresponds to BINVAL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
115 * extval - corresponds to EXTVAL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
116 * key - corresponds to KEY
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
117 * type - corresponds to TYPE
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
118 * cred - corresponds to CRED
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
119
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
120 ### Multi-level fields
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
121
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
122 These pairs have a table as their values, and each table itself has tables as its values. The nested tables have
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
123 the same key-value pairs you're used to, the only difference being that values may have a boolean as their type, which
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
124 converts them into an empty XML tag. I recommend looking at the example configuration for clarification.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
125
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
126 * address - ADR
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
127 * telephone - TEL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
128 * email - EMAIL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
129
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
130 ### Unsupported vCard fields
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
131
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
132 * LABEL
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
133 * AGENT
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
134 * CATEGORIES
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
135 * PRODID
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
136 * CLASS
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
137
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
138 ### Example Configuration
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
139
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
140 You can find an example configuration in the dev directory underneath the
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
141 directory that this file is located in.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
142
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
143 # Missing Features
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
144
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
145 This set of plugins is missing a few features, some of which are really just ideas:
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
146
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
147 * Implement non-plaintext authentication.
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
148 * Use proper LDAP binding (LuaLDAP must be patched with http://prosody.im/patches/lualdap.patch, though)
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
149 * Non-hardcoded LDAP groups (derive groups from LDAP queries)
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
150 * LDAP-based MUCs (like a private MUC per group, or something)
1d51c5e38faa Add LDAP plugin suite
rob@hoelz.ro
parents:
diff changeset
151 * This suite of plugins was developed with a POSIX-style setup in mind; YMMV. Patches to work with other setups are welcome!
1224
0b72b8fe4591 Add another TODO for mod_*_ldap
Rob Hoelz <rob@hoelz.ro>
parents: 862
diff changeset
152 * Add ability for users to change their vCard/passwords/etc from within Prosody