Sponsoring a canon_user plugin for LDAP lookup

Torsten Schlabach tschlabach at gmx.net
Fri Jan 12 18:49:53 EST 2007


 > And now just to doublecheck - you actually want just the simple name
 > returned, not the full DN. Correct?

Sure. As this is what Cyrus IMAPd expects.

Without the canon_user, you'd type

AUTH id000012

You wouldn't type

AUTH uid=id000012,ou=user,ou=...

It's getting 1:00 a.m. now where I am. So I hope you got all the info 
and I can go to bed now. I'd really be thankful for you help with that. 
Any probably many others as well.

Regards,
Torsten


Howard Chu schrieb:
> Torsten Schlabach wrote:
> 
>> As long as it serves the purpose. Just recall, please ...
>>
>> If you rewrite some at else.com to id000012 then you need to make sure 
>> that Cyrus IMAPd sees id000012 as it is going to use that as the name 
>> for the mailbox.
>>
>> I need to say ... I am *not* sure about the sequence in which auxprop 
>> and canon_user are called. But isn't it that Cyrus IMAPd will take in 
>> a username, run it through canon_user (in case there is any), then run 
>> the rewritten username through auxprop to retrieve a password and 
>> compare the one that the user inputted to that.
>>
>> So in pseudo-code this would be:
>>
>> username = what the user entered as username
>> password = what the user entered as password
>>
>> username = canon_user(username)
>>
>> correct_password = auxprop(username)
>>
>> if correct_password == password
>>
>>   look for mailbox username
>>
>> endif
>>
>> If I was right with that assumption, than you could do anyting in an 
>> auxprop plugin to find the proper password (what you can indeed do 
>> today already using that authz rewrite rules) but you cannot change 
>> the value of username in the auxprop plugin. Isn't this why there are 
>> two different hooks, i.e. canon_user and auxprop?
> 
> 
> Correct. (Yes, our emails crossed.)
> 
> The ldapdb_connect() function currently in ldapdb.c can serve both 
> purposes, I just need to write a canon_user_server wrapper around it to 
> do the right thing. The other refinement would be to save the LDAP 
> connection handle that canon_user uses, so that auxprop doesn't need to 
> open a new one.
> 
> And now just to doublecheck - you actually want just the simple name 
> returned, not the full DN. Correct?
> 
>>
>> On the other hand, as I said in my initial posting, I think the actual 
>> canon_user plugin would be not too complicated as it would just have 
>> to do a single lookup, i.e. use the given username in an LDAP url to 
>> find an object and return another attribute of that object as the 
>> canonicalized username. E.g. search for mailAlias=someone at else.com and 
>> return the uid attribute of the matched object.
>>


More information about the Cyrus-sasl mailing list