-- 
Ludovic Poitou
http://ludopoitou.com


From: Emmanuel Lécharny <[email protected]>
Reply: Apache Directory Developers List <[email protected]>>
Date: 10 Mar 2015 at 09:23:04
To: Apache Directory Developers List <[email protected]>>
Subject:  PasswordPolicy handling  

Hi guys, 

this morning, we have had a quick discussion with Kiran that I will 
retranscript here. Let me give you a bit of feedback first. 

Yesterday, I was working on Studio, and more specifically on the 
ApacheDS configuration PasswordPolicy page. I just wanted to add some 
missing elements (a couple, pwdMinDelay and pwdMaxDelay). At some point, 
I wondered how we could possibly associate a PP to an entry, assuming we 
may define more than one PP, beside the default one. 
Then I read the thread on the user list, where someone is having trouvle 
defining a specific PP, and leverage it. The answer was to add a 
pwdPolicySubEntry DN in each entry that has to use this added PP. Here 
is an exemple : 

dn: uid=jsmith,ou=users,ou=int,o=company 
uid: jsmith 
cn: jsmith 
... 
pwdPolicySubEntry: 
ads-pwdId=internalUsers,ou=passwordPolicies,ads-interceptorId=authenticationInterceptor,ou=interceptors,adsdirectoryServiceId=default,ou=config
 


The pwdPolicySubEntry attribute should be read-only, and thus should not be set 
by administrators.

It should be set by the server to indicate which PP is enforced for a specific 
user.







No need to say that it's extremelly heavy when you have thousands of users. 
I’ve yet to see a customer who wants to define a different password policy for 
each user.



Now, let me relate what we discussed with Kiran : 

The RFC draft states that PP must be define in subentry : 

"A password policy is defined for a particular subtree of the DIT by adding to 
an LDAP subentry whose immediate superior is the root of the subtree" 

By all means, it's equivalent to what we have for Collective Attributes, 
Subschema Subentries, Access Control, Triggers. The DIT area impacted by such a 
subentry would be defined by the subentry SubtreeSpecification, and each entry 
below the subentry's parent would be evaluated accordingly to the 
SubtreeSpecification. The pwdPolicySubEntry attribute would be added on the fly 
when the entry is requested, not added into the entry itself. 
Exactly.



This would be a huge chenge is the way we currently handle PP, as we do it 
through the cn=config partition. 

My perception is that PP should not be stored in the configuration at all, but 
Kiran perception is that would make it quite complicated to administrate the 
server, especially when most of the users would have only one PP. 

I agree with Kiran on this point. 

Now, what are the possible path for a better handling of PPs ? Here are a few 
suggestions : 
- the default PP should remain in the configuration. It will be associated with 
the rootDSE, and apply to the whole DIT 
- thid default PP could be disabled, if needed 
- regarding new PP, we have two options : 
- we keep declaring them in the confing, but they are translated to a subentry 
at startup (we have to add a DN to the PP in config) 
- we remove the PP declaration in the config 
(I personally find the first approach more appealing, as it allows users to 
administrate the config globally, although it makes it more complex from the 
code pov, as we have to update teh config when we add a new PP as a subentry. 
That means the config generates a subentry, and updating the subentry update 
the config. Not exactly simple...). 
- we most certainly have to define a new administrative role for PP, and handle 
subentries and teh way they are applied. That means we most certainly have to 
create a new interceptor 


Lot of works, for sure. 

Thoughts ? 


OpenDJ supports both global PP that are defined as part of the configuration, 
and custom password policies that are defined in the DIT as SubEntries, and 
assigned to specific users directly, or through CollectiveAttributes.

We have a specific operational attribute that one can set to assign a password 
policy to a user (ds-pwp-password-policy-dn).

The advantage of the custom password policies part of the DIT is that they are 
replicated and thus are guaranteed to be identical on all servers.

In general, most customers define 1 or 2 policies.

For your proposal, I think it makes sense to translate the PP defined in the 
config into a subEntry, that is read-only.

I hope this helps.

Ludo 




Reply via email to