]> git.sur5r.net Git - openldap/blob - doc/man/man5/slapo-unique.5
Enhanced unique configuration
[openldap] / doc / man / man5 / slapo-unique.5
1 .TH SLAPO-UNIQUE 5 "RELEASEDATE" "OpenLDAP LDVERSION"
2 .\" Copyright 2004-2007 The OpenLDAP Foundation All Rights Reserved.
3 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
4 .\" $OpenLDAP$
5 .SH NAME
6 slapo-unique \- Attribute Uniqueness overlay
7 .SH SYNOPSIS
8 ETCDIR/slapd.conf
9 .SH DESCRIPTION
10 The Attribute Uniqueness overlay can be used with a backend database such as
11 .BR slapd-bdb (5)
12 to enforce the uniqueness of some or all attributes within a
13 scope. This subtree defaults to all objects within the subtree of the
14 database for which the Uniqueness overlay is configured.
15 .LP
16 Uniqueness is enforced by searching the subtree to ensure that the values of
17 all attributes presented with an
18 .BR add ,
19 .B modify
20 or
21 .B modrdn
22 operation are unique within the scope.
23 For example, if uniqueness were enforced for the
24 .B uid
25 attribute, the subtree would be searched for any other records which also
26 have a
27 .B uid
28 attribute containing the same value. If any are found, the request is
29 rejected.
30 .SH CONFIGURATION
31 These
32 .B slapd.conf
33 options apply to the Attribute Uniqueness overlay.
34 They should appear after the
35 .B overlay
36 directive.
37 .TP
38 .B unique_uri <[strict ][ignore ]URI[URI...]...>
39 Configure the base, attributes, scope, and filter for uniqueness
40 checking.  Multiple URIs may be specified within a domain, allowing complex selections of objects.  Multiple
41 .B unique_uri
42 statements or
43 .B olcUniqueURI
44 attributes will create independent domains, each with their own independent lists of URIs and ignore/strict settings.
45
46 The LDAP URI syntax is a subset of
47 .B RFC-4516,
48 and takes the form:
49
50 ldap:///[base dn]?[attributes...]?scope[?filter]
51
52 The
53 .B base dn
54 defaults to that of the back-end database.  Specified base dns must be within the subtree of the back-end database.
55
56 If no
57 .B attributes
58 are specified, the URI applies to all non-operational attributes.
59
60 The
61 .B scope
62 component is effectively mandatory, because LDAP URIs default to
63 .B base
64 scope, which is not valid for uniqueness, because groups of one object
65 are always unique.  Scopes of
66 .B sub
67 (for subtree) and
68 .B one
69 for one-level are valid.
70
71 The
72 .B filter
73 component causes the domain to apply uniqueness constraints only to
74 matching objects.  e.g.
75 .B ldap:///?cn?sub?(sn=e*)
76 would require unique
77 .B cn
78 attributes for all objects in the subtree of the back-end database whose
79 .B sn
80 starts with an e.
81
82 It is possible to assert uniqueness upon all non-operational
83 attributes except those listed by prepending the keyword
84 .B ignore
85 If not configured, all non-operational (eg, system) attributes must be
86 unique. Note that the
87 .B attributes
88 list of an
89 .B ignore
90 URI should generally contain the
91 .BR objectClass ,
92 .BR dc ,
93 .B ou
94 and
95 .B o
96 attributes, as these will generally not be unique, nor are they operational
97 attributes.
98
99 It is possible to set strict checking for the uniqueness domain by
100 prepending the keyword
101 .B strict.
102 By default, uniqueness is not enforced
103 for null values. Enabling
104 .B strict
105 mode extends the concept of uniqueness to include null values, such
106 that only one attribute within a subtree will be allowed to have a
107 null value.  Strictness applies to all URIs within a uniqueness
108 domain, but some domains may be strict while others are not.
109 .LP
110 It is not possible to set both URIs and legacy slapo-unique configuration parameters simultaneously.  In general, the legacy configuration options control pieces of a single unfiltered subtree domain.
111 .TP
112 .B unique_base <basedn>
113 This legacy configuration parameter should be converted to the
114 .B base dn
115 component of the above
116 .B unique_uri
117 style of parameter.
118 .TP
119 .B unique_ignore <attribute...>
120 This legacy configuration parameter should be converted to a
121 .B unique_uri
122 parameter with
123 .B ignore
124 keyword as described above.
125 .TP
126 .B unique_attributes <attribute...>
127 This legacy configuration parameter should be converted to a
128 .B unique_uri
129 parameter, as described above.
130 .TP
131 .B unique_strict
132 This legacy configuration parameter should be converted to a
133 .B strict
134 keyword prepended to a
135 .B unique_uri
136 parameter, as described above.
137 .SH CAVEATS
138 .LP
139 .B unique_uri
140 cannot be used with the old-style of configuration, and vice versa.
141 .B unique_uri
142 can implement everything the older system can do, however.
143 .LP
144 Typical attributes for the
145 .B ignore ldap:///...
146 URIs are intentionally not hardcoded into the overlay to allow for
147 maximum flexibility in meeting site-specific requirements.
148 .SH FILES
149 .TP
150 ETCDIR/slapd.conf
151 default slapd configuration file
152 .SH SEE ALSO
153 .BR slapd.conf (5).