Hi Sergiu, On Sun, Oct 26, 2008 at 4:12 PM, Sergiu Dumitriu <[EMAIL PROTECTED]> wrote:
> Paul Libbrecht wrote: > > Why can't this all be in the session? > > All this is session specific anyways. Or? > > I believe the nonce is very similar to the sessionId which is stored and > > exchanged up-and-down with every request just as the digest auth. > > > > Because the session is not always shared between the browser and the > WebDAV client. And to get it in the DAV session, you have to send the > password somehow. > > The nonce is not the same with the sessionID. nONCE means that it is > used once, for only one request. It should be different for the next > request. As I observed with DAVExplorer, nonce is actually used throughout a session. Upon login, the server generates a nonce value as bellow : nonce = MD5(client_ip,time_stamp,private_key); // source : [Adding Digest Access Authentication to a WebDAV Server<http://www.cs.columbia.edu/%7Ehgs/teaching/ais/1998/projects/WebDAV/report.html> ] and sends this to the client. The client in turn uses this nonce value when generating the RESPONSE hash in all following requests. Thanks. - Asiri > > > > > > > > Le 26-oct.-08 à 03:50, Sergiu Dumitriu a écrit : > > > >> Asiri Rathnayake wrote: > >>> Hi Devs, > >>> > >>> I have hit a wall trying to implement Digest Access Authentication > >>> for the > >>> xwiki-webdav module. I'll try to be clear as much as possible. > >>> > >>> *+ INTRO* : Digest Access Authentication is used to avoid the > >>> transmission > >>> of clear text passwords over http for authenticating users. Instead > >>> of the > >>> clear text password, following hash (RESPONSE) will be transferred to > >>> the > >>> server by client, > >>> > >>> HA1 = MD5(username,password,realm) > >>> HA2 = MD5(method,digestURI) > >>> RESPONSE = MD5(HA1,nonce,HA2) > >>> > >>> Here the 'nonce' is some weird string token generated by the server > >>> for that > >>> particular client for a particular session. So the RESPONSE instead > >>> of the > >>> clear text password will be transferred to the server. For more > specific > >>> information about Digest Authentication, you may refer [1]. > >>> > >>> *+ PROBLEM* : Simply put, the way xwiki handles authentication > >>> requires the > >>> presentation of a clear text password by the client (which is not > >>> available > >>> with Digest Authentication scheme). What we have with xwiki (on the > >>> server > >>> side) is a crypted version of the original password. > >>> > >>> One possible solution to overcome this limitation is to store the HA1 > >>> value > >>> in our databases (is this possible ?). This is one of the limitations > of > >>> Digest Authentication scheme as mentioned in [1] : > >>> > >>> *"There is an important problem with implementing Digest access > >>> authentication. This is the requirement that either cleartext > >>> passwords or > >>> the HA1 hashes must be known in order to perform client response > >>> validation" > >>> * > >>> > >>> I would like to know what other developers have to say about this > >>> issue, and > >>> possible workarounds ... [?] > >>> > >>> Thanks. > >>> > >>> - Asiri > >>> > >>> [1] http://en.wikipedia.org/wiki/Digest_access_authentication > >> > >> Hi devs, > >> > >> This is a serious roadblock, and it cannot be easily solved. > >> > >> The main idea is that whatever data we keep in the database of the wiki, > >> it is accessible. Storing HA1 is as safe as storing a plaintext > >> password. Anybody with edit access and a bit of cracking/hacking > >> experience can get it out of the wiki. So I'm a strong -1 against > >> storing any unencrypted login information. > >> > >> I can't see any simple and clean mechanism to work around this problem. > >> There's no way we can validate the correct password. Some hacks we could > >> use in the worst case are: > >> > >> 1. Something like Niels suggested, authenticate in a third service over > >> SSL and use a generated token as the password. This is cumbersome for > >> many reasons, like: this token should expire often, for security > >> reasons; the need for a certificate + HTTPS configuration; adding a new > >> service; increased complexity; and many others. > >> > >> 2. Something similar to what is done for the current password. I don't > >> go into further details now since I'm sleepy, and it's too ugly to be > >> taken into account seriously. > >> > >> 3. Use Basic auth, but force https to be used. This means that we must > >> document (or link to external documentation) how to setup https on > >> various containers. > >> > >> 4. Find the time to implement crypt password storing mechanism. This > >> means that the password can also be decrypted, unlike the current hash > >> mechanism. This involves more effort, and is less secure than what we > >> have now (I'd like that the user's password can never be retrieved, not > >> even by the wiki and server owner). > >> > >> 5. Try to find other ways to authenticate. > >> > >> > >> I always try to approach the problem from a different angle, since many > >> times a difficult technical question is actually the dead end of a wrong > >> solution to a different problem. So, why do you need to implement Digest > >> authentication? What is your scenario? What is the goal? Do you have a > >> link to the WebDAV authentication specification? Can we use cookies > >> instead? Can we use OpenID authentication? > > > -- > Sergiu Dumitriu > http://purl.org/net/sergiu/ > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

