[Zope-CMF] PAS: authenticateCredentials: check lowercase too?

Tres Seaver tseaver at palladion.com
Thu Dec 27 19:52:23 UTC 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

(PAS stuff is OT for the CMF list.  Please follow up on zope-pas at zope.org
or the equivalent Gmane newsgroup).

On 12/27/2012 01:22 PM, Maurits van Rees wrote:
> Hi,
> 
> In Products/PluggableAuthService/plugins/ZODBUserManager.py I would
> like to check the lower case version of the passed login name as
> well:
> 
> def authenticateCredentials( self, credentials ): login =
> credentials.get( 'login' ) password = credentials.get( 'password' ) if
> login is None or password is None: return None userid =
> self._login_to_userid.get(login) if userid is None: # HERE STARTS THE
> EXTRA CODE: login = login.lower() userid =
> self._login_to_userid.get(login) if userid: # Update the login in the
> credentials, as they might # be used elsewhere. credentials['login'] =
> login else: return None # HERE ENDS THE EXTRA CODE. reference =
> self._user_passwords.get(userid) if reference is None: return None ...
> # etcetera
> 
> 
> For example, in the case of Plone, we may be using the email address
> as login name.  Some people use a mix of upper and lower case in their
>  email address, for example "Maurits at VanRees.Org".  When logging in
>  fails, they start to wonder whether they have remembered their
> password wrongly or if they have entered their email address in lower
> case or if they have capitalized it differently.  The result: a
> support call.
> 
> I have seen this happen several times for a customer and have heard
> the same from one other person on the plone core developers list.
> 
> It would help if PAS would first check with the exact spelling given
> and if that fails, try the completely lowercase version.  Note that
> this should be safe: if this somehow gets a different user id than
> intended, the password should still match that user.
> 
> I have used the above code in a patch in the collective.emaillogin 
> add-on in Plone 3 for a long time now and have not had complaints
> since. Of course it has more patches that make sure that the login
> name is actually lowercased before adding a new user, but that is
> outside the scope of this mail.
> 
> I think the above code would be fine to put in core PAS.  It is safe
> as far as I can tell and the extra processing time required when a
> login fails should be small.  Is anyone against that?

I would prefer to have the case insensitivity be a configurable option of
the plugin (in which case it would always lowercase the login when the
user was created or updates, as well as before comparing).


> By the way, I remember having seen somewhere in PAS or PlonePAS or 
> somewhere else a while ago a class that had a boolean attribute called
>  something like '__case_insensitive', which was False by default.
> That was intended to do something similar, but it did not work when I
> tried using it.  This is all very vague and I cannot find it back.
> Maybe it was simply removed.  But does this ring a bell for anyone?

I don't remember such an attribute.



Tres.
- -- 
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with undefined - http://www.enigmail.net/

iEYEARECAAYFAlDcpvcACgkQ+gerLs4ltQ53LwCfeaAllOQ08ETjIIy4FefEWHWF
mAYAn2vqKQ3O33WAM1KYWVVmYLW4+6iU
=Bi/3
-----END PGP SIGNATURE-----



More information about the Zope-CMF mailing list