Re: Unfinished business: password policy and VLV

Howard Chu <[email protected]>
Newsgroups gmane.ietf.ldapext
Message-ID <[email protected]>
Michael Ströder wrote:
> Howard Chu wrote:
>> Howard Chu wrote:
>>> And also an extended op "ExternalBind" for allowing external
>>> authentication providers to interact with the existing policy. I.e., this
>>> op will supply an LDAP username and a success/fail code to the directory
>>> server, and the server will execute the policy mechanisms accordingly.
>>> (E.g., if a Fail code is supplied then the failure time and any relevant
>>> lockouts are recorded.)
>>
>> Thinking about this some more, I don't think a new exop is the right
>> approach. Instead, I would use a new ppolicy control which can be
>> attached to a Search request. It would only be valid for searches of
>> Base scope. It would result in a ppolicy response control being attached
>> to the search entry that fulfills the search request. This would allow
>> an external authentication mechanism to discover if the account is
>> already locked, password is expired, etc. The response control would
>> also include an opaque cookie.
>
> Thinking in this direction a bit further I wonder how requests with Proxy
> Authz control attached should be handled in case of (temporarily) locked accounts.
>
>> We would also define a new ppolicy control which can be attached to a
>> Simple Bind request. This control would carry the cookie from the
>> previous response control, and a boolean success/fail value. If the
>> cookie is valid, the credentials of the Bind request will be ignored and
>> the boolean success/fail code is used to update the ppolicy state for
>> the specified user.
>
> What's the use-case for that?

I have already dropped this line of thought, so it's a moot point now.

I was thinking of SASL, Kerberos, and Samba ("external authentication 
agents"), which each can use LDAP as an authentication store, but perform the 
actual credential verification themselves. I wanted the ppolicy control 
attached to the Search request, to indicate that an authentication was being 
started. And I wanted the control to be attached to a Bind request, to allow 
the external agent to tell LDAP what the outcome of the authentication attempt 
was. This way the directory server can continue to maintain all the policy 
state thru the Bind mechanism. The external agent cannot simply issue an LDAP 
Simple Bind because they won't have the plaintext credentials on hand. I 
wanted a cookie in the control to authenticate that this Bind was a legitimate 
followon to the earlier Search, to prevent arbitrary clients from sending 
bogus "Bind/Failed" requests to the directory and thus effortlessly locking 
out any user of their choice.

But the existing ppolicy spec already allows external authentication, by 
virtue of the Compare request. After an external agent retrieves the secret 
and verifies the client, it just needs to do a Compare request to update the 
directory's policy state. Since it has already retrieved the actual 
credentials, it can do a Compare with the current value to indicate a 
successful authentication, and a Compare with some different value to indicate 
a failed authentication. And the issue of bogus requests is mitigated by using 
access controls to restrict who can do search/compare on the authentication 
secret.
-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.