+1 On 5/16/13 9:20 AM, "Prasanna Santhanam" <t...@apache.org> wrote:
>On Thu, May 16, 2013 at 04:03:14PM +0200, Ove Ewerlid wrote: >> I vote -1 for enabling plain text authentication allowing auth >> directly against hashes. I'm not clear if this functionality exists >> in ACS4.0, I would assume not. >> >> The API breakage reported was in createUser, where the ability to >> pass in a hash has value. Think migration scenarios where only the >> hash is known. >> >> createUser, createAccount and createDomain have, in v41, been >> enhanced with parameters to allow specifying the UUID directly to >> accommodate for external provisioning (or migration from older >> systems). The ability to pass in existing hashes has value in these >> scenarios. There is also value in being able to pass in a plain text >> password and have it encrypted depending on how the external account >> provisioning is done. > >Chip, Ove, > >There's two parts to this process - the auth and the encode. > >In auth - existing tenants of your system send through their passwd >over the wire that is compared with the password in your cloudstack >database as follows: > >Order of authenticators >SHA256 > MD5 > PlainText > >For a moment assume that Alice (existing user) sends only plaintext >passwords as she entered in the system when her account was created: >Her password in the db is say alicesecretsauce and she passes >alicesecretesauce over-the-wire. > >CloudStack will do the following while authenticating Alice: >1. Is SHA256(alicesecretsauce) == CloudStack_DB(alicesecretesauce) >2. Is MD5(alicesecretsauce) == CloudStack_DB(alicesecretesauce) >3. Is alicesecretsauce == CloudStack_DB(alicesecretesauce) > >In your case since the DB contains the MD5 of alicesecretsauce against >Alice's account the second comparison returns and authenticates Alice >successfully after SHA256 fails. > >Now let's say you upgrade to 4.1 with the same order of authenticators >and bug fixed as sent in the patch by Kishan: > >Let's look at Alice's case again: >She sends alicesecretsauce over-the-wire - and the same process >works out for her and she is able to login. > >Now let's say Bob is a new account that is created in your system >post-upgrade to 4.1: > >When Bob creates his account, his password is encoded using the SHA256 >scheme since that's the first one in the configured list. So all new >accounts now have a SHA256 value in the DB against them. > >When Bob attempts to login the first comparison ie >SHA256(bobsecretsauce) == CloudStack_DB(bobsecretsauce) and he too is >allowed to login. > >Coming to your scenario where you want to hash passwords which are >coming over-the-wire: The scenario before upgrade should be clear so I >won't explain it here. > >Post-upgrade: >Alice sends MD5(alicesecretsauce) as per your provisoner- > >1. Is SHA256(MD5(alicesecretsauce)) == CloudStack_DB(alicesecretesauce) >2. Is MD5(MD5(alicesecretsauce)) == CloudStack_DB(alicesecretesauce) >3. Is MD5(alicesecretsauce) == CloudStack_DB(alicesecretesauce) > >So she is authenticated using the plaintext authenticator now in 3. >Without that her auth fails. This is what Kishan is asking that you >enable. > >Bob on the other hand sends in MD5(bobsecretsauce) and his account was >saved in the DB when your provisioner created his account with >passwd: SHA256(MD5(secretsauce)) thereby for him the 1st >authenticator works and helps him login to cloudstack. > >If I were you - I'd migrate everything with the plaintext >authenticator enabled and then switch over to an auth mechanism that >suits my security needs and my external provisioner. > >For those moving from 2.2.x, 3.0.x, 4.0 to 4.1: >1. We remove the incorrect auth mechanism and put in the right fix of >encoding at the server and not doing any UI magic. >2. We correct the API docs and other docs to indicate the user to send >in plaintext so clients can adjust to the change. >3. We describe this migration situation as Ove encountered and how it >can be corrected without any change using the plaintext authenticator. > >I hope that this is fixed right and at the same time it doesn't break >backwards compatibility which is the solution that Kishan is proposing >and I'd recommend too. > >> Seems a new parameter is needed in createUser >> to allow both while retaining backwards compat. Perhaps a parameter >> specifying the type of hash or if the password is plain text that >> needs to be encrypted. If this parameter is not present, the >> assumption should be that the password is an MD5 hash, the old >> behavior. >> >> /Ove >> >> On 05/16/2013 03:23 PM, Kishan Kavala wrote: >> > >> > >> >>-----Original Message----- >> >>From: Ove Ewerlid [mailto:ove.ewer...@oracle.com] >> >>Sent: Thursday, 16 May 2013 6:25 PM >> >>To: dev@cloudstack.apache.org >> >>Subject: Re: Review Request: Added PlainTextAuthenticator >> >> >> >>On 05/16/2013 02:16 PM, Kishan Kavala wrote: >> >>>Ove, >> >>> Plain text authenticator will allow logging using the hash >>value. Or else, >> >>clients sending MD5 hash will fail to login. This is primarily for >>backward >> >>compatibility. >> >>>To avoid logging in using has value itself, plain text authenticator >>can be >> >>removed from auth adapter list, provided the client sends plain text >>instead >> >>of hash. >> >> >> >>I'm not seeing the plain-text authenticator in ACS4.0 list of >>authenticators >> >>(components.xml). MD5 and LDAP are listed. Help me out, where in >>ACS4.0 is >> >>the code to allow login using the password hash itself? >> >> >> >>/Ove >> > >> > >> >I checked 4.0 code. plain-text authenticator is not in components.xml >>but it is part of the code. >> > >> >>>plugins/user-authenticators/plain-text/src/com/cloud/server/auth/PlainTe >>>xtUserAuthenticator.java >> > >> >It does MD5 has compare instead of plain text (don't know why), so it >>may not serve u'r purpose even after adding it to components.xml >> > >> >> >> >> >> >>>~kishan >> >>> >> >>>>-----Original Message----- >> >>>>From: Ove Ewerlid [mailto:ove.ewer...@oracle.com] >> >>>>Sent: Thursday, 16 May 2013 5:33 PM >> >>>>To: dev@cloudstack.apache.org; Kishan Kavala >> >>>>Subject: Re: Review Request: Added PlainTextAuthenticator >> >>>> >> >>>>Hi Kishan! >> >>>> >> >>>>Did you verify that adding the plain text authenticator will not >> >>>>allow login using the hash value itself? >> >>>> >> >>>> >> >>>>from AccountManagerImpl.java; >> >>>> ... getUserAccount ... >> >>>> ... >> >>>> boolean authenticated = false; >> >>>> for(UserAuthenticator authenticator : >>_userAuthenticators) { >> >>>> if (authenticator.authenticate(username, password, >> >>>>domainId, requestParameters)) { >> >>>> authenticated = true; >> >>>> break; >> >>>> } >> >>>> } >> >>>> ... >> >>>> >> >>>>/Ove >> >>>> >> >>>>On 05/16/2013 12:39 PM, Kishan Kavala wrote: >> >>>>> >> >>>>>----------------------------------------------------------- >> >>>>>This is an automatically generated e-mail. To reply, visit: >> >>>>>https://reviews.apache.org/r/11194/ >> >>>>>----------------------------------------------------------- >> >>>>> >> >>>>>Review request for cloudstack and Chip Childers. >> >>>>> >> >>>>> >> >>>>>Summary (updated) >> >>>>>----------------- >> >>>>> >> >>>>>Added PlainTextAuthenticator >> >>>>> >> >>>>> >> >>>>>Description (updated) >> >>>>>------- >> >>>>> >> >>>>>Added PlainTextAuthenticator for backward compatibility. Removed >> >>MD5 >> >>>>auth from PlainTextAuthenticator. It just does plain text compare. >> >>>>> >> >>>>> >> >>>>>This addresses bug CLOUDSTACK-2516. >> >>>>> >> >>>>> >> >>>>>Diffs (updated) >> >>>>>----- >> >>>>> >> >>>>> client/tomcatconf/applicationContext.xml.in 849c0bc >> >>>>> client/tomcatconf/componentContext.xml.in ecd4a11 >> >>>>> plugins/user-authenticators/plain- >> >>>>text/src/com/cloud/server/auth/PlainTextUserAuthenticator.java >> >>>>52e7cb3 >> >>>>> >> >>>>>Diff: https://reviews.apache.org/r/11194/diff/ >> >>>>> >> >>>>> >> >>>>>Testing (updated) >> >>>>>------- >> >>>>> >> >>>>>Tested login with password sent as both MD5 hash and plaintext >> >>>>> >> >>>>> >> >>>>>Thanks, >> >>>>> >> >>>>>Kishan Kavala >> >>>>> >> >>>>> >> >>>> >> >>>> >> >>>>-- >> >>>>Ove Everlid >> >>>>System Administrator / Architect / SDN & Linux hacker >> >>>>Mobile: +46706662363 >> >>>>Office: +4618656913 (note EMEA Time Zone) >> >> >> >> >> >>-- >> >>Ove Everlid >> >>System Administrator / Architect / SDN & Linux hacker >> >>Mobile: +46706662363 >> >>Office: +4618656913 (note EMEA Time Zone) >> >> >> -- >> Ove Everlid >> System Administrator / Architect / SDN & Linux hacker >> Mobile: +46706662363 >> Office: +4618656913 (note EMEA Time Zone) > >-- >Prasanna., > >------------------------ >Powered by BigRock.com >