LDAP Lightweight Directory Access Protocol Standards LDAP
rfc4876
Schéma de profile de configuration pour les agents basés sur LDAP
preferredServerList Liste d'adresses et ports de serveurs que le DUA doit contacter, dans l'ordre.
defaultServerList Doit être examiné seulement si preferredServerList n'est pas fournis.
defaultSearchBase Quand un DUA doit requêter le DSA pour des informations, cet attribut fournis la base de recherche.
authenticationMethod Liste par ordre de préférence de méthodes bind. (peut être none, simple, sasl et tls)
authMethod = method *(";" method)
method = none / simple / sasl / tls
none = "none"
simple = "simple"
sasl = "sasl/" saslmech [ ":" sasloption ]
sasloption = "auth-conf" / "auth-int"
tls = "tls:" (none / simple / sasl)
saslmech = SASL mechanism name
credentialLevel Type de crédentials que le DUA doit utiliser en contactant le DSA (anonymous, proxy, self)
credentialLevel = level *(SP level)
level = self / proxy / anonymous
self = "self"
proxy = "proxy"
anonymous = "anonymous"
serviceSearchDescriptor Définis comment et où un DUA devrait rechercher les informations pour un service particulier.
serviceSearchList = serviceID ":" serviceSearchDesc *(";" serviceSearchDesc)
serviceSearchDesc = confReferral / searchDescriptor
searchDescriptor = [base] ["?" [scopeSyntax] [" ?" [filter]]]
confReferral = "ref :" distinguishedName
base = distinguishedName / relativeBaseName
relativeBaseName = 1*(relativeDistinguishedName ",")
filter = UTF-8 encoded string
Exemple
defaultSearchBase: dc=mycompany,dc=comserviceSearchDescriptor: email:ou=people,ou=org1,?
one;ou=contractor,?one;
ref:cn=profile,dc=mycompany,dc=com
Dans cet exemple, le DUA doit rechercher dans "ou=people,ou=org1,dc=mycompany,dc=com" en premier. Ensuite il devrait rechercher dans "ou=contractor,dc=mycompany,dc=com", et finalement il devrait rechercher dans d'autres emplacement comme spécifié dans le profile décris à "cn=profile,dc=mycompany,dc=com"
attributeMap Mapping d'attributs pour toutes les opérations LDAP effectuées pour un service qui a une entrée attributeMap. Parce que le mapping est spécifique à chaque service dans le DUA, un serviceID est requis dans la syntaxe.
attributeMap = serviceID ":" origAttribute "=" attributes
origAttribute = attribute
attributes = wattribute *( SP wattribute )
wattribute = WSP newAttribute WSP
newAttribute = descr / "*NULL*"
attribute = descr
exemple: supposons qu'un DUA agis comme un service mail. Par défaut, le service email utilise "mail", "cn" et "sn" pour découvrir les adresses emails. Cependant, le service email a été déployé dans un environnement qui utilise "employeeName" au lieu de "cn". également, au lieu d'utiliser "mail", l'attribut utilisé est "email":
attributeMap: email:cn=employeeName
attributeMap: email:mail=email
searchTimeLimit Définis le temps maximum en secondes que le DUA devrait permettre pour une requête search.
bindTimeLimit Définis le temps maximum en secondes que le DUA devrait permettre pour les opérations bind.
followReferrals à TRUE, le DUA devrait suivre les référants. a FALSE, ne doit pas les suivre.
dereferenceAliases à TRUE, le DUA devrait permettre le déréférencement d'alias. A FALSE, ne doit pas déréférencer les alias.
profileTTL Définis la fréquence à laquelle le DUA devrait recharger et se reconfigurer.
objectclassMap Un DUA peut effectuer un mappage de classe d'objet pour toutes les opérations LDAP effectuées pour un service
objectclassMap = serviceID ":" origObjectclass "=" objectclass
origObjectclass = objectclass
objectclass = keystring
exemple: supposons qu'un DUA agit comme un service mail. Par défaut le service "email" utilise "mail", "cn" et "sn" pour découvrir les adresses email dans les entrées créée en utilisant la classe d'objet inetOrgPerson. Cependant, le service mail a été déployé dans un environnment qui utilise les entrées crééer en utilisant la classe d'objet "employee". Dans ce cas, "cn" peut être mappé à "employeeName", et "inetOrgPerson" peut être mappé à "employee":
attributeMap: email:cn=employeeName
objectclassMap: email:inetOrgPerson=employee
defaultSearchScope Fournis le scope de recherche pour le DUA. Peut être écrasé par serviceSearchDescriptor
scopeSyntax = "base" / "one" / "sub"
serviceAuthenticationMethod Définis par ordre de préférence de méthodes bind à utiliser pour contacter un DSA pour un service particulier.
svAuthMethod = serviceID ":" method *(";" method)
serviceCredentialLevel Définis quel types de crédentials le DUA devrait utiliser en contacta,t le DSA pour un service particulier.
svCredentialLevel = serviceID ":" level *(SP level)
Exemple
serviceCredentialLevel: email:proxy anonymousSchéma
( 1.3.6.1.4.1.11.1.3.1.1.0 NAME 'defaultServerList' DESC 'List of default servers' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.1 NAME 'defaultSearchBase' DESC 'Default base for searches' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.2 NAME 'preferredServerList' DESC 'List of preferred servers' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.3 NAME 'searchTimeLimit' DESC 'Maximum time an agent or service allows for a search to complete' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.4 NAME 'bindTimeLimit' DESC 'Maximum time an agent or service allows for a bind operation to complete' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.5 NAME 'followReferrals' DESC 'An agent or service does or should follow referrals' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.6 NAME 'authenticationMethod' DESC 'Identifies the types of authentication methods either used, required, or provided by a service or peer' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.7 NAME 'profileTTL' DESC 'Time to live, in seconds, before a profile is considered stale' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.9 NAME 'attributeMap' DESC 'Attribute mappings used, required, or supported by an agent or service' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
( 1.3.6.1.4.1.11.1.3.1.1.10 NAME 'credentialLevel' DESC 'Identifies type of credentials either used, required, or supported by an agent or service' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.11 NAME 'objectclassMap' DESC 'Object class mappings used, required, or supported by an agent or service' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
( 1.3.6.1.4.1.11.1.3.1.1.12 NAME 'defaultSearchScope' DESC 'Default scope used when performing a search' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.1.13 NAME 'serviceCredentialLevel' DESC 'Specifies the type of credentials either used, required, or supported by a specific service' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
( 1.3.6.1.4.1.11.1.3.1.1.14 NAME 'serviceSearchDescriptor' DESC 'Specifies search descriptors required, used, or supported by a particular service or agent' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
( 1.3.6.1.4.1.11.1.3.1.1.15 NAME 'serviceAuthenticationMethod' DESC 'Specifies types authentication methods either used, required, or supported by a particular service' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
( 1.3.6.1.4.1.11.1.3.1.1.16 NAME 'dereferenceAliases' DESC 'Specifies if a service or agent either requires, supports, or uses dereferencing of aliases.' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
( 1.3.6.1.4.1.11.1.3.1.2.5 NAME 'DUAConfigProfile'
SUP top STRUCTURAL
DESC 'Abstraction of a base configuration for a DUA'
MUST ( cn )
MAY ( defaultServerList $ preferredServerList $
defaultSearchBase $ defaultSearchScope $
searchTimeLimit $ bindTimeLimit $
credentialLevel $ authenticationMethod $
followReferrals $ dereferenceAliases $
serviceSearchDescriptor $ serviceCredentialLevel $
serviceAuthenticationMethod $ objectclassMap $
attributeMap $ profileTTL ) )
Exemples
Dans cette section, on décris un DUA fictif qui fournis un service appelé "email". Ce service est configuré de manière à trouver les utilisateurs avec un adresse email avec la classe d'objet inetOrgPerson, Le nom dans "cn" et le mail dans "mail"Le filtre de recherche par défaut pour le service email est "(objectclass=inetOrgPerson)". Le service email définis également que quand il effectue une découverte nom/adresse, il va construire le filtre avec:
(&(filter)(cn=name string))
ou, si "cn" a été mappé vers d'autres attributs:
(&(filter)(attr1=token1)(attr2=token2)...)
L'exemple ci-dessous montre comment le service email construit sa recherche, basé sur un profile définis. Dans tous les cas, defaultSearchBase est "o=airius.com", et defaultSearchScope n'est pas définis.
exemple 1:
serviceSearchDescriptor:email:"ou=marketing,"
base: ou=marketing,o=airius.com
scope: sub
filter: (&(objectclass=inetOrgPerson)(cn=Jane Hernandez))
exemple 2:
serviceSearchDescriptor:email:"ou=marketing,"?one?(&(objectclass=inetOrgPerson)(c=us))
attributeMap:email:cn=2.5.4.42 sn
Note: 2.5.4.42 est l'OID qui représente "givenName"
Dans cet exemple, le service email effectue une recherche name string comme décris plus haut pour générer un filtre de recherche complexe. L'exemple suivant résulte d'une recherche:
base: ou=marketing,o=airius.com
scope: one
filter: (&(&(objectclass=inetOrgPerson)(c=us))(2.5.4.42=Jane)(sn=Hernandez))
Exemple 3:
serviceSearchDescriptor: email:ou=marketing,"?base
attributeMap:email:cn=name
Cet exemple est invalide parce que soit les guillemets devraient être échappé, soit il devrait y avoir des "
exemple 4:
serviceSearchDescriptor:email:ou=\\mar\\\\keting,\\"?base
attributeMap:email:cn=name
base:ou=\\mar\\keting,"
scope:base
filter: (&(objectclass=inetOrgPerson)(name=Jane Hernandez))
exemple 5:
serviceSearchDescriptor:email:ou="marketing",o=supercom
Cet exemple est invalide parce que les " doivent être échappés
Exemple 6:
serviceSearchDescriptor:email:??(&(objectclass=person)(ou=Org1\\\\(temporary\\\\)))
base: o=airius.com
scope: sub
filter: (&((&(objectclass=person)(ou=Org1\\(Temporary\\)))(cn=Jane Henderson)))
Exemple 7:
serviceSearchDescriptor : email :"ou=funny ?org,"
base: ou=funny?org,o=airius.com
scope: sub
filter: (&(objectclass=inetOrgPerson)(cn=Jane Hernandez))